Questo articolo descrive come bloccare il traffico proveniente da IP di paesi specifici, ad esempio utilizzando il database GeoIP e Linux® iptables. Puoi anche usarlo per prevenire attacchi DOS e DDoS provenienti da determinati paesi.
Prerequisiti
Assicurati che il modulo GeoIP sia installato con iptables-addons.
GeoIP è una raccolta di indirizzi IP corrispondenti alle posizioni geografiche mappate con gli indirizzi IP allocati per un'organizzazione, una città, uno stato e un paese specifici.
iptables
è un'utilità firewall della riga di comando che utilizza catene di criteri per consentire o bloccare il traffico. Quando una connessione tenta di stabilirsi sul tuo sistema, iptables cerca una regola di corrispondenza nel suo elenco. Se non lo trova, ricorre all'azione predefinita.
Inoltre, con l'aiuto di un modulo chiamato xt_geoip , che consiste in un iptables
estensione (xtables-addon ) e il GeoIP database, possiamo eseguire il filtraggio del traffico in base al paese per aiutare a bloccare o consentire il traffico da un paese specifico.
Aggiorna e installa le dipendenze
Devi aggiornare il tuo sistema Linux e installare le dipendenze xtables-addons richieste. Esegui il comando seguente che corrisponde alla distribuzione che stai eseguendo nella tua macchina.
Sistema basato su Debian (sistema operativo Debian®, Ubuntu®)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
Sistema basato su 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
Installa xtables-addons
Quindi, installa xtables-addons sulla tua macchina. Scarica l'ultimo tarball dal sito ufficiale del progetto xtables-addons usando wget
.
Dopo aver scaricato il file, estrai il tarball. Quindi compilalo e installalo nella tua macchina.
# 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
Consenti a SeLinux di caricare moduli (sistema basato su RedHat)
Le distribuzioni Linux basate su RedHat® (come CentOS, RHEL, Fedora) hanno selinux
abilitato per impostazione predefinita, ma devi modificare selinux
politica. Se non esegui i seguenti comandi, seLinux
impedisce iptables
dal caricamento di xt_geoip modulo.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Installa il database GeoIP
Il modulo chiamato xt_geoip viene fornito con gli componenti aggiuntivi di xtables estensione, che scarica il GeoIP databaseda MaxMind® e lo converte in una disposizione binaria riconosciuta da xt_geoip . Devi costruire e spostarti nel percorso richiesto. In questo esempio, il percorso è /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/
Blocca il traffico da e verso un paese
Ora puoi usare il geoip
modulo con il tuo programma di utilità del firewall, iptables
o firewalld
.
Utilizzo di Iptables
La sezione fornisce la sintassi di base per l'utilizzo di iptables
e il geoip
modulo per bloccare il traffico proveniente o destinato a un Paese. È necessario utilizzare il codice ISO3166 di due lettere al posto del paese. Ad esempio, usa RU
per la Federazione Russa, US
per gli Stati Uniti, IN
per l'India,BR
per il Brasile e così via.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
Per bloccare il traffico in entrata dal Canada (CA) e dagli Stati Uniti (USA), utilizza il seguente iptables
comando:
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
Per bloccare tutto il traffico in entrata non statunitense sul tuo server, esegui il comando seguente:
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Per bloccare il traffico in uscita destinato alla Cina (CN), eseguire il comando seguente:
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Utilizzo di firewalld
Se stai eseguendo systemd
sistema basato su firewalld
come controller frontend per iptables
, puoi utilizzare il seguente firewalld
comandi per bloccare il traffico:
# 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