logo rss

Comment bloquer des adresses IP depuis une blacklist avec netfilter - PeerBlock sous GNU/Linux

Ce document montre comment utiliser le firewall netfilter en vue de bloquer des ips à l'aide d'une blacklist contenues dans un fichier texte, un peu comme le fait PeerBlock sous Windows.

Préambule

Environnement

  • OS : Arch Linux
  • iptables : 1.4.20

Commandes

Télécharger une liste d'ips à bloquer

On pourra prendre par exemple la liste PrimaryThreats présente sur le site http://tbg.iblocklist.com (semble ne plus fonctionner) ou la http://list.iblocklist.com. Il faudra ensuite dézipper et reformater le fichier pour qu'il soit exploitable via la commande iptables

  • On dézippe le fichier :
root@host:~# unzip fichier.zip
  • On formate la liste pour qu'elle puisse être exploitable :
root@host:~# cut -d ":" -f2 PrimaryThreats.txt > PrimaryThreats_V2.txt
root@host:~# sed -i 's/\x0D$/ /' PrimaryThreats_V2.txt
  • On ajoute les ips blacklistées au firewall netfilter :
root@host:~# for i in `cat PrimaryThreats_V2.txt` ; do echo "$i"; iptables -I INPUT -m iprange --src-range "$i" -j DROP; done
  • On pourra ajouter les règles suivantes pour éviter à notre machine de parcourir toutes les règles pour le trafic standard :
root@host:~# iptables -I INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
root@host:~# iptables -I INPUT -p tcp -m multiport --sports 80,443,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
root@host:~# iptables -I INPUT -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
  • On pourra contrôler l'efficacité du filtre en visualisant les ips qui ont été bloquées par netfilter :
root@host:~# iptables -L -n -v | tr -s " " | grep -v "^ 0"
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact