3.5 KiB
title | date | tags | categories | ||||
---|---|---|---|---|---|---|---|
Administration réseaux : Le NAT | 2022-02-07 |
|
|
Historique
- 1990 ipfwadm: creation des tables
INPUT
,OUTOUT
,FORWARD
. Support de TCP, UDP et ICMP. - ipchains: evolution de ipfwadm, ajout du supportd'
IP
et des chaines. Les paquets pouvaient passer plusieurs fois par les tables lors du NAT - 2004 iptables: ajout des tables
filter
,nat
,mangle
- 2012 nftables: supression des commandes satellites (gestion de l'arp). Ajout de flexibilité (creation de tables, regles avec plusieurs actions ...)
- now BPF: machine virtuelle dans le noyau pour gérerle filtrage
IPTable
table
Regroupement de règles ayant un but commun: filter pour le filtrage, nat pour la translation d'adresses et mangle pour le marquage de paquets:
- filter
- OUTPUT
- INPUT
- NAT
- nat
- POSTROURING
- PREROUTING
- OUTPUT
La translation d'adresse
Dans le cas du NAT statique
# paquet sortant
# On fait la modification du paquet le plus tard possible
iptables -t nat -A POSTROUTING -s <@A> -j SNAT --to-source <@P>
# paquet entrant
# On fait la modification le plus tot possible
iptables -t nat -A PREROUTING -d <@P>-j DNAT --to-destination <@A>
Dans le cadre du NAT dynamique
# Paquets sortants
iptables -t nat -A POSTROUTING -s <@Net_priv> -o eth1 -j MASQUERADE
Il est possible de faire plusieurs commande MASQUERADE
si l'on a plusieurs
sorties et plusieurs réseau interne par exemple
Maitenant si on veut rendre une machne accessible de l'exterieur sur le port 80 par exemple :
iptables -t nat-A PREROUTING -p tcp --dport 80 -d<@IP_gateway> -j DNAT --to <@>
Le pare-feu
Premiere ligne de defense de notre infrastructure. Philosophie generale: ce qui vient de l'exterieur n'est pas de confiance, ce qui sort de notre reseau l'est.
Les services accessibles depuis l'exterieurs (serveur web par ex.) sont positionnés dans une DMZ.
Les polices par defaut d'iptable
- ACCEPT
- DROP
- REJECT
On preferera utiliser DROP
que REJECT
: non seulement on donne des
information sur la machine, mais en plus on consomme de la ressource (trame ICMP
envoyee en retour).
technique avancée
Il est possible de limiter les connexions vers le serveur web à 10 par minutes
iptables -A FORWARD -p tcp --dport 80 -d <@srv_web> -m limit --limit 10/m -j
ACCEPT
Il est aussi possible de filtrer les paquets en fonction de leur état. Via le
tuple <@source, @destination, src_port, dest_port>
le pare-feu est en mesure
de stocker l'état de la connexion. Elle peut être de 3 formes:
- NEW (paquet
SYN
reçu du client) - ESTABLISHED (
SYN + ACK
complet -- poignée de main terminée) - RELATED (connexion relative à une déjà établie)
- INVALID
# autoriser les nouvelles connexions en HTTP
iptables -A FORWARD -p tcp --dport 80 -d <@srv_web> -m state --state NEW, ESTABLISHED
# On peut factoriser tous les established, on ne peut de toutes manière pas
# passer en ESTABLISHED dans passer avant par un NEW
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
INVALID: le cas du scan de port
Une premiere facon de faire du scan avec la methodedu SYNScan
: on envoie des
syn sur un ensemblede ports.
Il est aussi possile de faire du NULLScan
: On envoie un segment TCP avec tous
les champs mis à null
Si le port est ouvert alors il n'y aura pas de reponse,
S'il est ferme, le serveur renvoie un RST-ACK
INVALID
permet donc de gérer le cas du NullScan
explicitement.