Cet article décrit comment bloquer le trafic provenant d'adresses IP de pays spécifiques, par exemple en utilisant la base de données GeoIP et les iptables Linux®. Vous pouvez également l'utiliser pour empêcher les attaques DOS et DDoS provenant de certains pays.
Prérequis
Assurez-vous que le module GeoIP est installé avec iptables-addons.
GeoIP est une collection d'adresses IP correspondant aux emplacements géographiques mappés avec les adresses IP attribuées pour une organisation, une ville, un état et un pays spécifiques.
iptables
est un utilitaire de pare-feu en ligne de commande qui utilise des chaînes de stratégie pour autoriser ou bloquer le trafic. Lorsqu'une connexion tente de s'établir sur votre système, iptables recherche une règle correspondante dans sa liste. S'il n'en trouve pas, il recourt à l'action par défaut.
Aussi, à l'aide d'un module appelé xt_geoip , qui consiste en un iptables
extension (xtables-addon ) et le GeoIP base de données, nous pouvons effectuer un filtrage du trafic basé sur le pays pour aider à bloquer ou autoriser le trafic en provenance d'un pays spécifique.
Dépendances de mise à niveau et d'installation
Vous devez mettre à niveau votre système Linux et installer les dépendances xtables-addons requises. Exécutez la commande suivante qui correspond à la distribution que vous exécutez sur votre machine.
Système basé sur Debian (système d'exploitation Debian®, Ubuntu®)
apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config# ./configure
Système basé sur 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
Installer xtables-addons
Ensuite, installez xtables-addons sur votre appareil. Téléchargez la dernière archive tar depuis le site officiel du projet xtables-addons en utilisant wget
.
Après avoir téléchargé le fichier, extrayez l'archive tar. Ensuite, compilez-le et installez-le sur votre machine.
# 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
Autoriser SeLinux à charger des modules (système basé sur RedHat)
Les distributions Linux basées sur RedHat® (telles que CentOS, RHEL, Fedora) ont selinux
activé par défaut, mais vous devez ajuster le selinux
politique. Si vous n'exécutez pas les commandes suivantes, seLinux
empêche iptables
depuis le chargement de xt_geoip module.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Installer la base de données GeoIP
Le module nommé xt_geoip est livré avec les xtables-addons extension, qui télécharge le GeoIP base de données de MaxMind® et la convertit en un arrangement binaire reconnu par xt_geoip . Vous devez créer et déplacer vers le chemin requis. Dans cet exemple, le chemin est /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/
Bloquer le trafic vers et depuis un pays
Vous pouvez maintenant utiliser le geoip
module avec soit votre programme d'utilitaires de pare-feu, iptables
, ou firewalld
.
Utiliser Iptables
La section fournit la syntaxe de base pour utiliser iptables
et le geoip
module pour bloquer le trafic en provenance ou à destination d'un pays. Vous devez utiliser le code ISO3166 à deux lettres à la place du pays. Par exemple, utilisez RU
pour la Fédération de Russie, US
pour les États-Unis, IN
pour l'Inde,BR
pour le Brésil, etc.
# iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
Pour bloquer le trafic entrant en provenance du Canada (CA) et des États-Unis (US), utilisez les iptables
suivants commande :
# iptables -I INPUT -m geoip --src-cc CA,US -j DROP
Pour bloquer tout le trafic non américain entrant sur votre serveur, exécutez la commande suivante :
# iptables -I INPUT -m geoip ! --src-cc US -j DROP
Pour bloquer le trafic sortant destiné à la Chine (CN), exécutez la commande suivante :
# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
Utilisation de firewalld
Si vous utilisez systemd
- et ont firewalld
en tant que contrôleur frontal pour iptables
, vous pouvez utiliser le firewalld
suivant commandes pour bloquer le trafic :
# 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