Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 Introduction I Rappels sur les réseaux IP II Sécurité de base III Netfilter / Iptables IV Outils et liens Conclusion Olivier ALLARD-JACQUIN
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Adresses IP ➢ Ports ➢ Masque de sous-réseau ➢ Réseaux IP ➢ Passerelle ➢ Type de trame ➢ La poignée de main (hand check) ➢ Interface réseau
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Adresse IP obligatoire pour se connecter sur un réseau IP ➢ Adresse UNIQUE pour un réseau ➢ 4 nombres : 0 ->255 ➢ Ex : ➢ 3 classes d'adresses privées : – Classe A : 10.x.y.z – Classe B : 172.x.y.z – Classe C : x.y Adresse IP Immeuble (*) (*) 16 <= x <= 31
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Nécessaire pour communiquer ➢ IN / OUT / IN ou OUT ➢ Logiciels serveurs ou client ➢ ports / machines : – 0 à 1024: serveurs – à 61000: client ➢ Exemple : Port fenètre Logiciel Utilisateur
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Grouper les machines ➢ 4 nombres : 0, 128, 192, 224, 240, 248, 252, 254, 255 ➢ Exemple : ➢ Nombre max d'adresse IP ➢ Pour les classes privées : – Classe A : – Classe B : – Classe C : Masque de sous réseau Quartier
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Combinaison adresse IP / Masque de sous-réseau ➢ Exemples : – / – / 24 ➢ Pour les classes privées : – Classe A : 10.x.y.z / 8 – Classe B : 172.x.y.z / 16 – Classe C : x.y / 24 Réseau IP Barrière (*) (*) 16 <= x <= 31
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Les réseaux sont isolés entre eux ➢ Seule sortie : La passerelle / gateway ➢ 1 adresse IP (ex : ) ➢ Se charge de trouver le destinataire Passerelle Garde barrière
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Différents types de transmission d'informations : – TCP – UDP – ICMP –... Type de trames Type de courrier
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Valable pour TCP ➢ 3 étapes : – SYN – ACK + SYN – ACK ➢ Le dialogue peut débuter La poignée de mains Engager la conversation La poignée de mains Engager la conversation
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Carte réseau : eth0, eth1,... ➢ Modem : ppp0, ppp1,.... ➢ Loopback : lo ➢ 1 ou plus adresses IP par interface : – eth – eth0: – eth0:
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Présentation du réseau ➢ Outils d'analyse et de détection ➢ Démons, serveurs et démons de service ➢ Risques ➢ Fermeture des ports ➢ Bilan
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Paradise : – paradise.sky.net – eth0 : /24 ➢ Phoenix : – phoenix0.sky.net – eth0 : /24 – phoenix1.sky.net – eth1 : /8 ➢ Pirate : – pirate.internet.net – eth0 : /8 – web.internet.net – eth:0:0 : /8
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Intrus / administrateur: Même combat, mêmes outils ➢ Outils : – Nmap – Tcpdump – Ethereal – Netstat – Lsof – Ping – Traceroute
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Démons : cron, dm, xfs, random, alsa... ➢ Serveurs : Apache, Bind, MySQL, Samba... ➢ Démon de service: Inetd / Xinetd – Méta démon de surveillance et de contrôle d'accès – Gère des services : telnet, proftpd, pop, cvs, time...
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Risques : – Saturation – Vol / suppression de données – Exécution de code arbitraire – Prise de contrôle à distance ➢ Protections simples : – Utilisateur – Prison / jail (chroot) – User mode kernel
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Arrêter les services inutiles ➢ Contrôler les accès : ➢ Gérer les démons : /etc/init.d/* ➢ Contrôle des démons : /etc/rc3.d/ et /etc/rc5.d/
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Pas de contrôle sur l'ICMP ➢ Scan toujours utilisable ➢ IP Spoofing
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Pré-requis ➢ Vue générale de Netfilter ➢ Chaînes, règles et iptables ➢ Les tables ➢ Un premier script simple ➢ Le suivi de connexion (conntrack) ➢ IP masquerading ➢ Log (LOG / ULOG) ➢ Firewall applicatif
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Kernel 2.4.x ou supérieur ➢ rpm / urpmi / apt iptables ➢ Compilation du kernel CONFIG_MODULES : Y CONFIG_PACKET : Y CONFIG_NETFILTER : Y CONFIG_UNIX : Y CONFIG_INET : Y CONFIG_IP_ADVANCED_ROUTER : Y CONFIG_IP_NF_CONNTRACK : M CONFIG_IP_NF_FTP : M CONFIG_IP_NF_IRC : M CONFIG_IP_NF_IPTABLES : M CONFIG_IP_NF_FILTER : M CONFIG_IP_NF_NAT : M CONFIG_IP_NF_MATCH_LIMIT : M CONFIG_IP_NF_MATCH_STATE : M CONFIG_IP_NF_TARGET_MASQUERADE : M CONFIG_IP_NF_TARGET_REDIRECT : M CONFIG_IP_NF_TARGET_LOG : M CONFIG_IP_NF_TARGET_ULOG : M
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Netfilter : Rien à voir avec le firewall sous Windows ➢ Netfilter : 5 crochets (hook) dans la pile réseau ➢ Une chaîne et des règles par crochet
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Règles : Conditions de passage des paquets réseau ➢ Chaînes : Conteneur de règles ➢ Chaînes prédéfinies et chaînes utilisateur : Même combat ➢ Iptables : Le maître des règles
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ 3 chaînes : – INPUT : Paquets rentrants vers des processus locaux – OUTPUT : Paquets sortant des processus locaux – FORWARD : Paquets passant d'une interface à l'autre
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ 3 chaînes : – PREROUTING : Paquets rentrants dans la couche réseau – POSTROUTING : Paquets sortants de la couche réseau – OUTPUT : Paquets sortants des processus locaux
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Mangle : Mutilation des paquets... ➢ Application : QoS (Quality of Service)
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Manipulation des tables : – -t (table) ➢ Manipulation des chaînes : – -F (Flush) -X (eXtra) -P (default Policy) -N (New) -A (Append) -D (Delete) -L (Liste) ➢ Cible : – -j (Jump) ➢ Critères : – -i (Input) -o (Output) -s (Source) -d (destination) -p (protocole) - sport (Source port) -dport (destination port) ➢ Spécial : – -m (module) –state (Status) -log (Log)
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 iptables -t filter -A OUTPUT -o eth1 -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -o eth1 -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -i eth1 -p tcp --sport 80 -j ACCEPT iptables -t filter -A INPUT -i eth1 -p tcp --sport 443 -j ACCEPT iptables -t filter -A OUTPUT -o eth1 -p tcp --dport 80 -j ACCEPT iptables -t filter -A OUTPUT -o eth1 -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -i eth1 -p tcp --sport 80 -j ACCEPT iptables -t filter -A INPUT -i eth1 -p tcp --sport 443 -j ACCEPT iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter - F iptables -t filter - X iptables -t filter - F iptables -t filter - X ➢ Supprimer toutes les règles : ➢ Détruire tout par défaut : ➢ Autoriser avec parcimonie :
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Problème : nmap -g 80 ➢ Modules conntrack ➢ Connexions: – NEW – ESTABLISHED – RETATED (Ex : FTP) – INVALID iptables -A OUTPUT -o eth1 -s p all -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i eth1 -d p all -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth1 -s p all -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i eth1 -d p all -m state --state RELATED,ESTABLISHED -j ACCEPT ➢ Netfilter = trou noir Protection absolue ?
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Paradise sur Internet ? ➢ Table NAT ➢ Voie montante ➢ Voie descendante ➢ Modules NAT ➢ Clef de sortie iptables -A FORWARD -i eth0 -o eth1 -s /24 -m state --state ! INVALID -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -d /24 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -s /24 -m state --state ! INVALID -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -d /24 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth1 -s /24 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Clef de sortie
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Log avant destruction : ➢ Log et destruction : ➢ Séparer les LOG. Une solution, ULOG : iptables -A INPUT -p all -j LOG --log-prefix DefautlDropIN iptables -A OUTPUT -p all -j LOG --log-prefix DefautlDropOUT iptables -A INPUT -p all -j LOG --log-prefix DefautlDropIN iptables -A OUTPUT -p all -j LOG --log-prefix DefautlDropOUT iptables -N LogDrop iptables -A LogDrop -j LOG –log-prefix LogAndDrop iptables -A LogDrop -j DROP iptables -N LogDrop iptables -A LogDrop -j LOG –log-prefix LogAndDrop iptables -A LogDrop -j DROP modprobe ipt_ULOG iptables -N LogDrop iptables -A LogDrop -j ULOG --ulog-prefix LogAndDrop iptables -A LogDrop -j DROP modprobe ipt_ULOG iptables -N LogDrop iptables -A LogDrop -j ULOG --ulog-prefix LogAndDrop iptables -A LogDrop -j DROP
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Firewall applicatif : Filtrage IP par application ➢ Intérêt ➢ ip_queue / LIBIPQ ➢ Exemple : – Fireflier Exemple: FireFlier (
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Interfaces à iptables ➢ Distributions spécialisées ➢ Netfilter_cfg ➢ Liens
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Freshmeat: ➢ KNetfilter ➢
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ IPCop ➢ floppyfw ➢ BBIagent ➢ Linux rooter (RIP) ➢
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Script bash ➢ Support de multiples interfaces locales ➢ Connexion externe : RTC / ADSL / passerelle ➢ Supporte : Conntrack / IP masquerading ➢ LOG / ULOG / Filtrage de logs ➢ Gestion de serveurs : TO / FTP /... ➢ Evolutif
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Documentation du créateur de Netfilter (Rusty Russell): – (en Français) ➢ Christian Caleca – ➢ IpTables par l'exemple – ➢ Olivier Allard-Jacquin – olivieraj.free.fr
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Recherche de sécurité : – Nessus : – SATAN : ➢ Audit externe : – PcFlank : – DSLreports : ➢ Références: – Linux : – Plus globales :
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 ➢ Sécurité informatique ? ➢ Ne jamais sous estimer les intrus ➢ Modèle à plusieurs couches ➢ Règles d'or : – fermer les démons inutiles – restreindre les accès à ceux restant – Netfilter / iptables + conntrack + log ● 1 : Initialisation des tables ● 2 : DROP par défaut ● 3 : ACCEPT au compte goûte