Étude de cas Sécurité des réseaux Xavier Skapin xavier.skapin@univ-poitiers.fr 28-29 Correction Montage de l architecture L objectif de cette étude est de monter une architecture sécurisée selon divers paramètres et de déterminer les règles de pare-feu associées. Vous disposez de PC, de switchs et d un pare-feu. Les services Web à faire fonctionner sont HTTP, FTP, SMTP, DNS, DHCP et un Proxy Web utilisé par les machines du réseau local pour aller sur Internet. De plus, il faudra installer un serveur de supervision Nagios et un serveur de test/détection d attaques Snort. On suppose que les switchs ont des fonctionnalités de VLAN. Il faudra donc définir un réseau séparé en plusieurs parties : le réseau local, la DMZ et le réseau extérieur. Question. Indiquez dans quelles parties du réseau vous placerez les serveurs et les machines locales. DMZ : proxy Web (Squid) + serveur HTTP + serveur FTP + serveur SMTP + Snort Réseau interne : DNS + DHCP + Nagios Question 2. Quelles sont les classes d adresses à utiliser pour les VLAN? Où se situe le pare-feu par rapport aux VLANS? Les VLAN sont configurés avec des adresses privées. Le pare-feu est la passerelle à laquelle sont connectés tous les VLAN. Le pare-feu a donc toutes ses pattes associées à des adresses privées, sauf la patte communiquant avec l extérieur. Question 3. Dessinez l architecture sécurisée prenant en compte tous ces paramètres. On supposera que les cartes réseau associées au VLAN seront respectivement nommées LAN, WAN et DMZ pour eth, eth et eth2. Voir schéma en fin de document. 2 Règles du pare-feu Le serveur Web de la DMZ est identifié par $DMZServeurHTTP. Le serveur FTP de la DMZ est identifié par $DMZServeurFTP. Le serveur SMTP de la DMZ est identifié par $DMZServeurSMTP. Le serveur Proxy de la DMZ est identifié par $DMZServeurProxy. Le serveur DNS du réseau local est identifié par $LANServeurDNS. Question 4. Écrivez les règles pour purger les tables de filtrage (option -F de Netfilter) et pour définir les politiques par défaut. Vider les chaînes de chaque table iptables -F iptables -t nat -F iptables -t mangle -F Vider les chaînes personnelles éventuellement présentes iptables -X iptables -t nat -X iptables -t mangle -X
Politiques par défaut sur les tables filter, nat et mangle iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P POSTROUTING ACCEPT Remarque : les tables nat et mangle peuvent accepter tout le trafic car il est déjà bloqué par la table filter. Question 5. Certains processus locaux utilisent l interface locale loopback pour communiquer. Il est donc conseillé de tout autoriser sur cette interface. iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT Question 6. Écrivez les règles de filtrage globales pour le trafic interne externe. iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE (activer la translation d adresse vers l extérieur) iptables -A FORWARD -i $LAN -o $WAN -m state --state iptables -A FORWARD -i $WAN -o $LAN -m state --state (accepter tout trafic sortant du réseau interne. Seules les demandes de connexions (état NEW) dans le sens interne externe sont validées) iptables -A OUTPUT -o $WAN -m state --state iptables -A INPUT -i $WAN -m state --state (accepter tout trafic sortant du pare-feu vers le réseau externe. Seules les demandes de connexions (état NEW) dans le sens pare-feu externe sont validées) iptables -A OUTPUT -o $LAN -m state --state iptables -A INPUT -i $LAN -m state --state (accepter tout trafic sortant du pare-feu vers le réseau local. Seules les demandes de connexions (état NEW) dans le sens pare-feu local sont validées) Question 7. Écrivez les règles de filtrage spécifiques par type de trafic. Trafic Web --dport 8 -- to-destination $DMZServeurHTTP (tout ce qui vient de l extérieur à destination d un port 8 est redirigé vers le serveur HTTP de la DMZ, même avec le NAT en fonction). --dport 443 - -to-destination $DMZServeurHTTP (idem pour le protocole HTTPS) 2
iptables -t nat -A PREROUTING -j DNAT -i $LAN -p tcp --dport 8 - -to-destination $DMZServeurProxy :328 (Avec cette règle, les ordinateurs du LAN peuvent communiquer avec le proxy. Il s agit également de rediriger le port, toute les requêtes http(s) (8, 443) venant du LAN à destination de l extérieur son acheminé sur le port 328 du proxy. Il s agit d avoir une configuration souple pour les clients. C est une des techniques utilisé pour faire un proxy transparent, les clients non pas à configurer leur machine.) iptables -A FORWARD -i $WAN -p tcp --dport 8 -j ACCEPT (acceptation du trafic HTTP venant de l extérieur vers le serveur Web interne) iptables -A FORWARD -i $WAN -p tcp --dport 443 -j ACCEPT (acceptation du trafic HTTPS venant de l extérieur vers le serveur Web interne) iptables -A FORWARD -o $WAN -p tcp --sport 443 -j ACCEPT (acceptation du trafic HTTPS provenant du serveur Web interne) iptables -A FORWARD -o $WAN -p tcp --sport 8 -j ACCEPT (acceptation du trafic HTTP provenant du serveur Web interne) iptables -A FORWARD -i $LAN -p tcp --dport 8 -j ACCEPT (acceptation du trafic HTTP destiné au serveur Web local) iptables -A FORWARD -o $LAN -p tcp --sport 8 -j ACCEPT (acceptation du trafic HTTP issu du réseau local) iptables -A FORWARD -i $LAN -p tcp --dport 443 -j ACCEPT (acceptation du trafic HTTPS destiné au serveur Web local) iptables -A FORWARD -o $LAN -p tcp --sport 443 -j ACCEPT (acceptation du trafic HTTPS issu du réseau local) Trafic SMTP --dport 25 --to-destination $DMZServeurSMTP (redirection des demandes du trafic SMTP vers le bon serveur) iptables -A FORWARD -i $LAN -p tcp --dport 25 -j ACCEPT (acceptation du trafic SMTP depuis le réseau local vers des serveurs quelconques) iptables -A FORWARD -o $LAN -p tcp --sport 25 -j ACCEPT (acceptation du trafic SMTP depuis des serveurs quelconques vers le réseau local ) iptables -A FORWARD -i $DMZ -p tcp --dport 25 -j ACCEPT (acceptation du trafic SMTP depuis la DMZ vers des serveurs quelconques) iptables -A FORWARD -o $DMZ -p tcp --sport 25 -j ACCEPT (acceptation du trafic SMTP depuis des serveurs quelconques vers la DMZ) Trafic FTP --dport 2 -- to-destination $DMZServeurFTP (redirection des demandes du trafic FTP vers le bon serveur) iptables -A FORWARD -i $WAN -p tcp --dport 2 -j ACCEPT (acceptation du trafic FTP venant de l extérieur vers le serveur FTP interne) iptables -A FORWARD -o $WAN -p tcp --sport 2 -j ACCEPT (acceptation du trafic FTP venant du réseau interne vers les serveurs FTP externes) Trafic DNS --dport 53 -- to-destination $LANServeurDNS (redirection du trafic DNS vers le serveur du réseau local en TCP) iptables -t nat -A PREROUTING -j DNAT -i $WAN -p udp --dport 53 -- to-destination $LANServeurDNS (redirection du trafic DNS vers le serveur du réseau local en UDP) iptables -A FORWARD -o $LAN -p tcp --dport 53 -j ACCEPT (acceptation du trafic DNS vers le serveur local en TCP) iptables -A FORWARD -o $LAN -p udp --dport 53 -j ACCEPT (acceptation du trafic DNS vers le serveur local en UDP) iptables -A FORWARD -i $LAN -p tcp --sport 53 -j ACCEPT (acceptation du trafic DNS depuis le serveur local en TCP) iptables -A FORWARD -i $LAN -p udp --sport 53 -j ACCEPT 3
(acceptation du trafic DNS depuis le serveur local en UDP) Trafic ICMP iptables -A FORWARD -i $DMZ -p icmp -j ACCEPT (acceptation du trafic ICMP provenant de la DMZ) iptables -A FORWARD -o $DMZ -p icmp -j ACCEPT (acceptation du trafic ICMP à destination de la DMZ) iptables -A FORWARD -i $LAN -p icmp -j ACCEPT (acceptation du trafic ICMP provenant du LAN) iptables -A FORWARD -o $LAN -p icmp -j ACCEPT (acceptation du trafic ICMP à destination du LAN) Question 8. Écrivez les règles activant l enregistrement (journalisation) sur les chaînes INPUT, OUTPUT et FORWARD pour les paquets non acceptés par les règles précédentes. iptables -t filter -A INPUT -j LOG --log-prefix TraceInput --log-level debug iptables -t filter -A OUTPUT -j LOG --log-prefix TraceOutput --log-level debug iptables -t filter -A FORWARD -j LOG --log-prefix TraceForward --log-level debug 4
eth (WAN) 23.45.67./24 eth2 (DMZ) 72.6.3./24 FTP SMTP Snort DMZ EXTERNE DNS DHCP eth (LAN) 72.6.82./24 IN OUT HTTP/HTTPS Snort Nagios INTERNE 5