# Scripts



# 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
```