本記事では、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自動更新

コメント