1 / 37

udivers

IPTABLES FIREWALL. www.udivers.com. Plan. Présentation générale Firewall avec IPChains Firewall avec IPTables (NetFilter). Partie 1. Présentation générale Firewall avec IPChains Firewall avec IPTables (NetFilter). Définition théorique. Firewall

yuli-morris
Download Presentation

udivers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IPTABLES FIREWALL www.udivers.com

  2. Plan • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter)

  3. Partie 1 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter)

  4. 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 »)….

  5. Définition pratique • Mais pratiquement : • Fonctionnalité principale : filtrage IP • Fonctionnalité supplémentaire : 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.

  6. 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

  7. 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…)

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. Partie 2 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter)

  14. FireWall avec IP-Chains • Possibilités • Principe de base • Options • Mise en service

  15. 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 • Détournement vers un service local

  16. 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

  17. 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

  18. 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

  19. 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

  20. Partie 3 • Présentation générale • Firewall avec IPChains • Firewall avec IPTables (NetFilter)

  21. FireWall avec IP-Tables • Définition • IPChains vs IPTables • Principe de base • Options • Nouveauté • Exemple

  22. Définition: IPTables est un outil Linux (exclusivement) pour gérer le pare-feu qui est intégré au noyau Linux 2.4 (et supérieur). L'architecture du noyau pour le système de pare-feu s'appelle 'netfilter'. Netfilter a de très nombreuses fonctionnalités: filtrage de paquets, suivi de connexions, NAT1, .... Le principe de fonctionnement est simple, lorsque la carte réseau recoit un paquet celui-ci est transmis à la partie netfilter du noyau. Netfilter va ensuite étudier ce paquet (les entêtes et le contenu) et en se basant sur des règles que l'administrateur aura défini, il va choisir de laisser passer le paquet intact, de modfier ce paquet, de le transmettre à une autre machine ou encore d'interdire le passage.

  23. 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.

  24. 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 :correspond aux notions de filtrage réseaux (accepter/refuser un paquet) contient les chaînes INPUT, FORWARD et OUTPUT (table par défaut) • NAT : correspond à des fonctions de routage (pour monter une passerelle par exemple) s’occupe de la conversion d’adresse de réseau. Contient les chaînes PREROUTING, OUTPUT et POSTROUTING. • Mangle : est utilisée pour modfier les paquets 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

  25. Filtrage de ports Quand un paquet arrive (par la carte réseau par exemple), le noyau regarde la destination de ce paquet : c'est appelé le routage. Si ce paquet est destiné à cette machine, le paquet passe dans la chaine INPUT. les processus qui attendent le paquet le recevront. Autrement, si le noyau n'a pas le forwarding autorisé (machine qui n'est pas configurée en routeur), ou qu'il ne sait pas comment forwarder le paquet, le paquet est supprimé. Si le forwarding est autorisé et que le paquet est destiné à un autre réseau, le paquet va directement à la chaine FORWARD. S'il est accepté, il sera envoyé vers le réseau de destination. La chaîne OUTPUT concerne les paquets qui ont été créé par la machine locale. Ces paquets passeront par la chaine OUTPUT immédiatement.

  26. Chacune de ces chaînes peut donner plusieurs réponses possibles pour paquet : • ACCEPT : le paquet est accepté • DROP : le paquet est refusé , on l'efface et on ne répond rien • REJECT : le paquet est refusé et on signale le rejet à l'expéditeur Chaque chaîne possède une règle par défaut policy qui définit si l'on accepte ou refuse les paquets par défaut. Par défaut, les policy sont à ACCEPT. Nous verrons par la suite que l'administrateur peut créer des chaînes personnalisées en plus des 3 chaînes par défaut qui lui permettent d'organiser ses règles de filtrage de manière plus propre et optimisée (lorsqu'on a plusieurs milliers des règles, c'est vraiment très utile).

  27. 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

  28. 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.

  29. IPTables : exemple

  30. DEMONSTRATIONS 1er exemple: Protection de la machine locale : Nous allons maintenant voir comment mettre en place un firewall sur la machine locale. Executez la commande : # iptables -L -v (-L == liste les règles et -v demande le mode 'verbeux') Vous devriez voir quelque chose qui ressemble à : Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) Pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Vous voyez donc pour chaque chaîne, la policy (comportement par défaut), le nombre de paquets qui a traversé les règles de la chaîne et le nombre d'octets correspondants.

  31. DEMONSTRATIONS Nous allons maintenant interdire les connexions sur le port 80, pour cela , il faut interdire les paquets dans la chaîne INPUT sur le port 80 : # iptables -A INPUT -p tcp --dport 80 -j DROP Cette commande signife : -A INPUT => ajoute en bas de la liste des règles de la chaîne INPUT -p tcp => pour les paquets qui utilisent les protocole TCP dport => pour les paquets qui sont à destination du port 80 -j DROP => l'action : DROP les paquets (on e ace les paquets), le -j peut également servir à rediriger sur une autre chaîne et/ou à effectuer différentes actions On essai de se connecter à la machine via le port 80

  32. DEMONSTRATIONS 2éme exemple: Nous allons maintenant autoriser uniquement un adresse qlq à se connecter sur votre machine a travers port 80. Pour cela, nous allons insérer une règle pour cet adresse avant la règle qui DROP les paquets. Il est important de la placer avant, car les règles sont exécutées dans l'ordre ou elles ont été placées dans la liste, donc si la première règle rejette le paquet, celui-ci n'atteindra jamais la 2ème règle qui l'autorise. Gardez bien toujours en mémoire que l'ordre compte. On récupérez l'adresse IP puis exécutez : # iptables -I INPUT 1 -p tcp --dport 22 -s adresse_ip -j ACCEPT le '-I INPUT 1' signife insère en première position dans la liste. l'option -s permet de choisir la source des paquets, on choisit donc les paquets provenant de la machine voisine (on peut également spécifer des réseaux entiers au format 193.54.241.0/24 par exemple).

  33. DEMONSTRATIONS Essayez de vous connecter sur votre machine depuis la machine dont l’adresse IP est autorisé!!, et depuis une autre machine! N'hésitez pas à utiliser la commande 'iptables -L -v' pour voir les compteurs de paquets qui évoluent en fonction de vos tests. (NB: vous pouvez utiliser la commande 'iptables -Z' pour remettre à zéro les compteurs de paquets et d'octets) Nous avons vu comment ajouter et insérer des règles, on peut aussi les effacer en utilisant l'option -D, par exemple en faisant : # iptables -D INPUT 1 vous effacez la première règle de la chaîne INPUT. Il peut être pratique de voir les numéros de chaque règle lorsqu'on liste les règles, cela se fait avec l'option line-numbers : # iptables -L -v --line-numbers

  34. DEMONSTRATIONS 3éme exemple: Imaginons par exemple que l'on veuille gérer plusieurs règles pour contrôler l'accès au service web. On pourrait procéder de la manière suivante : 1 - Création d'une chaîne spécifque # iptables -N web 2 - On indique à la chaîne INPUT que tout ce qui concerne web doit être transmis à cette nouvelle chaîne # iptables -A INPUT -p tcp --dport 80 -j web 3 - On rajoute nos règles de ltrages dans la chaîne web - on accepte que le voisin se connecte # iptables -A ssh -s ip_machine_du_voisin -j ACCEPT - on interdit au reste du monde de se connecter # iptables -A ssh -j DROP

  35. DEMONSTRATIONS 4éme exemple: Nous allons essayer de créer une chaîne de toutes les machines de la salle et d'avoir une seule machine qui se connecte directement sur le routeur pour la connexion internet. La machine csci1 sera la seule machine qui se connectera directement au routeur. L'objectif est d'obtenir une chaîne de machines de telle sorte que csci4 traverse csci3 puis csci2 puis csci1 avant que la connexion soit transmise au routeur et que de l'extérieur seule csci1 soit visible. Chaque machine sera donc une passerelle pour la machine voisine. L'objectif est que tout le monde voit l'IP de csci1 sur la page http ://www- fourier.ujf-grenoble.fr/~mmarcha/ip.php de son navigateur. Commencez par tous redémarrer vos machines (pour nettoyer tous les tests précédents). - sur la machine csci1 : Activez le forwarding puis activez la fonction de masquerading pour tout le réseau : # iptables -t nat -A POSTROUTING -s 193.54.241.0/24 -j MASQUERADE Rien d'autre à faire à votre niveau. - Toutes les autres machines : Activez le forwarding puis activez la fonction de masquerading. Tuez ensuite le client DHCP qui prend les infos de connexion sur le serveur DHCP # killall dhclient pour qu'il ne modfie pas les paramètres que vous allez mettre manuellement. Changez votre passerelle pour utiliser la machine de votre voisin comme passerelle. (par exemple si votre machine est la machine csci4, utilisez csci3 comme passerelle).

  36. DEMONSTRATIONS 5éme exemple: • Le firewall et le réseau interne peuvent tout faire. • 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

  37. Je vous remercie pour votre attention Questions!!? Visite le site www.udivers.com

More Related