iptablesを用いた国別ブロックは、大量のIPアドレス範囲を効率的に管理するため、ipsetと組み合わせて設定します。国別のIPリストをダウンロードし、そのリスト(セット)を対象にDROPルールを適用することで、特定の国からの不正アクセスを軽量かつ迅速に遮断できます
設定手順の概要:
1 ipsetのインストール:
yum install ipset (RHEL/CentOS)。
2 IPリストの取得: GeoIPデータベース(例: IP2Location)から対象国のリストを入手。
3 ipsetセットの作成とリストの読み込み:
ipset create country_block hash:net と ipset add country_block
で作成・追加。
4 iptablesへの適用:
iptables -I INPUT -m set –match-set country_block src -j DROP
iptablesを使用して特定の国からのアクセスをブロック、あるいは日本国内からのみ許可する場合、「ipset」と組み合わせて構築するのが一般的で効率的です
iptables単体で数千?数万件のIPアドレス範囲を登録すると、パケット処理の負荷が非常に高くなりますが、ipsetを使えばメモリ上で高速に照合できます。
実装の主な流れ
ツールのインストール: ipset をインストールします
。
国別IPリストの取得: APNIC などのレジストリが公開している最新のIP割り当てリスト(CIDR形式)を取得します。
ipsetへの登録: 取得したIPリスト(例: 日本国内のIPアドレス)をipsetのリストに一括登録します。
iptablesルールの適用: ipsetのリストを参照して、「許可」または「拒否」するルールを追加します
具体的な手法の例
日本国内IPのみを許可する場合
「日本以外のすべての国を拒否」するよりも、「日本のIPリストを作成し、それ以外をDROP(破棄)する」ホワイトリスト方式が運用上安全です。
特定の国(中国、ロシアなど)をブロックする場合
攻撃元として多いとされる特定の国をリスト化し、iptablesで DROP 指定を行います。
推奨されるリソース
最新のIPリストや、設定を自動化するテンプレートを提供しているサイトが役立ちます。
ipv4.fetus.jp: iptables用の形式で国別IPリストを配布しており、スクリプトでの自動更新に向いています。
APNIC 検索サイト: 特定のIPがどの国に属しているかを確認する際の公式な情報源です
注意点
定期的な更新: IPアドレスの割り当ては頻繁に変わるため、cron などを使用して週1回程度はリストを更新する必要があります。
設定の永続化: iptables や ipset は再起動するとリセットされるため、iptables-persistent などのツールやスクリプトで設定を保存してください