ファイアウォールで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
iptables
geoip
Linuxにはデフォルトで含まれていないモジュールがあります。プラグインをインストールできますxtables
。
apt-get install xtables-addons-common xtables-addons-dkms
- MaxMinds geoipデータベースをインポートします(無料データベースを使用している場合は最新の情報ではない可能性があります)。
wget -O geolite2-csv.zip https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip ; unzip geolite2-csv.zip
csv
データベースを検索に使用できるバイナリファイルに変換するgcsv2binをダウンロードしてください。
wget -O - http://people.netfilter.org/acidfu/geoip/tools/gcsv2bin.tar.gz | tar xzf -
make
- 物理データベースを変換します。
./gcsv2bin path_to_IPv4.csv
- モジュールのロード
xt_geoip
:
sudo modprobe xt_geoip
- iptablesルール:
sudo iptables -A INPUT -m geoip --src-cc DE -j DROP
そのうちのパラメータは--src-cc
CountryCodeです。