Firewalls Ciefa Poly-informatique
Plan du cours • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter) Ciefa Poly-informatique
Partie 1 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter) Ciefa Poly-informatique
Définition théorique • Firewall • Logiciel de contrôle d’accès au niveau du réseau • Divers niveaux de filtrage • Liaison (adresse MAC, …) • Réseau (en têtes IP, IPX, … et type/code ICMP) • Transport (ports TCP/UDP) • Filtrage adaptatif (« statefull inspection ») ou dynamique • Session (« circuit level gateway », SOCKS) • Application (relais applicatifs – « application proxys ») • Combinaison…. Ciefa Poly-informatique
Définition pratique • Mais pratiquement : • Fonctionnalité principale : filtrage IP • Fonctionnalité supplémentaire svt présente : traduction d’adresses et de ports • Filtrage IP • Idée : contrôler les paquets IP autorisés à atteindre un hôte • Intérêt : sécuriser un hôte de façon globale (au niveau réseau) • Traduction d’adresses et de ports • Idée : réécrire les en-têtes des paquets • Intérêt : faire face à la pénurie d’adresses routables sur l’Internet. Ciefa Poly-informatique
Avantages des firewalls • Gestion de la sécurité concentrée • Configuration peu sensible à l’échelle du périmètre de sécurité • Capacité d’audit du trafic réseau • Traces supplémentaires pour certains incidents • Concentrer la maintenance à quelques heures/jours sur une ou plusieurs machines plutôt qu’un parc Ciefa Poly-informatique
Inconvénients des firewalls • Goulet d’étranglement réseau • Point névralgique de l’architecture de sécurité • Complexe : • Connaissance nécessaire des protocoles filtrés (TCP/IP, HTTP, … mais aussi FTP, SQL, …) • Compréhension du fonctionnement du pare-feu (interface entre les divers niveaux de filtrage, traduction d’adresse…) Ciefa Poly-informatique
Firewalls libres • Netfilter • Filtre de paquets du noyau Linux 2.4 • Successeur d’IPChains (Linux 2.2) • Développé par Paul Russell • IP Filter • Filtre de paquets fonctionnant sous Unix libres et propriétaires • Intégré dans FreeBSD et NetBSD • Conçu et développé par Darren Reed • Packet Filter • Filtre de paquets dans OpenBSD (à partir de la version 3.0) • Conçu par Daniel Hartmeier Ciefa Poly-informatique
Filtrage IP standard • Critères • Interface réseau : entrée ou sortie • Adresses IP (source et destination) : hôte ou sous-réseau • Champs de l’en-tête IP : • Fragmentation • TOS et TTL • Options IP • Protocoles de niveau 4 : TCP, UDP et ICMP • Ports source et destination (TCP et UDP) • Drapeaux (TCP) • Types et codes (ICMP) • Actions • Laisser passer (ACCEPT) • Bloquer (DENY ou DROP) • Rejeter (REJECT) => message ICMP ou segment TCP avec drapeau RST Ciefa Poly-informatique
Filtrage à états (statefull) • Principe : • Filtrage dynamique, en conservant des états pour les connexions en cours • Seuls des paquets correspondants à un état pré-existant sont acceptés • Intérêt : • Simplifie l’écriture des règles de filtrage • Améliore la sécurité, en n’autorisant que le trafic effectivement licite • Protocoles : • TCP • Segments appartenant à une connexion TCP en cours • UDP • Datagrammes en réponse à un datagramme UDP émis • Messages ICMP d’erreur • ICMP • Messages ICMP en réponse à un message ICMP émis Ciefa Poly-informatique
Filtrage à états : mise en oeuvre • Mise en œuvre : • Création d’un état lors de la traversée du premier paquet • Mémorisation de paramètres identifiant de façon unique une connexion • Validation des paquets par comparaison des états courants • Expiration des états après un temps paramétrable • Paramètres conservés : • Adresses source et destination • Ports source et destination • Type, code, identifiant et numéro de séquence (ICMP) • TCP : • S’assurer que des segments TCP font partie d’une connexion en cours est complexe • Real Stateful TCP Packet Filtering in IPFilter => http://home.iae.nl/users/guido/papers/tcp_filtering.ps.gz Ciefa Poly-informatique
Traduction d’adresses et de ports (NAT) • Traduction d’adresses • Uni-directionnelle • Traduction en sortie d’adresses (typiquement) privées en adresse(s) publique(s) • Possibilité de changer le port source • Bi-directionnelle • Traduction d’une adresse (typiquement) publique en une phrase (typiquement) privée et réciproquement • Redirection de ports • Redirection d’un port en entrée vers un autre, en modifiant l’adresse de destination ou non • Mise en oeuvre : • Fonctionnalités présentes dans Netfilter, IPFilter, Packet Filter • Ne sont pas détaillées ici Ciefa Poly-informatique
Zone démilitarisée (DMZ) Internet ppp0 – 213.11.32.10 Firewall DMZ eth0 – 213.11.32.50 eth1 – 192.168.1.1 Apache DNS Lotus 213.11.32.20 213.11.32.30 213.11.32.40 LAN – 192.168.0.0/16 Ciefa Poly-informatique
Zone démilitarisée (DMZ) : règles • On ne peut pas initier de connexion depuis Internet vers le LAN directement. • Le contraire est possible, souvent en camouflant les adresses du réseau interne (masquerade sous Linux, ou NAT, …) • LAN : stratégie de sécurisation par réseau (sécurisation du point d’accès). Le firewall est alors un élément de cloisonnement. • DMZ : stratégie de sécurisation par hôte : chaque serveur est configuré et sécurisé en fonction des services qu’il supporte. Ciefa Poly-informatique
Partie 2 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter) Ciefa Poly-informatique
FireWall avec IP-Chains • Possibilités • Principe de base • Options • Mise en service Ciefa Poly-informatique
IPChains : possibilités (1/2) • ipchains est l'un des systèmes de filtrage utilisable sur les noyaux 2.2 • Il est dérivé de ipfw un système présent sur d'autres Unix • Il est très puissant : • Comptage de traffic • Blocage de traffic non souhaité • Masquage d'adresses (n : 1) • Détournement vers un service local Ciefa Poly-informatique
IPChains : possibilités (2/2) • Chaque règle sélectionne les paquets sur les critères : • Adresse IP source du paquet • Adresse IP destination du paquet • Type de protocole (TCP, UDP, ICMP) • Port de protocle adressé (source, destination) • Interface IP traversée • Type de paquet (connexion, transfert) • Chaque règle permet les actions suivantes : • Autorisation du paquet • Destruction du paquet • Rejet du paquet avec message d'erreur • Détournement du paquet sur un serveur local Ciefa Poly-informatique
IPChains : principe de base • ipchains s'organise par chaînes • Une chaîne est un ensemble de règles, qui déterminent ce qui devrait arriver à un certain type de paquet réseau. • Il existe 3 chaînes fixes : • Input : pour les paquets arrivant • Forward : pour les paquets redirigés vers un autre hôte • Output : pour les paquets transmis par la filtre • Les règles de chaque chaîne dépendent de leur ordre. Quand un paquet arrive, il est comparé aux règles de la chaîne pertinente, depuis la première jusqu’à la dernière. • Ipchains CMD [chain] [rule-spec|num] [options] =>Ex : ipchains –A input –i eth0 -s 192.168.0.1 –p TCP –j DENY Ciefa Poly-informatique
IPChains : options • Cibles (option –j => paquet envoyé sur cible) : • ACCEPT • DENY • REJECT (=> icmp) • MASQ(option CONFIG_IP_MASQUERADE nécessaire) • Commandes : • -A (= ajouter) • -D (= supprimer) • -R (= remplacer) • -C (= vérifier) • Options : • -p [!] protocol =>icmp, tcp, udp, all • -s [!] addr ([!] port) => adresse source (-d pour destination) • -i [!] interface • -j target => s’il y a correspondance, paquet envoyé vers cette cible Ciefa Poly-informatique
IPChains : mise en service • Un support noyau est obligatoire (présent de base maintenant) • Il faut insérer des options : • "Network firewalls" ( CONFIG_FIREWALL=y ) • "IP: firewalling" ( CONFIG_IP_FIREWALL=y ) • En standard sur noyaux 2.1.x et 2.2.x • Les règles peuvent être éditées dynamiquement • Il faut sauvegarder une version de filtrage • Il faut installer la version sauvegardée au boot • Ne pas oublier : • De mettre les filtres avant d'activer les interfaces réseau • De mettre les filtres avant d'activer le routage de paquets IP Ciefa Poly-informatique
Partie 3 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter) Ciefa Poly-informatique
FireWall avec IP-Tables • IPChains vs IPTables • Principe de base • Options • Nouveauté • Exemple Ciefa Poly-informatique
IPTables vs IPChains • iptables est l'un des systèmes de filtrage utilisable sur les noyaux 2.4 (et les dernières versions du noyau 2.3) • Il est une évolution de la commande ipchains afin de clarifier certains points (comme le forwarding entre interfaces). • Il incorpore les fonctionnalités de différentes commandes issues de ipchains et ipfwadm => regroupe toutes les fonctionnalités Linux relatives au filtrage de paquets. Ciefa Poly-informatique
IPTables : principe de base • iptables s'organise par tables • Chaque table contient une série de chaînes de règles. • Il existe 3 tables principales : • Filtre : contient les chaînes INPUT, FORWARD et OUTPUT (table par défaut) • NAT : s’occupe de la conversion d’adresse de réseau. Contient les chaînes PREROUTING, OUTPUT et POSTROUTING. • Mangle : permet une modification des paquets à la volée. Contient les chaînes PREROUTING et OUTPUT. • Les règles de chaque chaîne dépendent de leur ordre. Quand un paquet arrive, il est comparé aux règles de la chaîne pertinente appartenant à la table pertinente, depuis la première jusqu’à la dernière. • iptables [-t table] CMD [chain] [rule-spec|num] [options] =>Ex : iptables –t filter –A input –i eth0 -s 192.168.0.1 –p TCP –j DENY Ciefa Poly-informatique
IPTables : options • Cibles (option –j => paquet envoyé sur cible) : • Cibles de ipchains… • SNAT (=> adresse source convertie => dans chaîne POSTROUTING de table NAT) • DNAT (=> adresse dest. Convertie => dans chaîne PREROUTING de table NAT) • LOG(nécessité d’avoir chargé le module concerné dans le noyau) • Commandes : • Commandes de ipchains… • -N (--new-chain), -X (--delete-chain) • -F (--flush) => supprime toutes les règles de la chaîne et de la table concernée • Options : • Options de ipchains… • -i [!] interface =>spécifie l’interface de réception => chaînes INPUT, FORWARD et PREROUTING • -o [!] interface =>spécifie l’interface d’expédition => chaînes OUTPUT, FORWARD et POSTROUTING • [!] –syn =>spécifie que cette règle ne devrait satisfaire que des paquets TCP que s’ils initient la connexion Ciefa Poly-informatique
IPTables : nouveauté • Capacité de créer des règles de comparaison fondées sur les états des paquets => due au module state • Syntaxe : iptables –m state –state [!] [state, state,…] • Etats possibles : • NEW : compare les paquets n’appartenant à aucune connexion en cours • ESTABLISHED : compare les paquets appartenant à une connexion déjà ouverte • RELATED : compare les paquets qui appartiennent à une autre connexion, par exemple les messages ICMP d’erreur, ou le trafic lié au fonctionnement d’un protocole applicatif (ftp data => modes passif ou actif)… • INVALID : compare les paquets qui n’ont aucun sens dans le contexte de la connexion existante, ou ceux qui n’ont pu être reçus pour une raison quelconque. Ciefa Poly-informatique
IPTables : exemple • Le firewall et le réseau interne peuvent tout faire, pas Internet. • Les adresses du réseau interne sont masquées pour sortir vers Internet. IFACE=eth0 • # Masque en sortie l’interface eth0 iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE • # Crée une chaîne qui bloque tout tentative de connexion de l’extérieur iptables -N block iptables -A block -m state --state INVALID -j DROP iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p icmp --icmp-type echo-request -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p udp -j ACCEPT iptables -A block -m state --state NEW -i ! $IFACE -p tcp --syn -j ACCEPT iptables -A block -i $IFACE -m limit --limit 3/s -j LOG --log-prefix "Bad packet from $IFACE:" iptables -A block -i ! $IFACE -m limit --limit 3/s -j LOG --log-prefix "Bad packet not from $IFACE: " iptables -A block -j DROP • # Fais correspondre les chaînes INPUT et FORWARD avec cette chaîne iptables -A INPUT -j block iptables -A FORWARD -j block • # Active le forwarding IP :echo 1 > /proc/sys/net/ipv4/ip_forward Ciefa Poly-informatique
IPChains, IPTables vs FW-1 Argument pour comparer et critiquer les firewall propriétaires (ex Fw-1 de Cisco) et les firewall libres : le caractère « statefull » Entre un firewall type kernel 2.2 (ipchain) et un firewall type kernel 2.4 (iptable), il n'y a pas de comparaison. Ce que l'on appelle communément désormais "statefull", qui consiste a traiter les flux en fonction de leur état (state), connecté, en relation ... FAIT TOUTE LA DIFFERENCE. On ne peut pas comparer FW-1 et linux-2.2 pour cette raison. Un firewall qui ne se souvient pas des états des connexions est obligé de laisser entrer tous les ports hauts (1025-65535) pour laisser passer les réponses aux requêtes émises par les clients du réseau interne, ce qui représente beaucoup de tracas en terme de sécurité. => linux-2.2 est comparable aux routeurs avec acl de cisco. cisco ne les vends pas en temps que "firewall". => linux-2.4 est concurrent de FW-1 (checkpoint) et des pix (cisco). Il est sans doute même meilleur car plus configurable. => donc attention, "statefull" n'est pas juste un argument marketing Ciefa Poly-informatique