iptablesの設定

ここでのiptablesの構築内容は、
1.外から(インターネット)eth0に入ってくるパケットに入れるポートを制限する。
2.LAN側のeth1から出て行くのパケットは、すべてOKにします。
3.自マシンからすべてOKにします。
4.外部から内部のpingはステルスします。


iptables コマンドの書式
# iptables [ -t table ] [ -A chain ] [ 条件 ] [ アクション ]
-t table  
-t table テーブル名を指定します
table 指定できるテーブルには、filter と nat があります。
「 filter 」がフィルタリング用のテーブルで、「 nat 」がアドレス変換用のテーブルになります。
省略時は、filter 用のテーブルになります。
-A chain
-A chain chain に条件やアクション(ルール)を追加します。
-P chain chain の基本となるルールを決定します。
-F chain 条件の合致する chain を削除します。chain 省略時は「全て」削除します。
chain 指定できる chain の種類は以下の通りです。
PREROUTING   #外からのパケットをLANに送る
FORWARD   #転送する
POSTROUTING  #LANからパケットをインターネットに送る
INPUT   #入ってくるパケット指定
OUTPUT   #出て行くパケッ指定
自分で chain を作成する事も可能です。

条件
-i interface 入力インターフェースを条件として指定します。eth0 や eth1 等。
-p interface プロトコルを条件として指定します。tcp , udp , icmp , all など。
TCP , UDP は、以下のオプションでポート番号も指定できます。
--sport <ポート番号> : 送信元のポート番
--dport <ポート番号> : 宛先のポート番号
-o interface 出力インターフェースを条件として指定します。eth0 や eth1 等。
-s interface IP アドレスを指定します。サブネットマスクを用いた指定も可能です。

アクション
-j ACCEPT パケットの通過を許可します。
-j DROP パケットの通過を拒否します。
-j MASQUERADE 「 -t nat 」と「 -A POSTROUTING 」を同時に用いて、送信元IPアドレスとポート番号の書き換えを行います。
-j DNAT 「 -t nat 」と「 -A PREROUTING 」を同時に用いて、宛先IPアドレスを書き換えを行います。
以下のオプションで書き換える宛先IPアドレスとポート番号を指定する事が可能です。
--to IPアドレス [ ポート番号 ]

接続状態
-m state
--state 接続状態
接続状態にはNEW、INVALID、ESTABLISHED、RELATEDが指定できる。
NEWは新規接続のパケット、INVALIDは既存パケットと関係のないパケット、ESTABLISHEDは既存パケットと関係あるパケット、RELATEDは新規接続のパケットであるが、既存パケットに関係のあるパケットである。これにより、いちいち応答パケットを許可する設定をしなくても済みます。


設定例、
#eth0から入ってくるパケットを制限します。
#eth1に入ってくるパケットはすべてOK

# /etc/sysconfig/iptablesのファイルに以下を追加する。

#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 20 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 21 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 22 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 80 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 25 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 110 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p udp --dport 443 -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
#] /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#] /sbin/iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP
#] /sbin/iptables -A INPUT -i eth1 -j ACCEPT
#] /sbin/iptables -A INPUT -i lo -j ACCEPT
#] /sbin/iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP
#] /sbin/iptables -P INPUT DROP

#設定後
#] iptables-save #確認する
#] iptables-save > /etc/sisconfig/iptables #設定ファイルを反映させる。
#] service iptables restart 再起動する。
または
#] /etc/re.d/init.d/iptables restart

#iptablesの再起動して完了
20番ftp-data、 21番FTP、22番SSH、53番DNS、80番WWW、25番SMTP、110番POP、443番SSLのみが入れる設定になります。


戻る