informatique:linux:netfilter
This is an old revision of the document!
Table of Contents
sécurité firewall iptables
Netfilter
Netfilter est le firewall intégré au noyau Linux. Il s'utilise avec la commande iptables
(ex ipchains
).
Principe
Les options
- Standarts
Option : Description : -A Append (ajoute) -D Delete (efface) -I Insert (insère) -R Replace (remplace) -L List (liste) -F Efface toutes les règles dans la ou les chaînes -Z Remet les compteurs à zéro dans une ou plusieurs chaînes -C Teste ce paquet sur une chaîne -N Crée une chaîne définie par l'utilisateur -X Efface une chaîne définie par l'utilisateur -P Change le comportement d'une chaîne sur une cible -E Change le nom d'une chaîne -p Protocole (tcp, udp, ...) -s Adresse/masque de source (ex: 192.168.0.0/24) -d Adresse/masque de destination -i Interface réseau d'entrée (nom ethernet) -o Interface réseau de sortie (nom ethernet) -j Jump - Saute (cible de règle) -m Correspondance étendue (peut utiliser des extensions) -n Sortie numérique de ports et d'adresses -t Table à manipuler -v Mode bavard -x Vérifications étendues (affiche les valeurs exactes) -f Prends uniquement en compte le second fragment ou ceux d'après -V Version du paquet --line-numbers Affiche les numéros de ligne
- Liées aux modules
- -sport port source
- -dport port destination
- -icmp-type identifie un paquet ICMP (echo-reply echo-request)
Les extensions
Module Description Options étendues mac Vérifie que l'extension correspond pour les paquets entrants sur une adresse mac. --mac-source state Active l'inspection des états --state (les états sont ESTABLISHED,RELATED, INVALID, NEW) limit Définit une limite sur le flux --limit, --limit-burst owner Essaie de trouver des correspondances dans le créateur du paquet --uid-owner userid --gid-owner groupid --pid-owner processid --sid-owner sessionid unclean Plusieurs tests de vérification aléatoires du bon état des paquets
Redirection
Exemple de redirection du trafic HTTP vers un serveur mandataire (port 3128) :
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to proxyhost:3128 iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to proxyhost:3128
Exemples
- Accepter les paquets tcp d'une session déjà ouverte ou liée à une session ouverte (à mettre en premier pour des raisons de performance)
iptables -I INPUT 1 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
- Ouvrir les ports TCP 137 à 139 aux machine du LAN 192.168.0.0/24 (ajout de la règle en dernier)
iptables -A INPUT -t tcp -s 192.168.0.0/24 --dport 137:139
- ouvrir les ports clients (>1024)
iptables -A INPUT -p tcp -sport 1024: -j ACCEPT
- Ajoute en première position de la table INPUT :
iptables -I INPUT 1 -p tcp --dport 1165 -j ACCEPT
On accepte les paquets tcp à destination du port 1165
- Lister les règles en place [dans la table INPUT uniquement] :
iptables -L [INPUT] -n
On peut utiliser l'option -v pour un mode plus verbeux (affiche les connexions actives).
- effacer toutes les règles iptables
iptables -F iptables -X
Divers
Table de sessions
Pour récupérer la table des sessions ouvertes :
cat /proc/net/ip_conntrack
conntrack
Conntrack est un logiciel qui permet de récupérer et modifier la table de sessions ouvertes depuis l'espace utilisateur.
Pour supprimer une session :
conntrack -D -s 82.134.19.16 -d 192.168.2.1 -p tcp --orig-port-src 22 --orig-port-dst 55098
Classer les logs iptables dans un seul fichier, sans doublon
Pour centraliser les logs iptables dans un seul et unique fichier de configuration il faut procéder en plusieurs étapes :
- dans le script iptables, logger les DROP (ici tout le TCP) avec un préfix reconnaissable, grâce à la directive :
iptables -A INPUT -p tcp -j LOG --log-prefix "iptables DROP: "
- récupérer ces logs avec rsyslog, les mettre dans le fichier /var/log/iptable_all.log et les supprimer ensuite pour qu'ils n'aille pas “polluer” d'autres fichiers de log. Dans
/etc/rsyslog.conf
:
:msg,startswith,"iptables DROP: " -/var/log/iptables_all.log & ~ # supprimer les messages qui ont matché la dernière ligne
source (entre autres)
informatique/linux/netfilter.1255337702.txt.gz · Last modified: 2013/10/14 20:54 (external edit)