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