この記事では、GeoIPデータベースやLinux®iptablesを使用するなど、特定の国のIPから発信されるトラフィックをブロックする方法について説明します。また、特定の国から発信されたDOSおよびDDoS攻撃を防ぐためにも使用できます。
GeoIPモジュールがiptables-addonsとともにインストールされていることを確認してください。
GeoIPは、特定の組織、都市、州、国に割り当てられたIPアドレスでマッピングされた地理的な場所に対応するIPアドレスのコレクションです。
iptables
は、ポリシーチェーンを使用してトラフィックを許可またはブロックするコマンドラインファイアウォールユーティリティです。接続がシステム上でそれ自体を確立しようとすると、iptablesはそのリストで一致するルールを探します。見つからない場合は、デフォルトのアクションに頼ります。
また、 xt_geoipと呼ばれるモジュールの助けを借りて 、iptables
で構成されます 拡張機能(xtables-アドオン )および GeoIP データベースでは、国ベースのトラフィックフィルタリングを実行して、特定の国からのトラフィックをブロックまたは許可することができます。
Linuxシステムをアップグレードし、必要なxtables-addons依存関係をインストールする必要があります。マシンで実行しているディストリビューションに対応する次のコマンドを実行します。
Debianベースのシステム(Debian®、Ubuntu®オペレーティングシステム)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
RedHatベースのシステム(CentOS®、RHEL®、Fedora®)
yum update # yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS# make
xtables-addonsをインストールします
次に、 xtables-addonsをインストールします あなたのマシンで。 wget
を使用して、公式のxtables-addonsプロジェクトサイトから最新のtarballをダウンロードします。 。
ファイルをダウンさせたら、tarballを抽出します。次に、コンパイルしてマシンにインストールします。
# wget http://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データベースをインストールします
xt_geoipというモジュール xtables-アドオンが付属しています GeoIPをダウンロードする拡張機能 MaxMind®からデータベースを作成し、 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/
これで、geoip
を使用できます ファイアウォールユーティリティプログラム、iptables
のいずれかを含むモジュール 、またはfirewalld
。
このセクションでは、iptables
を使用するための基本的な構文について説明します。 とgeoip
国から発信または国に向かうトラフィックをブロックするモジュール。国の代わりに2文字のISO3166コードを使用する必要があります。たとえば、RU
を使用します ロシア連邦の場合、US
米国の場合、IN
インドの場合、BR
ブラジルなど。
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
カナダ(CA)および米国(US)からの着信トラフィックをブロックするには、次のiptables
を使用します コマンド:
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
サーバー上の米国以外のすべての着信トラフィックをブロックするには、次のコマンドを実行します。
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
中国(CN)宛ての発信トラフィックをブロックするには、次のコマンドを実行します。
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
systemd
を実行している場合 ベースのシステムであり、firewalld
があります iptables
のフロントエンドコントローラーとして 、次のfirewalld
を使用できます トラフィックをブロックするコマンド:
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc CA,US -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 CN -j DROP