User Tools

Site Tools


informatique:linux:netfilter

This is an old revision of the document!


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
  1. -sport port source
  2. -dport port destination
  3. -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).

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.1252707023.txt.gz · Last modified: 2021/05/29 10:09 (external edit)