M1 Réseaux Informatique et Applications Administration Réseaux Travaux Pratique n 2 : Firewall Auteurs : Professeur : Patrick Guterl A rendre pour le Mardi 27 Mars 2007
Chapitre : / Préliminaires Préliminaires Le but de ce TP est d arriver à la configuration suivante : Pour ce faire, un groupe de deux étudiants s occupera d un PC firewall et d un poste de travail PC. Une autre station de travail se trouvera dans le réseau local protégé par le firewall. Construction de la maquette Avant de se déconnecter du réseau il faut : Modifier le fichier /etc/hosts des postes et ajouter sur la ligne 127.0.0.1 le nom de la station Construire la maquette d après le schéma ci-dessus en utilisant l adressage statique pour les interfaces ethx Configuration du PC_SERV ifconfig eth1 192.168.10.1 netmask 255.255.255.0 On modifie la route par default pour utiliser le FW comme passerelle. route add -net 192.168.10.0/24 gw 192.168.10.254 Configuration du PC ifconfig eth1 192.168.20.1 netmask 255.255.255.0 route add -net 192.168.20.0/24 gw 192.168.20.254 2
Chapitre : / Préliminaires Configuration du FW ifconfig eth1 192.168.10.254 netmask 255.255.255.0 ifconfig eth2 192.168.20.254 netmask 255.255.255.0 Activer le mode forward sur le firewall echo "1" > /proc/sys/net/ipv4/ip_forward Vérifier la connectivité entre le poste PC et PC_SERV PC $ ping 192.168.10.1 Réponse de 192.168.10.1 : octets=32 temps<1ms TTL=64 Réponse de 192.168.10.1 : octets=32 temps<1ms TTL=64 Réponse de 192.168.10.1 : octets=32 temps<1ms TTL=64 Réponse de 192.168.10.1 : octets=32 temps<1ms TTL=64 Statistiques Ping pour 192.168.10.1: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 0ms, Maximum = 0ms, Moyenne = 0ms On utilisera l outil iptables-save et iptables-restore pour la gestion de règles 3
I. Expérimentation A. Règles de filtrage Premièrement nous réinitialisons toutes les règles existantes en vidant toutes les tables : iptables -t filter -F iptables -t nat -F iptables -t mangle -F Ensuite, nous appliquons les règles de priorités par default pour la protection du réseau local, nous la règlerons à DROP pour tout sauf pour la sortie (OUTPUT) iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT ACCEPT iptables -t filter -P FORWARD DROP 1. Fonctionnement de REJECT et DROP Le mode de fonctionnement de REJECT permet en plus de la destruction du paquet, d afficher un message d erreur sur sa destruction. Tandis que DROP effectue la même action au niveau physique, il ne génère lui aucun message d erreur et détruit le paquet en silence. Pour autoriser un accès ssh sur PC_SERV d à partir de PC, il faut insérer la règle suivante : -i eth1 -o eth0 -p tcp -s 192.168.10.1 -d 192.168.20.1 --dport 22 -j REJECT 2. Autorisation du Ping (extérieur vers LAN) -i eth1 o eth0 -p icmp -s 192.168.10.0/24 -d 192.168.20.0/24 -i eth0 -o eth1 -p icmp -s 192.168.20./24 -d 192.168.10.0/24 4
3. Journalisation des événements Pour journaliser les événements il faut se servir de la règle LOG d iptables. Cette fonction possède plusieurs degrés de journalisation correspondant aux différents niveaux du démon SYSLOG. LOG_EMERG Le système est inutilisable. LOG_ALERT Des actions doivent être entreprises immédiatement. LOG_CRIT Les conditions sont critiques. LOG_ERR Des erreurs se produisent. LOG_WARNING Des avertissements se présentent. LOG_NOTICE Condition normale, mais message significatif. LOG_INFO Message d'information simple. LOG_DEBUG Message de debugging. Ici nous utiliserons le niveau notice. De plus pour plus de personnalisations des logs il y a diverses autres options qui permettent une meilleure visualisation : --log-prefix [prefix] : affichera [prefix] devant chaque ligne du fichier de log --log-tcp-sequence : affichera les numéros de séquence tcp dans le fichier de log --log-tcp-option : affichera les flags tcp du paquet --log-ip-option : affichera les options ip du paquet -j LOG --log-level notice 4. Accès SSH au service SSH (extérieur vers PC_SERV) -i eth1 -o eth0 -p tcp -s 0.0.0.0/0 -d 192.168.20.1 --dport 22 -i eth0 -o eth1 -p tcp -s 192.168.20.1 -d 0.0.0.0/0 --sport 22 5
5. Accès au service FTP (extérieur vers PC_SERV) Tout d abord, il faut créer un utilisateur sur PC_SERV pour que l utilisateur puisse s authentifier sur le serveur. Ensuite une chose à savoir sur le protocole FTP est que le port associé au service FTP est le 21. Cependant, lors de l envoie de données en mode actif (DATA), le serveur initialise une connexion avec le client sur son port 20. Il y a 2 ports à ouvrir : le 21 et le 20. -i eth1 -o eth0 -p tcp -s 0.0.0.0/0 -d 192.168.20.1 --dport 21 -m state state NEW,ESTABLISHED -i eth0 -o eth1 -p tcp -s 192.168.20.1 -d 0.0.0.0/0 --sport 21 -m state state ESTABLISHED -i eth1 -o eth0 -p tcp -s 0.0.0.0/0 -d 192.168.210.1 --dport 20 -m state state ESTABLISHED -i eth0 -o eth1 -p tcp -s 192.168.20.1 -d 0.0.0.0/0 --sport 20 -m state state ESTABLISHED,RELATED 6. Correction des problèmes du mode PASV : ip_conntrack _ftp Le problème qui se pose lors d une connexion active est que c est le client qui se trouve à l initiative d une connexion supplémentaire pour les données. Le port annoncé par le client se trouvant dans le contenu applicatif du paquet (via la commande PORT), le serveur initialisera une connexion de son port 20 vers celui annoncé par le client. Il faut ajouter un module à iptables pour récupérer le port de la commande PORT et ainsi classer la connexion ftp-data en RELATED et nous n aurons pas besoin de l état NEW. Chargement du module ip_conntrack_ftp : modprobe ip_conntrack_ftp On vérifie sa présence grâce à la commande : lsmod grep ip_conntrack_ftp 6
On vérifie son bon fonctionnement grâce à la commande : cat /proc/net/ip_conntrack B. Règles de NAT 1. Nat du service ssh du serveur (extérieur vers PC_SERV :22) Le NAT sert à masque un réseau local et donc ses serveurs avec leurs services une ou plusieurs adresses publiques. Ici l adresse publique sera celle située à l extérieur du LAN et donc celle correspondant à l interface eth1 du Firewall. iptables -t nat -A PREROUTING -i eth1 o eth0 -p tcp -s 0.0.0.0/0 -d 192.168.10.254/24 --dport 22 -m state --state! INVALID -j DNAT --to-destination 192.168.20.1:22 2. Nat du service http (80) du serveur(8080) (extérieur vers PC_SERV :8080) iptables -t nat -A PREROUTING -i eth1 o eth0 -p tcp -s 0.0.0.0/0 -d 192.168.10.254/24 --dport 80 -m state --state! INVALID -j DNAT --to-destination 192.168.20.1:8080 7
C. Question subsidiaire La fonction masquerade n'a pas été utilisée. La mascarade est une translation d'adresses qui permet de partager, vis-à-vis de l'extérieur, une seule adresse IP externe (celle du firewall) entre plusieurs machines internes. Dans notre cas, on ne s'occupe pas de partage d adresses externes. 8