Skip to main content

Blocage manuel d'un IP avec firewalld-cmd ou iptables

Bloquer l'IP en l'ajoutant à une règle avec reject. Nécessite le rechargement de firewalld. On peut utiliser un petit script comme ci-dessous pour aller plus vite :

#!/bin/bash
# Usage: sh block.sh IP_ADDRESS
firewall-cmd --add-rich-rule="rule family=ipv4 source address=$1 reject" --permanent
firewall-cmd --reload

Pour débloquer une IP :

firewall-cmd --remove-rich-rule='rule family=ipv4 source address=x.x.x.x reject' --permanent

Par iptables, c'est plus direct :

iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP

Soit un script de ce genre-là :

#!/bin/bash
# Usage: sh block.sh IP_ADDRESS
iptables -I INPUT -s $1 -j DROP

qui pourra être utilisé avec une liste d'IP, par exemple en cas de DOS, si on arrive à extraire un motif des logs :

cat /var/log/httpd/domains/unsiteweb.fr.log | grep <motif à filtrer> | awk '{print $1}' | sort  | uniq | xargs block.sh
   # $1 étant l'adresse IP dans le log web listé par cat

ou, pour limiter le blocage à certains services :

iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 80 -j DROP
iptables -I INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 443 -j DROP

Pour débloquer, lister les blocages et indiquer la ligne à supprimer :

iptables -L INPUT -v -n --line-numbers | grep DROP
iptables -D INPUT numero-de-la-regle