- 追加された行はこの色です。
- 削除された行はこの色です。
- iptables へ行く。
#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もまとめて書いてみた(´・ω・`)