iptables

eth0:内向き
eth1:外向き
以下の順番で適用。

モジュールロード

/sbin/modprobe ip_conntrack_ftp
FTP用接続追跡
/sbin/modprobe ip_nat_ftp
FTP用NATヘルパー

初期化

iptables -F
iptables -Z
iptables -X

こだわるなら一番最初に/etc/rc.d/init.d/iptables stopなんてすれ

ポリシー

iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP

最後まで引っかからなかったパケットは全部落とす

ループバック、ローカルの許可

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など)は
サービス側でローカルアドレスだけにバインドする

問答無用でたたき落とす

# 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で始まらない新規接続は落とす

iptables -A INPUT -i eth1 -p tcp ! --syn -m state --state NEW -j DROP

外向きサービスポートへの接続確立させる前に落とす
3WAY握手はお行儀よくしてね!

NEWなのにSYN/ACKが立ってるパケットにはRSTで答えて拒否

iptables -A INPUT -i eth1 -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset

黙ってたたき落とすと踏み台になっちゃうぅ

行儀良く確立した接続と関連接続は通す

iptables -A INPUT -i eth1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

出て行くパケットは全部通す

iptables -A OUTPUT -o eth1 -j ACCEPT

サービス側でアドレスバインドしておけば
外向きの137、138、445などを落とす面倒な設定も少なくて済む

TCPサービスポートへの新規接続を通す

iptables -A INPUT  -i eth1 -p tcp -m state --state NEW -m multiport --dport xxx,xxx,xxx,xxx -j ACCEPT

xxxは各外向きサービスのポート番号。

UDPサービスポートへの接続を通す

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
Last-modified: 2010-06-11 (金) 13:00:08