Bloquer des adresses IP par pays avec IPTABLES

Si vous exposer une de vos machines sur Internet, il faudra la protéger. Si vous ne disposez pas d’infrastructure tel que Online ou OVH chez vous, il faudra utiliser toutes les ruses possibles. Vous aurez le choix d’une solution complète, fiable, simple, comme PFsense, ou alors un Linux de base, et donc de préférence, une Debian / Ubuntu, et bloquer des adresses IP par pays avec iptables… 🙂

Ras le bol de la pollution

Si vous jeter un œil parfois sur les journaux de votre firewall, vous avez du vous apercevoir que ceux-ci sont remplis de tentatives d’intrusions. Pour se débarrasser d’une grande partie de cette pollution, parfois, il suffit simplement de bloquer des adresses IP par pays avec iptables. En effet, les attaques proviennent généralement toujours des mêmes pays (Chine, Russie, Corée, Hong-Kong, etc…).
Pour ce faire, vous pouvez simplement utiliser un module de noyau pour iptables, appelé « xtables-addons ».

Installer le module xtables-addons

Sur Debian / Ubuntu, il est assez facile (comme assez souvent) d’installer ce module grâce à la commande apt-get.

Mettre à jour la base Maxmind

Ensuite, il faudra télécharger la base de données géographique Maxmind. Pour cela, il faudra connaitre l’emplacement de l’outil xt_geoip_dl. En effet, cela dépendra de la version de xtables-addons installée (actuellement, dans les dépôts Debian, la version 2.6 est packagée, alors que la version 2.10 est disponible sur Sourceforge https://sourceforge.net/projects/xtables-addons/files/).

Cela téléchargera donc la base Maxmind :

Il vous reste maintenant à construire les listes avec la commande suivante dans le même répertoire (il faut au préalable créer le répertoire qui les contiendra) :

Bloquer des adresses IP par pays avec iptables

Côté pratique, rien de plus simple, vous pourrez bloquer les IP venant de Chine, de Hong-Kong, de Corée, de Russie ou d’ailleurs :

Ou alors, tout simplement n’autoriser que les adresses IP de votre pays (dans notre cas, sur le port 22) :

Maintenant, il ne vous reste qu’à automatiser la mise à jour de la base de données Maxmind. Dans mon exemple, nous allons créer le script /etc/cront.monthly/0update_maxmind , afin que celui-ci soit exécuté une fois par mois :

N’oublier pas de le rendre exécutable :

Vous voilà prêt à jouer et à bloquer des adresses IP par pays avec iptables.

Références :
http://xtables-addons.sourceforge.net/geoip.php
https://room362.com/post/2016/blocking-countries-via-iptables/
https://www.internetstaff.com/frustrate-ssh-scanners-geoip-iptables-blocking/
https://www.linode.com/stackscripts/view/3807-jeffkyjin-ipp2p+filtering

A propos Mehdi HAMIDA

Moi en quelques mots: je m'appelle Mehdi, j'habite à Lyon, je suis chef de projet technique et papa geek. Je m’intéresse aux nouvelles technologies, à la publicité, la musique, à l’art en général et à la culture 2.0, ainsi qu’à tout ce qui a trait de près ou de loin à Internet : réseaux sociaux, webmarketing, le marketing viral et la veille stratégique.