GeoIPデータベースとLinuxiptablesを使用して、特定の国のIPから発信されたトラフィックをブロックする方法を学習します。 Iptablesは、Netfilterプロジェクト内に実装されているLinuxカーネルファイアウォールを構成するためのコマンドベースのユーティリティプログラムです。 一方、GeoIPは、地理的な場所に対応するIPのコレクションであり、地理的な場所は、それらの特定の組織、都市、州、および国に割り当てられたIPアドレスにマッピングされます。 GeoIPデータベースの地理座標は、多くの場合、人口の中心に近いため、特定の住所や世帯を識別するために使用しないでください。 また、iptables拡張機能xtables-addonとGeoIPデータベースで構成されるxt_geoipというモジュールを使用して、特定の国からのトラフィックをブロックまたは許可するのに役立つ国ベースのトラフィックフィルタリングを実行します。
依存関係のアップグレードとインストール
まず、Linuxシステムをアップグレードする必要があります。次に、xtables-addonsに必要な依存関係のインストールに進みます。 そのために、マシンで実行されているディストリビューションに対応する次のコマンドを実行します。
Debianベースのシステム(Debian、Ubuntu、Linux Mint)
#apt-get update && apt-get upgrade#apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
RedHatベースのシステム(CentOS、RHEL、 Fedora)。
#yum update#yum install gcc-c ++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
Xtables-アドオンのインストール
システムがアップグレードされ、依存関係がインストールされたら、xtables-addonsをマシンにインストールします。 そのために、最新のtarballをからダウンロードします。 公式xtables-アドオンプロジェクトサイト wgetを使用します。 ダウンロードしたら、tarballを抽出し、コンパイルしてマシンにインストールします。
# wget https://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
# tar xf xtables-addons-2.13.tar.xz
# cd xtables-addons-2.13
# ./configure
# make
# make install
SeLinuxがモジュールをロードできないようにする(RedHatベースのシステム)
RedHatベースのLinuxディストリビューション、つまりCentOS、RHEL、 Fedora デフォルトでselinuxが有効になっている場合、selinuxポリシーを次のように調整する必要があります。 そうしないと、SeLinuxはiptablesがxt_geoipモジュールをロードできないようにします。
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
GeoIPデータベースをインストールする
次に、GeoIPデータベースをからダウンロードするxtables-addons拡張機能が付属するxt_geoipというモジュールを実行します。 MaxMind そしてそれをxt_geoipによって認識されるバイナリ形式に変換します。 ダウンロードしたら、ビルドして、必要なxt_geoipパス(/ usr / share / xt_geoip /)に移動します。
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
国との間のトラフィックをブロックする
すべてが期待どおりに進んだ場合、ファイアウォールユーティリティプログラムiptablesを使用してgeoipモジュールを使用できるようになります。
Iptablesの使用
国から発信または国に向かうトラフィックをブロックするために、geoipモジュールでiptablesを使用するための基本的な構文は次のとおりです。 ここでは、使用する必要があります 2文字のISO3166コード 国の代わりに、たとえば、米国の場合はUS、アイルランドの場合はIE、インドの場合はIN、中国の場合はCNなど。
#iptables -m geoip–src-cc国[,country…] –dst-cc国[,country…]
ここで、インド(IN)と米国(US)からの着信トラフィックをブロックする場合は、次のiptablesコマンドで実行できます。 #iptables -I INPUT -m geoip –src-cc IN、US -j DROP
サーバー上の米国以外のすべての着信トラフィックをブロックする場合は、次の手順を実行する必要があります。 #iptables -I INPUT -m geoip! –src-cc US -j DROP
これは、米国以外のネットワークからサーバーにpingを実行しようとしたときに撮ったスクリーンショットです。 pingからの応答がありませんでした。 iptablesの構成がランタイムに適用され、保存されなかったため、サーバーを再起動した後、サーバーからping応答を受け取りました。
インド(IN)宛ての発信トラフィックをブロックする場合は、次のコマンドを実行する必要があります。 #iptables -A OUTPUT -m geoip –dst-cc IN -j DROP
Firewalldを使用する
systemdベースのシステムを実行していて、iptablesのフロントエンドコントローラーとしてfirewalldを使用している場合は、上記のジョブにそれぞれfirewalldを使用することもできます。
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc IN,UN -j DROP
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc IN -j DROP
GeoIPモジュールを備えたIptablesは、特定の国から発生するDOS、DDOS攻撃を防ぐために非常に重要です。 これは、特定の国から特定のWebサイト/サーバーへのアクセスを制限する場合にも非常に効率的です。 したがって、GeoIPモジュールをiptables-addonsとともにインストールすることは、特定の国を許可または制限するためのセットアップが必要です。 したがって、質問、提案、フィードバックがある場合は、下のコメントボックスに記入してください。 ありがとう ! 楽しみ :-)