FireHOL Level3 導入

ルーターでのDNAT構成において、FORWARDチェインでのルールを一部変更。

FireHOL Level1・Level2 だけでは、中国系からの SMTP SPAM が一部漏れてくる為、これまで中国全域(CN zone)を丸ごと DROP していました。

しかし、メールサーバ側で zen.spamhaus による強力なフィルタリングが効くため、国単位(CN zone)の大味なブロックは必ずしも必要ではない状況になっていた。

そこで、IP国家ブロックではなく、より精度の高い “悪性アドレス集合ベースの防御” に切り替える方針へ変更。

変更点

CN zone(中国 IP 全域 DROP)を廃止

代わりに FireHOL Level3 を追加

FireHOL Level3 は、既知のスパム・ボットネット・脆弱性スキャンなど
“より積極的に悪性と判定されているアドレス” を対象に含むため、
国家単位のブロックよりも 必要十分で副作用の少ないブロック を実現できます。

現行のフィルタ構成(説明付き)

以下は現在の iptables ルールセットに、解説を付加したものです。

■ INPUT チェーン(WAN→自サーバの防御)
Chain INPUT (policy DROP)

→ 基本は DROP。必要な通信だけを例外許可する「ホワイトリスト方式」。

1 ACCEPT RELATED,ESTABLISHED

既存の通信の戻りはすべて許可(最重要ルール)。
接続中の HTTP/HTTPS や SSH の応答を止めないため。

2 ACCEPT all br0

LAN 内(192.168.1.x)からのアクセスは完全許可。
管理用のローカル接続を遮断しないようにするため。

3 DROP firehol_level1

外部からの新規接続で、FireHOL Level 1(悪性度高)に該当するホストを遮断。
→ 基本のマルウェア・スパム送信元の大半を撃退。

4 DROP firehol_level2

Level2 に該当する、より広い悪性ホスト帯を遮断。

5 DROP firehol_level3

Level3 を遮断。
以前は中国全域を DROP していたが、
FireHOL レベル1?3 の組合せに切り替え、国単位でなく悪性ホスト単位で精密防御する方式へ。

6 ACCEPT udp dpt:500

IPsec(ISAKMP)のための UDP 500 を許可。

7 ACCEPT udp dpt:4500

NAT-Traversal 用の IPsec(UDP 4500)を許可。

8 ACCEPT lo

ループバック通信は全許可。

■ FORWARD チェーン(LAN?WAN:ルータとしてのフィルタリング)
Chain FORWARD (policy DROP)

→ ルータ全体をホワイトリスト運用。

1 ACCEPT RELATED,ESTABLISHED

LAN クライアントやサーバの戻り通信を許可(ルータでは必須)。

▼ WAN → LAN の防御(外部から侵入させない)
2 DROP firehol_level1
3 DROP firehol_level2
4 DROP firehol_level3

外部(ppp0 から)LAN への新規接続は、FireHOL で三段階の悪性度フィルタを実施。
以前の「中国全域 DROP」より精度が高く、誤爆も減少。

▼ LAN → WAN の出口フィルタ(今回の主な強化ポイント)
5 DROP tcp 137-139

NETBIOS の外部公開防止。
Windows の誤通信やマルウェアの拡散を阻止。

6 DROP udp 137-139

同じく NETBIOS(UDP)のブロック。

7 DROP tcp 445

SMBv2/3 の外部流出防止。
ランサムウェアやマルウェアの被害拡大を抑える役割。

8 DROP udp 445

同じく SMB の UDP。

9 DROP tcp 111

NFS / portmapper の外部公開を禁止。

10 DROP udp 111

portmapper(UDP)も禁止。

11 ACCEPT br0 → ppp0 192.168.1.0/24

基本的に LAN 内クライアントの外向き通信を許可。
(ただし、この後に例外 DROP/ACCEPT が並ぶため基礎ルールの位置づけ)

▼ 特定サーバ(192.168.1.1: 外向きサーバ)への制御ルール
12 DROP other_block

手動で登録した怪しいネットブロック(AWS/Google/海外など)からのアクセス遮断。

13 ACCEPT tcp dpt:22(日本のみ)

日本国内 IP(jpnet)からの SSH 接続のみ許可。
→ 監視ボット・攻撃ボットをほぼ完全に排除。

14 ACCEPT tcp dpt:25

メールサーバの SMTP(受信)を許可。

15 ACCEPT tcp dpt:80(日本)

日本国内からの HTTP を許可。

16 ACCEPT tcp dpt:80(searchengines)

Googlebot・MSNbot など「正規検索エンジン」も許可。
→ 国外の一般アクセスは遮断しつつ、検索反映は維持。

17 ACCEPT tcp dpt:443(日本)

HTTPS も国内限定。

18 ACCEPT tcp dpt:443(searchengines)

検索エンジンの HTTPS アクセスを許可。

19 ACCEPT tcp dpt:587

メール送信 Submission を許可。

20 ACCEPT tcp dpt:993

IMAP over SSL を許可。

▼ 最後に 22/80/443 を総 DROP
21 DROP tcp dpt:22
22 DROP tcp dpt:80
23 DROP tcp dpt:443

→ 上記 13?20 の例外条件に一致しないアクセスは全て拒否。
→ これにより、
国外アクセス・スクレイピング・監視アクセスは完全に封鎖。

■ OUTPUT チェーン
Chain OUTPUT (policy ACCEPT)

ルータ本体の外向き通信は制限しない。
(LAN への制御はすべて FORWARD に集約する設計)

まとめ

LAN 内クライアントにも FireHOL を適用したことで、入口・出口の両面で悪性ホストを遮断する「全方位防御」が完成。
以前の「中国全域 DROP」より誤爆は減りつつ、安全性はむしろ向上した構成となった。