Tento článek popisuje, jak blokovat provoz pocházející z IP adres konkrétní země, například pomocí databáze GeoIP a Linux® iptables. Můžete jej také použít k zabránění útokům DOS a DDoS pocházejícím z určitých zemí.
Předpoklady
Ujistěte se, že je modul GeoIP nainstalován s iptables-addons.
GeoIP je sbírka IP adres odpovídajících zeměpisným polohám mapovaným s IP adresami přidělenými pro konkrétní organizaci, město, stát a zemi.
iptables
je nástroj brány firewall příkazového řádku, který používá řetězce zásad k povolení nebo blokování provozu. Když se připojení pokusí navázat na vašem systému, iptables hledá ve svém seznamu odpovídající pravidlo. Pokud žádný nenajde, uchýlí se k výchozí akci.
Také pomocí modulu s názvem xt_geoip , který se skládá z iptables
rozšíření (xtables-addon ) a GeoIP databáze, můžeme provádět filtrování provozu podle země, abychom pomohli zablokovat nebo povolit provoz z konkrétní země.
Upgrade a instalace závislostí
Musíte upgradovat svůj systém Linux a nainstalovat požadované závislosti xtables-addons. Spusťte následující příkaz, který odpovídá distribuci, kterou na svém počítači používáte.
Systém založený na Debianu (operační systém Debian®, Ubuntu®)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
Systém založený na 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
Instalovat xtables-addons
Dále nainstalujte xtables-addons na vašem stroji. Stáhněte si nejnovější tarball z oficiální stránky projektu xtables-addons pomocí wget
.
Po stažení souboru extrahujte tarball. Poté jej zkompilujte a nainstalujte do svého počítače.
# 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
Povolit SeLinuxu načítání modulů (systém založený na RedHat)
Linuxové distribuce založené na RedHat® (jako CentOS, RHEL, Fedora) mají selinux
ve výchozím nastavení povoleno, ale musíte upravit selinux
politika. Pokud nespustíte následující příkazy, seLinux
zabraňuje iptables
z načtení xt_geoip modul.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Instalace databáze GeoIP
Modul s názvem xt_geoip přichází s doplňky xtables rozšíření, které stáhne GeoIP databáze z MaxMind® a převede ji do binárního uspořádání, které rozpozná xt_geoip . Musíte postavit a přesunout se na požadovanou cestu. V tomto příkladu je cesta /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/
Blokovat provoz do a ze země
Nyní můžete použít geoip
modul s vaším programem firewallu, iptables
nebo firewalld
.
Použití Iptables
Tato část poskytuje základní syntaxi pro použití iptables
a geoip
modul pro blokování provozu pocházejícího z nebo směřujícího do země. Místo země musíte použít dvoupísmenný kód ISO3166. Použijte například RU
pro Ruskou federaci, US
pro Spojené státy, IN
pro Indii,BR
pro Brazílii a tak dále.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
Chcete-li blokovat příchozí provoz z Kanady (CA) a Spojených států (USA), použijte následující iptables
příkaz:
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
Chcete-li na svém serveru zablokovat veškerý příchozí provoz mimo USA, spusťte následující příkaz:
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Chcete-li zablokovat odchozí provoz směřující do Číny (CN), spusťte následující příkaz:
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Používání brány firewall
Pokud používáte systemd
-založený systém a mají firewalld
jako frontendový ovladač pro iptables
,můžete použít následující firewalld
příkazy k blokování provozu:
# 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