380 likes | 582 Views
Introduction I Rappels sur les réseaux IP II Sécurité de base III Netfilter / Iptables IV Outils et liens Conclusion. Firewall et sécurité d'un réseau personnel sous Linux. Olivier ALLARD-JACQUIN. I Rappels sur les réseaux IP. Adresses IP Ports Masque de sous-réseau Réseaux IP
E N D
Introduction I Rappels sur les réseaux IP II Sécurité de base III Netfilter / Iptables IV Outils et liens Conclusion Firewall et sécurité d'un réseau personnel sous Linux Olivier ALLARD-JACQUIN
I Rappels sur les réseaux IP • 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
Adresses IP • Adresse IP obligatoire pour se connecter sur un réseau IP • Adresse UNIQUE pour un réseau • 4 nombres : 0 ->255 • Ex : 56.2.68.147 • 3 classes d'adresses privées : • Classe A : 10.x.y.z • Classe B : 172.x.y.z • Classe C : 192.168.x.y (*) Adresse IP <=> Immeuble (*) 16 <= x <= 31
Les ports • Nécessaire pour communiquer • IN / OUT / IN ou OUT • Logiciels serveurs ou client • 65535 ports / machines : • 0 à 1024: serveurs • 32768 à 61000: client • Exemple : Logiciel <=> Utilisateur Port <=> fenètre
Masque de sous-réseaux • Grouper les machines • 4 nombres : 0, 128, 192, 224, 240, 248, 252, 254, 255 • Exemple : 255.255.255.0 • Nombre max d'adresse IP • Pour les classes privées : • Classe A : 255.0.0.0 • Classe B : 255.255.0.0 • Classe C : 255.255.255.0 Masque de sous réseau<=> Quartier
Réseau IP • Combinaison adresse IP / Masque de sous-réseau • Exemples : • 192.168.0.0 / 255.255.255.0 • 192.168.0.0 / 24 • Pour les classes privées : • Classe A : 10.x.y.z / 8 • Classe B : 172.x.y.z / 16 • Classe C : 192.168.x.y / 24 (*) (*) 16 <= x <= 31 Réseau IP<=> Barrière
Passerelle • Les réseaux sont isolés entre eux • Seule sortie : La passerelle / gateway • 1 adresse IP (ex : 192.168.0.254) • Se charge de trouver le destinataire Passerelle <=> Garde barrière
Type de trames • Différents types de transmission d'informations : • TCP • UDP • ICMP • ... Type de trames <=> Type de courrier
La poignée de mains • Valable pour TCP • 3 étapes : • SYN • ACK + SYN • ACK • Le dialogue peut débuter La poignée de mains <=> Engager la conversation
Interfaces réseaux • Carte réseau : eth0, eth1, ... • Modem : ppp0, ppp1, .... • Loopback : lo • 1 ou plus adresses IP par interface : • eth0 192.168.0.1 • eth0:0 192.168.1.1 • eth0:1 192.168.2.1
II Sécurité de base • 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
Présentation du réseau • Paradise : • paradise.sky.net • eth0 : 192.168.0.2/24 • Phoenix : • phoenix0.sky.net • eth0 : 192.168.0.1/24 • phoenix1.sky.net • eth1 : 10.0.0.1/8 • Pirate : • pirate.internet.net • eth0 : 10.0.0.66/8 • web.internet.net • eth:0:0 : 10.0.0.200/8
Outils d'analyse et de détection • Intrus / administrateur: Même combat, mêmes outils • Outils : • Nmap • Tcpdump • Ethereal • Netstat • Lsof • Ping • Traceroute
Démons, serveurs et démons de service • 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 ...
Risques et protections simples • 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
Fermeture des ports • 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/
Bilan • Pas de contrôle sur l'ICMP • Scan toujours utilisable • IP Spoofing
III Netfilter / Iptables • 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
Pré-requis • 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
Vue générale de Netfilter • 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
Chaînes, règles et iptables • 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
La table Filter • 3 chaînes : • INPUT : Paquets rentrants vers des processus locaux • OUTPUT : Paquets sortant des processus locaux • FORWARD : Paquets passant d'une interface à l'autre
La table NAT • 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
La table Mangle • Mangle : Mutilation des paquets ... • Application : QoS (Quality of Service)
Iptables • 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)
Un premier script simple • Supprimer toutes les règles : iptables -t filter -F iptables -t filter -X • Détruire tout par défaut : iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP iptables -t filter -P FORWARD DROP • Autoriser avec parcimonie : 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
Le suivi de connexion (conntrack) • Problème : nmap -g 80 • Modules conntrack • Connexions: • NEW • ESTABLISHED • RETATED (Ex : FTP) • INVALID iptables -A OUTPUT -o eth1 -s 10.0.0.1 -p all -m state --state ! INVALID -j ACCEPT iptables -A INPUT -i eth1 -d 10.0.0.1 -p all -m state --state RELATED,ESTABLISHED -j ACCEPT • Netfilter = trou noir <=> Protection absolue ?
IP masquerading (masquage IP) • Paradise sur Internet ? • Table NAT • Voie montante • Voie descendante • Modules NAT • Clef de sortie iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m state --state ! INVALID -j ACCEPT iptables -A FORWARD -i eth1 -o eth0 -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Clef de sortie
Log (LOG / ULOG) iptables -A INPUT -p all -j LOG --log-prefix DefautlDropIN iptables -A OUTPUT -p all -j LOG --log-prefix DefautlDropOUT • Log avant destruction : • Log et destruction : iptables -N LogDrop iptables -A LogDrop -j LOG –log-prefix LogAndDrop iptables -A LogDrop -j DROP • Séparer les LOG. Une solution, ULOG : modprobe ipt_ULOG iptables -N LogDrop iptables -A LogDrop -j ULOG --ulog-prefix LogAndDrop iptables -A LogDrop -j DROP
Firewall applicatif Exemple: FireFlier (http://fireflier.sourceforge.net/) • Firewall applicatif : Filtrage IP par application • Intérêt • ip_queue / LIBIPQ • Exemple : • Fireflier
IV Outils et liens • Interfaces à iptables • Distributions spécialisées • Netfilter_cfg • Liens
Interfaces à iptables • Freshmeat: • KNetfilter • ... ... ... http://freshmeat.net/browse/151/ http://freshmeat.net/projects/knetfilter/
Distributions spécialisées • IPCop • floppyfw • BBIagent • Linux rooter (RIP) • ... ... ... http://www.ipcop.org http://www.zelow.no/floppyfw/ http://www.bbiagent.net/en/index.html http://www.linuxrouter.org/
Netfilter_cfg • 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
Liens 1 • Documentation du créateur de Netfilter (Rusty Russell): • http://www.netfilter.org/unreliable-guides/ (en Français) • Christian Caleca • http://christian.caleca.free.fr/netfilter/ • IpTables par l'exemple • http://lea-linux.org/reseau/iptables.php3 • Olivier Allard-Jacquin • olivieraj.free.fr
Liens 2 • Recherche de sécurité : • Nessus : http://www.nessus.org/ • SATAN : http://www.fish.com/satan/ • Audit externe : • PcFlank : http://www.pcflank.com/ • DSLreports : http://www.dslreports.com/scan • Références: • Linux : http://www.linuxsecurity.com/ • Plus globales : http://www.securityfocus.com/
Conclusion • 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