iptablesの使い方メモ
概要
簡単な編集の概要は以下の通り。
- 現在の適用ルールの確認
- ルールの修正
- 保存
- iptablesの再始動
現在の適用ルールの確認
<コマンド>
iptables -L -n --line-numbers
-L |
リストアップ |
-n |
IPなどを逆引きせずにIPアドレスのまま表示 |
-v |
詳細表示 |
--line-numbers |
ルール番号の表示 |
<実行結果(例)>
Chain INPUT (policy ACCEPT 145 packets, 26201 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
2 653 763K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 169 13178 ACCEPT tcp -- * * 192.168.1.0/24 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 853 packets, 789K bytes)
num pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (0 references)
num pkts bytes target prot opt in out source destination
編集の基本(ルールの追加・変更・削除)
<コマンド>
iptables -A チェイン名 ... -j ターゲット
iptables -D チェイン名
iptables -D チェイン名 ルール番号
iptables -I チェイン名 ルール番号 ... -j ターゲット
iptables -R チェイン名 ルール番号 ... -j ターゲット
-A |
指定したチェインの末尾に新しいルールを追加します。 |
-D |
指定したチェインあるいはルールを削除します。 |
-I |
指定したチェインのルール番号の前にルールを挿入します。 |
-R |
指定したチェインのルールを置き換えます。 |
チェインとは、いくつか複数定義したルールのリスト。
先頭から順番に評価され、適用されるルールに従って最終的な処理を行います。
INPUT |
入力パケット |
FORWARD |
転送パケット |
OUTPUT |
出力パケット |
RH-Firewall-1-INPUT |
入力パケットに対するファイアウォール動作チェイン |
RHEL系OSでは初期設定で「RH-Firewall-1-INPUT」という受信(INPUT)ポート用のチェインが定義されているので、通常はこちらを編集する。
ターゲットとはルールが適用された場合に行うべき処理。
ACCEPT |
適用対象のパケットによる通信を許可します。 |
REJECT |
適用対象のパケットによる通信を却下します。この時ICMPメッセージを送信元に返します。 |
DROP |
適用対象のパケットを破棄します。応答を返しません。 |
REDIRECT |
|
ターゲットには、別に定義したチェインを指定することも可能。
初期設定でINPUTはRH-Firewall-1-INPUTにチェインされている。
(例)入出力インタフェースによる指定
iptables -A RH-Firewall-1-INPUT -i <eth#> ... -j ACCEPT
iptables -A RH-Firewall-1-INPUT -o <eth#> ... -j ACCEPT
eth#はOSのifconfigより確認できるインターフェース名
(例)プロトコルによる指定
iptables -A RH-Firewall-1-INPUT -p tcp ... -j ACCEPT
-p tcp |
TCP/IPによる指定 |
-p udp |
UDPパケットによる指定 |
-p icmp |
ICMPパケットによる指定 |
-p all |
全て |
他
-p esp |
Encap Security Payload |
-p ah |
Authentication Header |
OSで使えるプロトコル番号の定義は
/etc/protocols
で確認できる。
(例)送信元/送信先による指定
iptables -A RH-Firewall-1-INTPU -s <送信元> -d <送信先> ... -j ACCEPT
-s <送信元> |
送信元のネットワークアドレスを指定 |
-d <送信先> |
送信先のネットワークアドレスを指定 |
(例)ポート番号の指定
iptables -RH-Firewall-1-INPUT -p tcp --dport 22 -j ACCEPT
ポート番号を指定する場合は、プロトコルの指定が必須。
(例)複数ポートを範囲指定
iptables -A RH-Firewall-1-INPUT -p tcp -m multiport --dports 5901:5905 -s 192.168.109.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT |
ルールの追加 |
-p tcp |
対象のプロトコルをTCPに指定 |
-m multiport |
複数ポートをサポート |
--dports 5901:5905 |
ポート番号を5901から5905に指定 |
-s 192.168.109.0/24 |
ソースネットワークを192.168.109.0/24に指定 |
-j ACCEPT |
許可 |
新しいチェインの作成・削除
iptables -N チェイン名
iptables -Z チェイン名
-N |
新しいチェインの作成 |
-Z |
指定したチェインの削除 |
iptablesの保存
コマンドで修正した内容は、iptablesサービスを再始動すると元の設定内容に戻ってしまうため、保存する必要があります。
保存コマンド
/etc/rc.d/init.d/iptables save
あるいは
iptables-save
尚、上記コマンドにて保存されるファイルは通常
/etc/sysconfig/iptables
です。
OSインストール直後の設定を保存する場合は、このファイルを保存します。
iptablesの再始動
/etc/rc.d/init.d/iptables restart
事前にルールを保存しておく必要があります。
良く使うオプション
-m icmp --icmp-type
-m icmp --icmp-type any
-m icmp |
ICMPマッチング拡張を指定(必須) |
--icmp-type any |
ICMPのタイプを指定 指定できるタイプはiptables -p icmp -hで確認可能。 |
-m state --state
-m state --state RELATED,ESTABLISHED
INVALID |
既知の接続と関係していないパケット |
ESTABLISHED |
過去双方向にパケットがやり取りされた接続に属するパケット |
NEW |
新しい接続を開始したか、双方向にはパケットがやり取りされていない接続に属するパケット |
RELATED |
このパケットが新しい接続を開始しているが、 FTP データ転送や ICMP エラーのように、既存の接続に関係しているパケット |
DNS参照など、UDPパケットにてDNS参照の結果を取得するような場合、IPフィルタかた見た挙動としてはINPUTパケットになる。
--reject-with icmp-host-prohibited
パケットをREJECTする際のICMPメッセージを指定します。
参考情報
最終更新:2009年09月24日 14:40