Éléments de Sécurité sous Linux Objectif: Pare-feu sous GNU/Linux Contenu: Principes de base fonctionnement de Netfilter architecture: DMZ configuration par iptables par Shorewall
Principe du pare-feu un pare-feu sert à filtrer les paquets réseau, en entrée ET en sortie les critères de filtrage sont divers, dont: protocole (TCP, UDP, ICMP) et type de paquet dans le protocole adresse IP source et/ou destination port source et/ou destination interface réseau entrante/sortante état (nouveau, établit, relatif ou invalide): pare-feu «stateful» différents éléments de qualité de service (QoS) les traitements sont divers: accepté, rejeté, abandonné, transmis en espace utilisateur redirection, masquerade (NAT) logué
Mise-en-oeuvre sous GNU/Linux le pare-feu sous GNU/Linux s'appelle Netfilter Les 4 premières couches du modèle OSI jusqu'à la pile TCP/IP sont implémentées dans le noyau Linux. Le filtrage des paquets est donc réalisé par le noyau Linux. Les fonctionnalités associées sont à compiler en statique ou en modules: network paquet filter packet socket la commande iptables permet de définir les règles de filtrage une par une que l'on peut ensuite enregistrer dans un fichier ou un script le logiciel Shorewall fournit une configuration plus symbolique: par interfaces, zones, politique et règles répertoire de configuration /etc/shorewall guide: http://www.shorewall.net/shorewall_quickstart_guide.htm
Schéma d'architecture les règles de filtrage sont organisées en 3 tables de chaînes: filter: table par défaut, spécifie les critères de filtrage des paquets nat: configure la translation d'adresse (masquerading, redirection de ports) mangle: utilisée pour l'altération spécialisée des paquets
exemple d'architecture
exemple de configuration chaque paquet est évalué par rapport à chaque règle dans l'ordre iptables -t nat -A PREROUTING -i ppp0 -p tcp dport 80 -j DNAT to 192.168.0.1 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE il faut aussi activer le paquet forwarding dans le noyau en écrivant net.ipv4.conf.default.forwarding=1 dans /etc/sysctl.conf iptables -N firewall iptables -A firewall m state -state ESTABLISHED, RELATED, -j ACCEPT iptables -A firewall m state - state NEW -i! ppp0 -j ACCEPT iptables -A firewall -p tcp dport 80 -j ACCEPT iptables -A firewal -j DROP iptables -A INPUT -j firewall iptables -A FORWARD -j firewall
configuration par Shorewall Le fichier /etc/shorewall/zones définit les zones: #ZONE TYPE OPTIONS IN_OPTIONS OUT_OPTIONS fw firewall net ipv4 loc ipv4 Le fichier /etc/shorewall/policy définit les politiques d'accès: #SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net ACCEPT $FW net ACCEPT net all DROP info all all REJECT info Le fichier /etc/shorewall/masq définit la translation d'adresse: #INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC ppp0 eth0 Le fichier /etc/shorewall/rules définit les règles particulières: #ACTION SOURCE DEST PROTO PORT(S) DNAT net loc:192.168.0.1:80 tcp www ACCEPT loc $FW all domain
DMZ une DMZ est une zone accessible de l'extérieur mais isolée du réseau local par un routeur pare-feu netfilter peut être utilisé pour configurer une DMZ: il redirige les requêtes externes vers le sous-réseau de la DMZ il bloque les accès direct de l'extérieur vers le réseau local il bloque les accès de la DMZ vers le réseau local la DMZ n'est pas une zone ultraprotégée mais au contraire une zone ultra-vulnérable. On l'isole pour y confiner les intrusions.