国ごとの IP アドレスリストを取得する

先日、FirewallD で MaxMind DB (geoip)みたいに国ごとでのアクセス制限を行う方法を模索していました。

結論としては、FirewallD にモジュールを組み込む方法は見つからなかったのですが、国ごとの IP アドレスリストを公表しているサイトを発見しました。

しかも利用しやすい一般的なマスク形式(例:192.168.0.0/16)で記述されていました。

この形式ならば、ACL(Access Control List)にも適用しやすいのでご紹介します。

IPdeny

IPdeny(https://www.ipdeny.com/)は ACL のためのアクセス制限リストとして提供しているみたいで、しかも IPV4 形式(https://www.ipdeny.com/ipblocks/)と IPV6 形式(https://www.ipdeny.com/ipv6/ipaddresses/blocks/)で公開されており、タイムスタンプで確認した限りでは、ほぼ毎日の間隔で更新されているようです。

ファイル名の形式は ISO 3166-1国名コード に「.zone」を付け加える形式で記述されています。(例:中国の場合は「cn.zone」)

FirewallD での利用例

中国の IP アドレスリストを取得する。

ipset を追加する。

ipset をファイルから読み込む

DROP ゾーンに ipset を追加

FirewallD のリロードと確認

DROP ゾーンの確認

問題ない様です。

作業ファイルの削除

通常運用するには

運用するのであれば、アドレスリストの更新が1週間に一度くらいは必要になるかと思います。

シェルファイルなどを作成し、「/etc/cron.weekly/」などに格納すれば良いのではないでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です