Table des matières

Linux

Firewall iptables


iptables est un ensemble de commandes permettant de configurer le module Netfilter, qui intercepte et manipule les paquets IP avant et après le routage.

Le module Netfilter peut également être administré graphiquement depuis :

iptables cheat sheet Download

Notes :

  1. All rules are processed from top to down. Once a rule is matched, the rest will be ignored.
  2. Never run iptables -F if the default rules are DROP or your system will be inaccessible. If possible, set the default rule to ACCEPT and add iptables -A INPUT -j DROP at the end.

Installer iptables

$ sudo apt-get install iptables

Démarrer le service iptables

$ service iptables start

Pour que iptables soit lancé par défaut au démarrage du système, on change le statut du niveau d'exécution :

$ chkconfig -level 345 iptables on


Définir des règles de filtrage

$ iptables -L -n -v --line-numbers
$ iptables -F
$ iptables -X
$ iptables -L -n -v --line-numbers
$ iptables -D input {line-number} 
$ iptables -P INPUT DROP
$ iptables -P FORWARD DROP
$ iptables -P OUTPUT DROP

Règles de blocage

$ iptables -A INPUT -s aa.bb.cc.dd -j DROP
$ iptables -A OUTPUT -p tcp -d www.microsoft.com -j DROP
$ iptables -A input -p tcp --dport 80 -j DROP

Règles de filtrage

$ iptables -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A INPUT -s 1.2.3.0/24   -p icmp --icmp-type echo-request -j ACCEPT
$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
$ iptables -A INPUT -s 1.2.3.0/24   -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j DROP
$ iptables -A OUTPUT -p udp -o eth0 -dport 53 -sport 1024:65535 -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --dport 80 --sport 1024:65535 -j ACCEPT
$ iptables -A OUTPUT -o eth0 -p tcp --dport 443 --sport 1024:65535 -j ACCEPT

Transférer tout le trafic entrant vers le port 22 du serveur aa.bb.cc.dd:22

$ iptables -t nat -A PREROUTING -I eth0 -p tcp --dport 1022 -j DNAT --to aa.bb.cc.dd:22
$ iptables -A FORWARD -p tcp -d aa.bb.cc.dd -dport 22 -m state --state NEW,ESTABLISH -j ACCEPT

Journalisation

$ iptables -N LOGnDROP
$ iptables -A LOGnDROP -j LOG --log-prefix 'DROP_LOG :'
$ iptables -A LOGnDROP -j DROP


Sauvegarde et restauration des règles iptables

Les règles créées avec iptables ne sont pas durables et ne valent que jusqu’à ce que votre ordinateur ne s’éteigne. Il est recommandé d’utiliser iptables-save pour sauvegarder vos paramètres sous forme de document “.rules” dans les fichiers d’iptables.

$ iptables-save > /etc/iptables/iptables.rules

(à placer, de préférence, dans un script lancé au démarrage du système)

$ iptables-restore < /etc/iptables/iptables.rules