Iptables sert à gérer les requêtes clientes qui dialogue avec la machine. Le projet est disponible à chez Netfilter.
Les fichiers de configuration se situe dans :
/proc/sys/net/
N'oublions pas les bonnes méthodes de sauvegarde :
iptables-save > backup.txt iptables-restaure < backup.txt
Le pare-feu est couramment en amont d'un réseau privé dont-il contient de nombreuses règles. Pour éviter de se perdre, il est recommandé de ce concevoir un tableau à double dimensions répertoriant tous les flux de communications entre les serveurs sans oublier les voies de retour.
iptables <commande> <chaîne> <type> <critères> <action>
Commandes :
Chaînes :
Type :
Critères :
Action :
Les commandes ci-dessous sont courante sur un routeur. On prend l'exemple pour une connexion à un serveur SSH:
iptables -A FORWARD --m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -s <ip_source> -d <ip_destination> --dport 22 --syn -m state --state NEW -j ACCEPT
ou :
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
On n'oublie pas d'activer le routage :
echo 1 > /proc/sys/net/ipv4/ip_forward
Les commandes ci-dessous sont utilisé lors d'une communication directe au serveur:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -s <ip_source> -d <ip_destination> --dport 22 --syn -m state --state NEW -j ACCEPT
iptables -D INPUT -i eth0 -p tcp --dport 80 -j DROP
On utilise ici -D car par défaut on bloque toutes les requêtes.
iptables -A INPUT -s 192.168.0.1 -j DROP iptables -A INPUT --src-range 192.168.1.90-192.168.1.101 -j DROP
iptables -D INPUT -i eth1 -p icmp -j DROP
On utilise ici -D car par défaut on bloque toutes les requêtes.
iptables -t nat -A PREROUTING -p tcp --dport 80 -i <interface_local?> -j DNAT --to 192.168.2.2 192.168.2.3
iptables -P FORWARD DROP iptables -P OUTPUT DROP iptables -P INPUT DROP
iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A FORWARD -m tcp -p tcp -s 192.168.1.0/24 -d 10.0.0.5 --dport 25 -m state --state NEW --syn -j ACCEPT
iptables -t nat -A PREROUTING -d 192.168.10.1 -m tcp -p tcp --dport 25 -j DNAT --to-destination 10.0.0.5
Sinon :
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A INPUT -m state ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT sudo iptables -A INPUT -j LOG logprefix "iptables denied: " loglevel 7 sudo iptables -P INPUT DROP
# pour autoriser local->destination:143 iptables -A INPUT -p tcp --sport 143 -j ACCEPT
1. Télécharger la plage d'IPs au format CIDR : https://www.ip2location.com/free/visitor-blocker
2. L'envoyer sur le serveur en excluant les commentaires et en mettant au format iptable:
for i in $( cat firewall-pays1.txt |grep -v "#" ) ; do echo "-A INPUT -s $i -j DROP "; done >> /root/iptable.save for i in $( cat firewall-pays2.txt |grep -v "#" ) ; do echo "-A INPUT -s $i -j DROP "; done >> /root/iptable.save
3. Déplacer les argupments COMMIT au bon endroit dans le fichier puis charger la configuration :
iptables-restore < /root/iptable.save
Pour cela, il faut utiliser ce paquet : fwlogwatch