iptablesの設定メモ

Dec 2003

OS: Debian Woody
フィルタリングのコマンドiptablesってわかりにくいのでこのページをつくっときました。
内容について責任はもちません。

参考 : Unix User 2004 1月号 Pragmatic Unix 山下哲典


1 ルーターの中のパケットの流れ

LAN側----eth0 ---(Forwardチェイン)---eth1---インターネット
| |
| |
Inputチェイン ------------Outputチェイン


上のようにフィルタリングするマシンはチェインという
流れを3つもつ。でも実際は自分(フィルタリングする
ルーター)を通過させるパケットをFowardチェイン、
ルーター自信が必要とするパケットをInputチェイン
ルーターから出ていくパケットをOutputチェイン
という.


2 iptablesコマンドの書式

iptables -[オプション] <チェイン> <パケットの条件> <アクション>

オプション[A|ID|F|L 等]
-A Append(追加)。これでルールを最後に追加する。
-I Insert(挿入)。
-D Delete(削除)
-F Flush(全部削除) iptables -F で多分全部消えると思う。確認は下のコマンドで。
-L List(リスト) ルールのリスト表示.
その他のオプションはiptables -h で見るほうがman で見るよりわかりやすいかも。

チェイン<FOWARD|INPUT|OUTPUT>

パケットの条件例
新規に開始するパケット -m state --state NEW
確立済みパケット -m state --state ESTABLISHED
既存の接続に対するパケット -m state --state RELATED
不当なパケット -m state --state INVALID

eth1から入ってeth0へ出ていく場合は -i eth1 -o eth0
TCPで送信先のポートが80番 -p tcp --dport 80



アクション<DROP|ACCEPT> ターゲットともいう。
DROP パケットの破棄
ACCEPT パケットの許可

3 設定
設定例です。
以下をスクリプトファイルに書いておきます。
ファイル名 filter.sh
#!/bin/sh
#Interface to Internet
EXTIF=eth1
ANY=0.0.0.0/0
#
/sbin/iptables -F FORWARD <------以 下3行 チェインのクリア
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT

# Set Policy
/sbin/iptables -P INPUT DROP <----入るものすべて破棄。鎖国状態
/sbin/iptables -P OUTPUT ACCEPT <---- 去る者は追わず
/sbin/iptables -P FORWARD DROP <---- 何も通過させない。

/sbin/iptables -A INPUT -p icmp -j ACCEPT <--pingは受け付ける
/sbin/iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
<-----既に確立済のパケットや既存の接続は受け付ける
/sbin/iptalles -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
<-----SSHを受け付ける。

/sbin/iptables -A FORWARD -m state --state ESTABLISH,RELATED -j ACCEPT
<-----確立済、既存の接続への新規パケットを通過させる
/sbin/iptables -A FORWARD -m state --state NEW -s 192.168.0.0/24 -i eth0 -o eth1 ACCEPT
<-----LAN内から外へのパケットを通過
/sbin/iptables -A INPUT -m mulltiport --dport 22,25,80,110 -j ACCEPT
<-----SSH 22 SMTP 25 HTTP 80 POP3 110 を通過させる。

/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE <----- masquerading
# Ensure IP forwarding here

sh filter.sh
を実行してエラーが無ければ /etc/default/iptables を参考にして次のように登録します。

# /etc/init.d/iptables save active
# dpkg-reconfigure iptables

逆に登録したルールをクリアする場合は次のコマンドを実行します。

# /etc/init.d/iptables save inactive

4 おまけ

カーネルを再コンパイルするときはNetworking Optionについて気をつけなければ
なりません。(カーネルの再コンパイルをしなくても動作します。)
karappi_pochi.conf


目次 top