GeoLite2 mmdb(iptablesまたはFirewalld)を介して国をブロックする方法

GeoLite2 mmdb(iptablesまたはFirewalld)を介して国をブロックする方法

ファイアウォールでGeoLite2データベース(mmdb)を使用してドイツを除くすべての国をブロックするにはどうすればよいですか?

答え1

ドイツのIPアドレスは以下から入手できます。成熟した(ヨーロッパのレジストリ)これを使用してIPsetを作成します。これにより、iptablesのipsetを簡単かつ効率的に使用できます。

RIPEには、国別のIPアドレスを取得するためのAPIとWebリソースがあります。たとえば、ドイツのIPを取得するには、このURLが.json形式で一覧表示されます。

https://stat.ripe.net/data/country-resource-list/data.json?v4_format=prefix&resource=de

実際にスクリプトがあります(https://github.com/mivk/ip-country/blob/master/get-ripe-ipscrontab)IPリストを更新するために呼び出します。そのリストを使用してipsetを更新します。

ipset がある場合、名前を ipv4_de に指定すると、iptables の行は次のようになります。

-A INPUT -m set ! --match-set ipv4_de src -j DROP

これにより、ipv4_deセットにないすべてのIPが削除されます。

答え2

iptablesgeoipLinuxにはデフォルトで含まれていないモジュールがあります。プラグインをインストールできますxtables

apt-get install xtables-addons-common xtables-addons-dkms

  1. MaxMinds geoipデータベースをインポートします(無料データベースを使用している場合は最新の情報ではない可能性があります)。

wget -O geolite2-csv.zip https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip ; unzip geolite2-csv.zip

  1. csvデータベースを検索に使用できるバイナリファイルに変換するgcsv2binをダウンロードしてください。
wget -O - http://people.netfilter.org/acidfu/geoip/tools/gcsv2bin.tar.gz | tar xzf - 
make
  1. 物理データベースを変換します。

./gcsv2bin path_to_IPv4.csv

  1. モジュールのロードxt_geoip

sudo modprobe xt_geoip

  1. iptablesルール:

sudo iptables -A INPUT -m geoip --src-cc DE -j DROP

そのうちのパラメータは--src-ccCountryCodeです。

関連情報