FireHOL だけで完成する最小&強固な iptables 構成
今回は、FireHOL の不正アクセス判定(firehol_level1~3)を軸にした 「シンプルかつ堅牢」な iptables の実例を紹介します。
最終的には、“iptables は FireHOL の結果を DROP するだけでよい”という構成に落ち着きました。
以下は最終的なルール(INPUT / FORWARD / OUTPUT)と、その解説です。
Chain INPUT(デフォルト DROP)
1 ACCEPT state RELATED,ESTABLISHED
2 ACCEPT in br0
3 DROP match-set firehol_level1 src
4 DROP match-set firehol_level2 src
5 DROP match-set firehol_level3 src
6 ACCEPT udp dpt:500
7 ACCEPT udp dpt:4500
8 ACCEPT in lo
● 解説
FireHOL の3段階ブロックを上から順に DROP
軽度 → 重度 の攻撃元を自動的に分類し、自動的に遮断。
LAN(br0)は信頼区画として全許可。
IPsec(500/4500)と lo を明示的に許可。
INPUT は “FireHOL + 必要最小限の許可” に徹しているため、無駄がない構成です。
Chain FORWARD(デフォルト DROP)
1 ACCEPT state RELATED,ESTABLISHED
2 DROP firehol_level1 src
3 DROP firehol_level2 src
4 DROP firehol_level3 src
5 DROP tcp dpts 137:139
6 DROP udp dpts 137:139
7 DROP tcp dpt 445
8 DROP udp dpt 445
9 DROP tcp dpt 111
10 DROP udp dpt 111
11 ACCEPT br0 → ppp0 (192.168.1.0/24)
12 ACCEPT tcp dpt 25
13 ACCEPT tcp dpt 80
14 ACCEPT tcp dpt 443
15 ACCEPT tcp dpt 587
16 ACCEPT tcp dpt 993
● 解説
PPPoE → LAN 方向にも FireHOL による L1~L3 DROP が機能。
双方向で不正IPを完全遮断。
NetBIOS / SMB / RPC など危険ポートは外向け完全ブロック。
メール(25/587/993)、Web(80/443)など公開サービスは最小限のみ許可。
FORWARD も INPUT と同様、
FireHOL のフィルタリングを中心に必要な公開サービスだけ許可する
という非常にクリーンな設計。
Chain OUTPUT(デフォルト ACCEPT)
1 ACCEPT out lo
OUTPUT は基本 ACCEPT のまま。
FireHOL を採用している環境では、外向き制限は不要です。
まとめ:FireHOL だけで完成する防御
最終的な結論としては、
iptables は FireHOL の結果(firehol_level1~3)を DROP するだけで十分
という形に落ち着きました。
不正アクセスは FireHOL が自動分類して遮断
LAN は信頼区画として扱う
公開サービスだけ最小限を許可
危険ポートは全て外向け DROP
非常にシンプルですが、
実運用ではこれ以上ないほど堅牢です。
攻撃ログを眺めていても、FireHOL レベル2・3の DROP が強力に機能しており、不要なカスタムルールを増やす必要性はありませんでした。
