#freeze
**iptables [#j91317e6]
 eth0:内向き
 eth1:外向き
 以下の順番で適用。

***モジュールロード [#p2350be4]
 /sbin/modprobe ip_conntrack_ftp
 FTP用接続追跡
 /sbin/modprobe ip_nat_ftp
 FTP用NATヘルパー

***初期化 [#y73b89dd]
 iptables -F
 iptables -Z
 iptables -X
 
 こだわるなら一番最初に/etc/rc.d/init.d/iptables stopなんてすれ

***ポリシー [#z954fb71]
 iptables -P INPUT   DROP
 iptables -P OUTPUT  DROP
 iptables -P FORWARD DROP
 
 最後まで引っかからなかったパケットは全部落とす

***ループバック、ローカルの許可 [#h2f8929f]
 iptables -A INPUT  -i lo   -j ACCEPT
 iptables -A OUTPUT -o lo   -j ACCEPT
 iptables -A INPUT  -i eth0 -j ACCEPT
 iptables -A OUTPUT -o eth0 -j ACCEPT
 
 ローカルでしか動かさないサービスで
 アドレスバインドが可能なモノ(MySQLやSambaなど)は
 サービス側でローカルアドレスだけにバインドする

***問答無用でたたき落とす [#w7062b00]
 # TRENDMICRO WebReputation
 iptables -A INPUT  -i eth1 -s 150.70.0.0/16      -j DROP
 iptables -A INPUT  -i eth1 -s 216.104.0.0/19     -j DROP
 (例えばCN/KR/KP/TWなど以下略
 
 他のルールにマッチする前に最優先でマッチさせて落とす

***SYNで始まらない新規接続は落とす [#cbee628a]
 iptables -A INPUT -i eth1 -p tcp ! --syn -m state --state NEW -j DROP
 
 外向きサービスポートへの接続確立させる前に落とす
 3WAY握手はお行儀よくしてね!

***NEWなのにSYN/ACKが立ってるパケットにはRSTで答えて拒否 [#e618d89f]
 iptables -A INPUT -i eth1 -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
 
 黙ってたたき落とすと踏み台になっちゃうぅ

***行儀良く確立した接続と関連接続は通す [#qba38ccf]
 iptables -A INPUT -i eth1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

***出て行くパケットは全部通す [#rc487ecd]
 iptables -A OUTPUT -o eth1 -j ACCEPT
 
 サービス側でアドレスバインドしておけば
 外向きの137、138、445などを落とす面倒な設定も少なくて済む

***TCPサービスポートへの新規接続を通す [#v7a81554]
 iptables -A INPUT  -i eth1 -p tcp -m state --state NEW -m multiport --dport xxx,xxx,xxx,xxx -j ACCEPT
 
 xxxは各外向きサービスのポート番号。

***UDPサービスポートへの接続を通す [#ecc84f5c]
 iptables -A INPUT  -i eth1 -p udp -m multiport --sport 53,123 -j ACCEPT
 iptables -A INPUT  -i eth1 -p udp -m multiport --dport 53,123 -j ACCEPT
 
 外向きDNSを立てているなら2つとも必要
 面倒なのでNTPもまとめて書いてみた(´・ω・`)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS