ipsetで特定の国だけ遮断する方法|中国・韓国・ロシアをブロック(firewalld)

水冷パソコンの水温 Security

本記事では、firewalldのデフォルト設定(許可)を維持したまま、
特定の国(中国・韓国・ロシア)からのアクセスだけを遮断する方法を解説します。


■ この方法の特徴

👉 default allow のまま運用


通常アクセス → 許可
特定国 → 拒否

👉 「軽い防御」に最適


■ 対象国

・中国(CN)
・韓国(KR)
・ロシア(RU)


■ 注意

・IPベースのため完全ではない
・VPNは防げない


■ ① ipset作成

sudo firewall-cmd --permanent --new-ipset=cn --type=hash:net
sudo firewall-cmd --permanent --new-ipset=kr --type=hash:net
sudo firewall-cmd --permanent --new-ipset=ru --type=hash:net

■ ② IPリスト取得

curl -O https://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest

■ ③ 国別抽出

■ 中国

grep '|CN|' delegated-apnic-latest | grep ipv4 | \
awk -F '|' '{print $4"/"32-log($5)/log(2)}' > cn.txt

■ 韓国

grep '|KR|' delegated-apnic-latest | grep ipv4 | \
awk -F '|' '{print $4"/"32-log($5)/log(2)}' > kr.txt

■ ロシア

grep '|RU|' delegated-apnic-latest | grep ipv4 | \
awk -F '|' '{print $4"/"32-log($5)/log(2)}' > ru.txt

■ ④ ipset登録

for file in cn kr ru; do
  while read line; do
    sudo firewall-cmd --permanent --ipset=$file --add-entry=$line
  done < $file.txt
done

■ ⑤ ブロック設定(重要)

sudo firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source ipset="cn" drop'

sudo firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source ipset="kr" drop'

sudo firewall-cmd --permanent \
--add-rich-rule='rule family="ipv4" source ipset="ru" drop'

👉 この時点で遮断


■ ⑥ 設定反映

sudo firewall-cmd --reload

■ ⑦ 確認

sudo firewall-cmd --list-rich-rules

👉 dropルールが表示されればOK


■ 動作確認

・海外VPN → 接続不可
・日本回線 → 接続OK


■ メリット

・設定がシンプル
・既存構成を壊さない
・影響が少ない


■ デメリット

・完全防御ではない
・VPN回避可能
・IP更新が必要


■ 運用ポイント

・月1回IP更新
・ログ確認
・fail2ban併用


■ セキュリティレベル

default allow + blacklist

👉 中級レベルの防御


■ 本環境

・Ubuntu Server
・firewalld
・ipset
・WordPress


■ 次の記事

👉 日本IP制限(強力版)
👉 ipset自動更新

コメント

タイトルとURLをコピーしました