Mise en place d’un NAT avec filtrage IP et redirection

Chapitre Progression:

Ici, nous allons suivre le schéma suivi et le flux réseau correspondant :

I. Explication du contexte

Dans cette architecture, qui peut être reproduite via des machines virtuelles. Nous aurons trois machines :

  • Un serveur Linux faisant office de Routeur qui séparera le LAN du WAN. Il disposera donc de deux interfaces ainsi que de NFtables pour effectuer du NAT source unidirectionnel et diverses opérations de filtrage
  • Un serveur web, dans le LAN. Celui-ci fera tourner son service web sur le port 80.
  • Un client qui aura seulement besoin d'aller sur le web (DNS, HTTP, HTTPS), dans le LAN également.

Un petit indice : Rappelez-vous du rôle du hook "FORWARD" vu dans le module sur le fonctionnement de NetFilter 😉

II. Attention ! Voila le corrigé

Voici maintenant le corrigé que je vous propose pour cet exercice :

table ip mon_filtreIPv4 {
                chain prerouting {
                               type nat hook prerouting priority 0;
                               iif eth0 tcp dport http dnat 192.168.240.131 # handle 96
                }
 
                chain postrouting {
                               type nat hook postrouting priority 0;
                               ip saddr 192.168.240.0/24 oif eth0 snat 192.168.10.135 # handle 103
                }

                chain forward {
                               type filter hook forward priority 0;
                               ct state established,related accept # handle 97
                               tcp dport http accept # handle 98
                               ip saddr 192.168.240.131 tcp sport http accept # handle 99
                               tcp dport https accept # handle 100
                               udp dport domain accept # handle 101
                               drop # handle 102
                }
}

Comme vous pouvez le voir, nous avons utilisé une nouvelle chaine, dont je vous avais parlé dans les tout premiers chapitres du cours, la chaine "forward" liée au Hook du même nom.

Lors du chapitre sur le NAT, j'ai bien mis en évidence le fait qu'il fallait utiliser les Hook PREROUTING et POSTROUTING pour effectuer le NAT. Cependant entre ces deux Hooks se situe "FORWARD", un Hook qui est utilisé pour effectuer des actions de filtrages sur les paquets ne passant pas par les Hook INPUT et OUPUT qui eux gèrent les entrées et sorties de la couche applicative de la machine en elle-même. Cet exercice est donc l'occasion d'utiliser ce Hook.

La partie NAT reprend sensiblement ce qui est exposé dans le cours associé. Dans la chaine "postrouting", on va effectuer notre source NAT, c’est-à-dire que l'on va remplacer, dans les paquets qui quittent le LAN, l'IP source par l'IP de l'interface de sortie de notre routeur (l'IP coté WAN). Il faut donc adapter le nom de l'interface et l'IP de sortie à votre contexte.

Sur la chaine "prerouting", nous mettons en place notre destination NAT, tout ce qui va arriver sur le port 80 de l'interface WAN sera redirigé sur un IP interne au LAN, rendant ainsi le serveur web accessible sur le WAN (uniquement pour le port 80, http).

Dans la chain forward, nous allons autoriser principalement les paquets en sortie. La sécurité aurait pu être améliorée en précisant à chaque fois qu'elles doivent être les IP (ou la plage IP) autorisée à sortir.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

    Mickael Dorigny

    Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

      mickael has 502 posts and counting.See all posts by mickael