LoginSignup
3
3

More than 3 years have passed since last update.

iptablesのパケットフィルタの基本コマンド例

Last updated at Posted at 2019-10-02

iptablesの基本的な使用例についてのメモ。
最初に使いたくなるのはfilterテーブルだと思うのでfilterテーブルでパケット破棄するルールの設定例を紹介する。

まずはパケットのフィルタリングテーブルを表示

iptables -nvL でfilterテーブルの内容を確認できる。

# iptables -nvL
Chain INPUT (policy ACCEPT 798 packets, 69179 bytes)
 pkts bytes target     prot opt in     out     source          destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source          destination         

Chain OUTPUT (policy ACCEPT 793 packets, 70755 bytes)
 pkts bytes target     prot opt in     out     source          destination         
# 

パケットのフィルタリングを設定してみる

UDPで送信元IPアドレスが10.10.10.0/24で、送信先アドレスが20.20.20.5で、送信先ポート番号が20000で、eth0インタフェースに入ってくるパケットを、破棄する設定を入れるコマンドはこんな感じ。

# iptables -A INPUT -p udp -i eth0 -s 10.10.10.0/24 -d 20.20.20.5 --dport 20000 -j DROP
  • チェインについて
    入ってくるパケットに対しては INPUT チェインを指定。送信するパケットに対しては OUTPUT チェイン、転送するパケットに対しては FORWARD チェイン。
    -A [チェイン] でルールを追記。
    -I [チェイン] [数字] でルールを数字で指定されたインデックスに挿入。

  • プロトコルについて
    -p でプロトコル指定(tcp / udp / icmp)。

  • NWインタフェースについて
    -i でパケットが入ってくるインターフェース名を指定。

  • IPアドレス、ポート番号について
    -s で送信元IPアドレス、-dで送信先IPアドレス、--dportで送信先ポート番号の指定。

  • パケットの処理方法について
    -j でパケットの処理方法を指定(DROP(破棄) / ACCEPT(許容) / REJECT(拒否))。

再度filterテーブルを確認。

コマンド投入後にルールを再表示するとこんな感じでINPUTチェインにルールが追加されたことがわかる。

# iptables -nvL
Chain INPUT (policy ACCEPT 121 packets, 9944 bytes)
 pkts bytes target     prot opt in     out     source          destination         
    0     0 DROP       udp  --  eth0   *       10.10.10.0/24   20.20.20.5        udp dpt:20000

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source          destination         

Chain OUTPUT (policy ACCEPT 110 packets, 9142 bytes)
 pkts bytes target     prot opt in     out     source          destination         

IPパケットのフィルタリングを削除

ルールの解除は、設定投入時のコマンドに対し、-Aを-Dに変更するだけでOK。

# iptables -D INPUT -p udp -i eth0 -s 10.10.10.0/24 -d 20.20.20.5 --dport 20000 -j DROP

あるいは、インデックス指定でも削除可能。

# iptables -D INPUT 1

ルールの全消し

ルールをすべて削除したいときは -F オプション。危険なので気軽に打たないこと。

# iptables -F

もっと深くしりたい?

  • 他のオプションについて
    iptablesの全オプションはこちらのURLが参考になります。
    https://linuxjm.osdn.jp/html/iptables/man8/iptables.8.html

  • チェインやテーブルについて
    チェインには、今回紹介した INPUT / OUTPUT / FORWARD の他にも、PREROUTING / POSTROUTING などがあります。
    また、テーブルについても、今回のフィルタ(filter)テーブルの他にも nat や mangle などがあります。
    これらのチェインやテーブルは、パケットフローの中でどの部分にルールを適用するかによって使い分けることになります。

    パケットフローの仕組みは以下の図が参考になります。iptablesの領域は「Network Layer」の箇所です。
    https://commons.wikimedia.org/wiki/File:Netfilter-packet-flow.svg
3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3