iptables 国別ブロック


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 などのツールやスクリプトで設定を保存してください