Travaux Pratiques
Filtrage et NAT : scripts de contrôle

Copyright (C) 2012  Jean-Vincent Loddo
Licence Creative Commons Paternité - Partage à l’Identique 3.0 non transposé.

Séance de TP entièrement effectuée avec le logiciel Marionnet. Durée estimée : 2h - 2h30.
Prérequis.
Notions de routage, filtrage et NAT (SNAT et DNAT) et leur interdépendance. Savoir écrire de simples scripts shell.

Câblage et configuration du réseau local

Deux machines, m1 et m2 et un concentrateur H1 réalisent un réseau local LAN1 = {m1, m2} en 192.168.1.0 ⁄ 24. Deux autres machines m3 et m4 et un concentrateur H2 réalisent un réseau local LAN2 = {m3, m4} en 10.0.0.0 ⁄ 8. Un troisième réseau CAN1 (Campus Area Network) sera constitué d’une machine appelée intrus et d’une partie indéfinie (de niveau 2) représentée par le composant marionnet “nuage”. Une machine faisant office de routeur assurera la laison (de niveau 3) entre LAN1 (port 0), LAN2 (port 1) et CAN1 (port 2).
Distributions GNU/Linux.
Utilisez n’importe quelle distribution : il suffira de pouvoir lancer les commandes basiques de configuration et observation du réseau (ifconfig, route, tcpdump, ...)
Figure images/plan_avec_machine_routeur_firewall.png
Attribution des IP.
Par simplicité, la machine mi aura l’adresse 192.168.1.i ou 10.0.0.i selon le réseau d’appartenance. Le routeur routeur_firewall doit avoir son port 0 branché au LAN1 et configuré en 192.168.1.254. Concernant le réseau CAN1, la machine intrus prendra le 145.12.0.42, et le routeur prendra le 145.12.0.53 sur le port 2 (eth2).

Partie I. Routage et lancement des services

Configurer le routage sur la machine routeur_firewall et définissez-la comme passerelle pour toutes les autres machines du réseaux. Testez avec la commande ping que toutes les machines puissent communiquer avec toutes les autres.

Services à activer :

Partie II. Filtrage, SNAT et DNAT par script

Le but de cette partie est d’écrire un script sur routeur_firewall de façon à obtenir le comportement qui est habituellement désiré :
  1. routeur_firewall doit prêter son identité publique aux machines des réseaux privés, lorsque ces dernières “sortent” sur le réseau publique (SNAT, action MASQUERADE)
  2. l’extérieur, dont intrus, ne peut avoir accès, par son initiative, aux réseaux privés; l’extérieur peut juste répondre aux initiatives (filtrage, chaîne FORWARD, module state)
  3. le machines du réseaux privés, à l’occurrence m1 et m3, doivent pouvoir offrir des services à l’extérieur, sans que l’extérieur en suppose l’existence; routeur_firewall “fera semblant “ d’offrir ces services à l’extérieur (DNAT).
Écrire donc un scripts bash commençant par :
#!/bin/bash

EXTIF=eth2    # external interface
et contenant les fonctions suivantes :
function fw_start { .. }
function fw_stop  { .. }
function fw_open_port  { .. }
function fw_close_port { .. }
Complétez le script pour configurer routeur_firewall et vérifiez le résultat de votre configuration avec tcpdump ou wireshark.