iptables
Security
リセット
# iptables -F # iptables -Z # iptables -X
デフォルトルールの設定
許可
# iptables -P OUTPUT ACCEPT
ドロップ
# iptables -P INPUT DROP # iptables -P FORWARD DROP
ループバックアドレス(lo) に関してはすべて許可
# iptables -A INPUT -i lo -j ACCEPT # iptables -A OUTPUT -o lo -j ACCEPT
NEW ステートでありながら SYN フラグの立っていないパケットを破棄
# iptables -A INPUT -i eth0 -p tcp ! --syn -m state --state NEW -j DROP
フラグメント化されたパケットを破棄
# iptables -A INPUT -i eth0 -f -j DROP # iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP # iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ALL -j DROP
TCP NULL ポートスキャン対策
# iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j DROP # iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
TCP Xmas ポートスキャン対策
# iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
TCP FIN ポートスキャン対策
# iptables -A INPUT -i eth0 -p tcp --tcp-flags FIN,ACK FIN -j DROP # iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
ブロードキャストパケットを破棄
# iptables -A INPUT -i eth0 -m pkttype --pkt-type broadcast -j DROP
マルチキャストパケットを破棄
# iptables -A INPUT -i eth0 -m pkttype --pkt-type multicast -j DROP
無効なヘッダがある TCP パケットを破棄
# iptables -A INPUT -i eth0 -m state --state INVALID -j DROP
HTTP へのアクセスを許可
# iptables -A INPUT -i eth0 -p tcp -s 0/0 --sport 1024:65535 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
ルータ外パケットの破棄とロギング
# iptables -A INPUT -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix " DEFAULT DROP " # iptables -A INPUT -j DROP
IP アドレスあたり 60 秒以内に 15 コネクション以上の接続を試みようとすると確立を阻止する
# iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set # iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP
- Keep-Alive が有効だと、一度確立したコネクションを使いまわすため、上記の制限には引っかからない
- 接続制限をすることが出来ない
Smurf 攻撃対策
# iptables -A INPUT -d 0.0.0.0/8 -j DROP # iptables -A INPUT -d 255.255.255.255 -j DROP
save
リストア