Outils pour utilisateurs

Outils du site


linux:reseau:iptables

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 :

  • firewalld
  • webmin

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

  • Lister toutes les règles
$ iptables -L -n -v --line-numbers
  • Flush de toutes les règles
$ iptables -F
  • Supprimer toutes les règles utilisateur
$ iptables -X
  • Supprimer une règle
$ iptables -L -n -v --line-numbers
$ iptables -D input {line-number} 
  • Définir une règle par défaut
$ iptables -P INPUT DROP
$ iptables -P FORWARD DROP
$ iptables -P OUTPUT DROP

Règles de blocage

  • Bloquer une IP entrante
$ iptables -A INPUT -s aa.bb.cc.dd -j DROP
  • Bloquer l'accès à une URL
$ iptables -A OUTPUT -p tcp -d www.microsoft.com -j DROP
  • Bloquer les requêtes web entrantes
$ iptables -A input -p tcp --dport 80 -j DROP

Règles de filtrage

  • Autoriser le trafic entrant d'une connexion déjà établie
$ iptables -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT
  • Autoriser le ping depuis une adresse IP seulement
$ 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
  • Autoriser l'accès SSH depuis une adresse IP seulement
$ 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
  • Autoriser les requêtes DNS
$ iptables -A OUTPUT -p udp -o eth0 -dport 53 -sport 1024:65535 -j ACCEPT
  • Autoriser les connections sortantes HTTP et HTTPS pour les ports TCP classiques
$ 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
  • Translation d'adresse NAT (Port forward)

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

  • Journaliser tout le trafic rejeté
$ 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.

  • Sauvegarder les règles
$ iptables-save > /etc/iptables/iptables.rules
  • Restauration des règles

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

$ iptables-restore < /etc/iptables/iptables.rules
linux/reseau/iptables.txt · Dernière modification : 2022/07/01 16:30 de zandor