home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Linux/iptablesメモ

技術/Linux/iptablesメモ

技術 / Linux / iptablesメモ
id: 330 所有者: msakamoto-sf    作成日: 2002-12-31 05:00:00
カテゴリ: Linux セキュリティ ネットワーク 

概要

Linuxのカーネルモジュールとして実装され、動作する。
Linux 2.2 : ipchains
Linux 2.4, 2.6 : iptables
Netfilterという仕組みを使うと、ipchainseの設定ファイルや機能を2.4でも利用可能。

iptablesの構成例 (TurboLinux Server 7)

  • バージョン:iptables-1.2.2
  • 起動スクリプト:/etc/init.d/iptables
  • 設定ファイル:/etc/sysconfig/iptables
  • ログ:/var/messages

なお、iptablesコマンドのオプションや設定ファイルの位置などは CentOS5.2 でも同様である。

参考:

コマンドラインからの使い方サマリ

(IPマスカレードの説明は省略)

現在の設定を確認

"-L" オプションでINPUT(侵入), FORWARD(通過), OUTPUT(送出)に対する各チェインの設定を表示する。

# iptables -L

個別のチェインに対する設定を表示するには "-L" に続けてチェイン名を指定する。

# iptables -L [チェイン]

ルールの追加と削除

INPUTチェインに対して192.168.0.0/24からのICMPパケットを全て破棄するルールを追加する :

# iptables -A INPUT -s 192.168.0.0/24 -p icmp -j DROP

このルールを削除する :

# iptables -D INPUT -s 192.168.0.0/24 -p icmp -j DROP

"-L" で表示されるルール番号を指定して削除する :

# iptables -D [チェイン] [ルール番号]

代表的なコマンドラインオプション

# iptables -[ADC] チェイン ルール [オプション]
# iptables -[RI] チェイン ルール番号 ルール [オプション]
# iptables -D チェイン ルール番号 [オプション]
# iptables -[LFZ] チェイン [オプション]
# iptables -[NX] チェイン
# iptables -P チェイン ターゲット(DROPとか。) [オプション]
# iptables -E 既存のチェイン名 新規チェイン名

チェイン操作のオプション

-A (Append) 指定したチェインに新しいルールを追加
-D (Delete) ルールを削除
-R (Replace) 指定したチェインのルール番号を、新しいルールで置換
-I (Insert) ルール番号を指定して置換
-L (List) 指定したチェインのルールを表示
-F (Flush) 指定したチェインのルールを全て削除
-Z (Zero) チェインのカウンタをリセット(後述)
-N (New Chain) 新しいチェインを作成
-X (Delete Chain) ルールが空のチェインを削除
-P (Policy) 指定したチェインのポリシーを設定
-E (Rename Chain) ユーザー定義のチェインの名前を変更

パケットのマッチング用代表的オプション

-s (Source) パケットの送信元を指定
  • 直接IPで指定
  • FQDN(turbo.turbolinux.gr.jp)で指定、
  • ネットワークアドレス(192.168.0.0/24, 192.168.0.0/255.255.255.0)
  • !を頭に付ければ否定の効果。
-s !localhost
→ localhost以外のパケットとマッチ

!否定は他のほとんどのオプションでも使える。

-d (Destination) パケットの宛先を指定
"-s" と同じ書式で指定
-i (In Interface) パケットが入って来るデバイス名を指定

OUTPUTチェインには指定できない。
FORWARDには-i, -o 両方指定できる。

例: 
-i eth0

PPP接続などで、ppp0かppp1か分からない場合 :

-i ppp+
-o (Out Interface) パケットが出て行くI/Oを指定

INPUTチェインには指定できない。
FORWARDチェインには-i, -o 両方指定できる。
指定方法は -i と同じ。

-p (Protocol) プロトコルを指定

指定できるプロトコルはtcp, udp, icmp のいずれか。
大文字小文字の区別はない。

-j (Jump) ターゲットを指定
(後述)

TCP拡張, UDP拡張, ICMP拡張

例 : --sportオプション

# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

次の二つの拡張オプションはTCP, UDP用です。

--sport (Source Port) 送信元のポートをマッチング

/etc/servicesファイルに記述されたポート番号又はサービス名を指定可能。
範囲を指定するには":"で区切る。

ポート番号2000から3000番を指定

--sport 2000:3000

ポート番号0 から1024番までを指定

--sport :1024

ポート番号1025 から 65535 までを指定

--sport 1025:
--dport (Destination Port) 宛先のポートをマッチング
範囲指定は--sportと同じ。

TCP, UDP, ICMP拡張を調べる :

# iptables -p tcp --help
# iptables -p udp --help
# iptables -p icmp --help

その他の拡張(mac, limit, owner, state等)を調べる :

# iptables -m mac --help

など。

ターゲット指定

条件にマッチしたパケットを処理方法を指定する。"-j"オプションの後に指定する。
代表的なターゲットを以下に示す。

ACCEPT
パケットを通過させる。
DROP
パケットを破棄する。。
REJECT
パケットを破棄し、破棄した旨のICMPメッセージを送信元に返す。
LOG
マッチしたパケットのログを記録する。
RETURN
INPUT, OUTPUT , FORWARDチェインの場合はチェインの最後へ処理が移り、そのチェインのポリシーが適用される。
ユーザー定義のチェインの場合は、呼び出したルールに戻り、引続き次のルールから調べられる。

ユーザー定義チェイン

"-N" オプションを使うと、ユーザが新しくチェインを作れる。

# iptables -N userchain

これでuserchain と言う名前のチェインが新しく作られた。
ルールの操作などでこのチェインを対象とするには、 "-j userchain" と指定する。

アカウンティングルール

あるルールによって処理されたパケットの数をカウントするルール。設定するにはターゲットの指定を省略する。

OUTPUTチェインを通過したtcp 80番ポート(http) のパケットをカウントするように指定する :

# iptables -A OUTPUT -p tcp --sport 80

カウンターのリセットには-Zオプションを使う。

# iptables -Z OUTPUT

設定の保存

iptablesコマンドによる設定は一時的なもので、マシンをリブートすると消えてしまう。
通常は、

# /sbin/service iptables save

として、現在設定されているルールを/etc/sysconfig/iptablesに上書き保存できる。

好きなファイルに保存するには"iptables-save"コマンドを使う。

# iptables-save > ファイル名

緊急停止用として、ルールを全てリセットし、ポリシーを全てDROPにする :

# /etc/rc.d/init.d/iptables panic

否定の指定で、

!xxx.xxx.xxx.xxx

とすると×。

! xxx.xxx...

と言う風に、半角空白をいれる。シェルの変数が混ざっちゃう?



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-12 16:03:35
md5:ba4a21a73e248224b9f3b45d2c607a76
sha1:ecf448a656b69e4888305b646b77f46b148f340a
コメント
コメントを投稿するにはログインして下さい。