INSIA SRT 2 IPTABLES. Netfilter ● Netfilter : module qui fournit à Linux les fonctions de – pare-feu – de traduction d'adresse – et d'historisation du.

Slides:



Advertisements
Présentations similaires
- ACL * Access Control List. Sommaire 1)Théorie 1)ACL standard 1)ACL étendue 1)ACL nommée 1)Mise en place et vérification des ACLs.
Advertisements

Firewall sous Linux Netfilter / iptables.
interface graphique permettant de faciliter la conception de topologies réseaux complexes Logiciel permettant de créer des machines virtuelles sur une.
Firewalling et NAT sous LINUX
TP sur le filtrage avec iptables
Netfilter/Iptables Introduction.
Progression Sécurité & réseaux TCP/IP - Cours1 : Révision réseaux
 Administration - Système windows, linux..Passerelle Internet sous linux Présenter par : Mounir GRARI 2012/2013.
Les listes de contrôle d’accès
Institut Supérieur d’Informatique
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 Introduction I Rappels sur les réseaux.
1 1 Rappel séances précédentes Les adresses la pile protocolaire l'encapsulation hub/switch/routeur.
Gérald Masquelier Antoine Mottier Cédric Pronzato Les Firewalls.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
 L'imprimante Unique Un pas vers les impressions totalement sécurisées Eric WIES – JRES 2011.
Février 2006X. Belanger / Guilde Introduction à. Février 2006X. Belanger / Guilde Qu'est ce que Samba ? ● Implémentation libre du protocole CIFS/SMB (client.
Scanning. Responsable : Remy FABREGES Objectif : découvrir des failles de sécurité, s’introduire dans la passerelle Outils : nmap, rooktits.
Terminaux virtuels (VTY)
Dar Es Salaam Routage Statique Jean Robert Hountomey.
Liste de contrôle d’accès
Le modèle TCP/IP Présentation Couche Interface-Réseau Couche Réseau
Module de gestion des tournées de livraison
Mettre à jour les données
Hot Standby Router Protocol (HSRP) - Partage de charge
Remote Desktop Protocol l'Appliance de Sécurité
QoS - Propagation de la Politique de QoS via BGP
Se connecter toujours depuis TecfaMoodle
Configurer NAT et PAT statique pour support d'un serveur Web interne
Commande ip nat service
Sécurité - Configuration du PIX
SNET: Administration et sécurisation des réseaux EPFC Alain Smets
Sécurité - ASA7.x/PIX 6.x et plus
CCNP Routage Chapitre 4 - Questionnaire N°1
Configuration NAT Overload (PAT)
Sécurité - Listes d'Accès - Standards et Etendues - Configuration
BGP - Configuration iBGP et eBGP avec ou sans adresse de Loopback
Configuration BGP de base
Réseau informatique Sorenza Laplume 1.
Commande show standby ccnp_cch ccnp_cch.
Installation et Configuration Internet Information Server (IIS 5)
show ip nat translations
Hot Standby Router Protocol standby preempt et standby track
Routage S 7 - Questionnaire N°1
Sécurité - Configuration de
Commande show ip eigrp topology
Proxy ARP ccnp_cch ccnp_cch.
CCNP Routage Chapitre 4 - Questionnaire N°1
Configuration NAT Utilisation de la commande outside source list
Support de NAT pour IPSec ESP Phase II
Pile IGMPv3 de Host.
Comment fonctionne RADIUS?
Configuration Frame Relay "Priority Queuing"
Configuration EIGRP - Agrégation de routes
Wireshark Capture et analyse de trames IP
IOS Firewall - Blocage d'applets Java
QoS - Configuration de NBAR (Network-Based Application Recognition)
Liste de contrôle d’accès
Progression Sécurité & réseaux TCP/IP - Cours1 : Révision réseaux
Windows Server 2012 Objectifs
Configuration NAT Dynamique
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
IPv6 : État des lieux et perspectives
Michaël HERVIEUX Thomas MEURISSE
Packet Filtering: iptables
CONFIGURATION D’UN ROUTEUR Introduction et planification du cours  Configuration d’un routeur  Administration d’un routeur  Protocoles RIP et IGRP 
Routes statiques IPv6 John Rullan
RE161 Répartition des adresses IP Le problème de la répartition des adresses IP dans le réseau doit être résolu avec comme objectifs : –de rendre le réseau.
Implémentation de FTP Rappel sur FTP Relation entre un site Web et FTP
Dridi Lobna 1 Couche Réseau II Réseau : Gestion de l’accès.
LES RESEAUX. Besoin de communication LES RESEAUX Pour communiquer via un réseau informatique Support de transmission Carte réseau Éléments de réseau.
Transcription de la présentation:

INSIA SRT 2 IPTABLES

Netfilter ● Netfilter : module qui fournit à Linux les fonctions de – pare-feu – de traduction d'adresse – et d'historisation du trafic réseau ● Netfilter fonctionne en mode noyau. Il intercepte et manipule les paquets IP avant et après le routage. ● iptables est en fait la commande qui permet à un administrateur de configurer Netfilter en espace utilisateur. – souvent utilisé pour parler de toute l'infrastructure Netfilter ● intégré à Linux à partir de la version 2.4

Fonctionnement général ● Installation par netfilter d'accroche (hooks) à divers endroits du passage d'un paquet entre : – la réception par l'interface réseau – et la délivrance au processus de couche supérieure ou le routage vers une autre interface ● Des chaînes sont mises en places par le hook pour traiter les paquets ● Associées à la nature du traitement (filtre, nat, etc.) : les tables ● Les chaînes contiennent des règles qui sont examinées les unes après les autres pour chaque paquet accroché à un endroit précis – Un ou plusieurs critères : adresse source, protocole, etc – une action associée : rejet, autorisation, archivage, etc.

Tables ● trois tables principales, mais des modules d'extension peuvent en créer de nouvelles. ● Chaque table contient des chaînes prédéfinies à travers lesquelles les paquets vont passer. ● On peut rediriger les paquets vers des chaînes personnelles qui se trouvent dans un espace « privé ». ● Au départ, toutes les chaînes sont vides et leur politique par défaut est d'accepter les paquets. ● Pour comprendre netfilter, il est plus simple de prendre chaque table indépendamment

Table filter ● La table filter est responsable du filtrage des paquets. Son utilisation principale est de jeter (DROP) ou de laisser passer (ACCEPT) les paquets. La table fournit : – une chaîne INPUT pour filtrer les paquets à destination du système, – une chaîne OUTPUT pour filtrer les paquets émis par les processus du système, – et une chaîne FORWARD pour filtrer les paquets que le système doit transmettre.

Table nat ● translation d'adresses et de ports – Seul le premier paquet de chaque connexion passe à travers cette table. Les règles déterminent comment seront modifiés tous les paquets relatifs à cette connexion. ● La chaîne PREROUTING traite les paquets arrivant de l'extérieur avant qu'ils ne soient routés. Elle permet de modifier la destination de la connexion (DNAT). ● La chaîne POSTROUTING traite les paquets après la décision de routage, juste avant que le paquet soit expédié. Elle permet la modification de la source de la connexion (SNAT). On peut ainsi camoufler la véritable origine d'une connexion. ● La chaîne OUTPUT fonctionne comme la chaîne PREROUTING mais pour les connexions issues d'un processus du système.

Table mangle ● transformation des options des paquets comme par exemple la qualité de service. Tous les paquets passent à travers cette table dans une ou plusieurs chaînes ● Ils passent : – dans la chaîne PREROUTING juste avant le routage s'ils proviennent d'une interface réseau ; – dans la chaîne INPUT s'ils sont destinés à une adresse du système ; – dans la chaîne OUTPUT s'ils ont été émis par un processus du système ; – dans la chaîne FORWARD s'ils proviennent d'une interface réseau et qu'ils sont destinés à une autre interface réseau ; – et dans la chaîne POSTROUTING après le routage, juste avant d'être expédiés.

Syntaxe ● Forme longue et forme courte pour la syntaxe ● iptables --flush INPUT ● iptables -F INPUT ● iptables --policy FORWARD DROP ● ou ● iptables -P FORWARD DROP ● Dans la suite, on utilisera le plus souvent la forme courte.

Filtre ● Pas comme un Firewall classique ● Chaîne INPUT, OUTPUT, FORWARD ● Séléctionné par défaut lors de la configuration ● Pas besoin de le préciser : ● iptables -L ● Pour les autres tables, il faut préciser avec -t ● iptables -t nat -L

Filtre : configuration simple ● Dans la table Filtre, chaîne INPUT, ajout d'une règle : ● iptables -A INPUT critères -j TARGET (action) ● Les règles sont examinées dans l'ordre pour chaque paquet. en fonction de votre politique de sécurité, faire attention à l'ordre ● insérer une règle : ● iptables -I INPUT 3 critères -j TARGET ● supprimer une règle : ● iptables -I INPUT 3 critères -j TARGET ● Supprimer toutes les règles de la chaîne INPUT : ● iptables -F INPUT ● Lister : ● iptables -L ou iptables -L INPUT

Filtre : configuration simple ● Plusieurs critères de base possibles : ● -p, --protocol [!] protocole ● -s, --source [!] addresse[/masque] ● -d, --destination [!] addresse[/masque] ● -i, --in-interface [!] [nom] ● -o, --out-interface [!] [nom]

Filtre : configuration simple ● Pour un ensemble de critère sur une règle, plusieurs actions possibles : ● -j ACTION – DROP / REJECT (plusieurs types de REJECT) – ou ACCEPT ● iptables -A FORWARD -i eth0 -s o eth1 -p tcp -j ACCEPT

Filtre : politique par défaut ● Que faire des paquets qui sont examinés, mais ne correspondent à aucune règle ? ● Politique par défaut pour la châine : – TOUT AUTORISER – ou TOUT INTERDIRE ● iptables -P OUTPUT DROP ● ou ● iptables -P OUTPUT ACCEPT ● Pas de politique REJECT

Configuration avancée : tcp ● -p tcp doit être spécifié ● --source-port [!] [port[:port]] ● --destination-port [!] [port[:port]] ● --tcp-flags [!] masque comp ● premier argument : drapeaux qui doivent être examinés ● deuxième argument : drapeaux qui doivent être positionnés ● Les drapeaux sont : SYN ACK FIN RST URG PSH ALL NONE. ● iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN ● ne sélectionnera que les paquets avec le drapeau SYN positionné, et les drapeaux ACK, FIN et RST non positionnés.

Configuration avancée : tcp ● [!] --syn ● Ne sélectionne que les paquets TCP dont le bit SYN est positionné et dont les bits ACK et FIN ne sont pas positionnés. De tels paquets sont utilisés pour les requêtes d'initiation de connexion TCP; par exemple si l'on bloque ce type de paquets entrants sur une interface, cela bloquera les connexions TCP entrantes, mais les connexions TCP sortantes ne seront pas affectées. Cela est équivalent à --tcp-flags SYN,RST,ACK SYN. Si le signe "!" précède le "--syn", le sens de l'option est inversé.

Configuration avancée : udp ● -p udp doit être spécifié ● --source-port [!] [port[:port]] ● --destination-port [!] [port[:port]]

Configuration avancée : icmp ● -p icmp doit être spécifié ● --icmp-type [!] nom_du_type_icmp ● Cela autorise la spécification d'un type ICMP, qui peut être un type ICMP numérique, ou l'un des noms de type ICMP fourni par la commande ● iptables -p icmp -h ● --mac-source [!] addresse ● Correspondance avec l'adresse MAC. Cela doit être de la forme XX:XX:XX:XX:XX:XX. Notez que cela a un sens seulement pour les paquets utilisant les chaînes PREROUTING, FORWARD ou INPUT et en provenance de cartes réseau Ethernet.

Chaînes utilisateurs ● Possibilité d'optimiser l'examen des flux – rediriger les flux d'un certain type vers une chaîne créée par l'utilisateur – dans cette chaîne, examen en détail du flux – Intérêt ? ● Création de la chaîne utilisateur : ● iptables -N tcppackets ● Redirection des flux vers cette chaîne à partir d'une chaîne publique : ● iptables -A INPUT 1 -p tcp -j tcppackets ● Possiblité de faire des chaînes qui se rapprochent d'un firewall conventionnel ● chaînes Internet-DMZ, DMZ-LAN, LAN-Internet par exemple

Modules supplémentaires ● Des modules permettent d'augmenter grandement les capacités de iptables ● Pour le connection tracking ● Pour du filtrage de données ● Pleins de modules créés par des tiers, disponibles sur le site de iptables ● Il faut activer le module pour avoir accès à ses options : ● -m nom_module -options

Connection tracking ● Permet de suivre des connexions déjà établies : stateful ● -m state --state états ● liste des états de connexions que l'on veut détecter : – INVALID : paquet associé avec aucune connexion connue – ESTABLISHED : paquet associé avec une connexion qui a vu passer des paquets dans les deux sens – NEW : paquet a initié une nouvelle connexion, ou sinon qu'il est associé avec une connexion qui n'a pas vu passer de paquets dans les deux sens – RELATED : paquet initie une nouvelle connexion, mais qu'il est associé avec une connexion existante, comme un transfert de données FTP, ou une erreur ICMP.

Logs ● Autre cible que ACCEPT, REJECT, DROP ou userchain ● -j LOG : enregistrer des paquets via syslog ● Dans la facilité kern ● --log-level priorité ● --log-prefix préfixe ● Rajouter un préfixe au log, 29 caractères max ● --log-tcp-sequence ● Journalise le numéros de séquence TCP. Ceci peut être un risque pour la sécurité si les fichiers de log sont lisibles par les utilisateurs ordinaires. ● --log-tcp-options : Option de journalisation de l'en-tête TCP ● --log-ip-options : Option de journalisation de l'en-tête IP

Logs ● les paquets traversants logs ne s'arrêtent pas là, ils continuent d'être examinés ● si l'on veut loggués des paquets droppés par exemple ● d'abord mettre la règle avec target LOG ● ensuite la même règle avec target DROP ● En général, on positionne au moins log en dernier lieu pour logguer tous les paquets qui n'ont pas matché les règles, avant l'arrivée à la politique par défaut.

Limitation de charge ● Module limit : laisser passer les paquets correspondants à un débit limité, en utilisant un filtre à jetons (token bucket filter) – souvent utilisé conjointement avec la cible LOG pour limiter la taille des logs. Une règle utilisant cette extension laissera passer les paquets correspondants jusqu'à ce que cette limite soit atteinte (à moins que le drapeau `!' soit utilisé ). ● --limit taux ● Taux maximum de correspondance : spécifié par un nombre, avec un suffixe optionnel `/second', `/minute', `/hour', ou `/day' ; la valeur par défaut est 3/hour. ● --limit-burst nombre ● Le nombre initial maximum de paquets correspondants : ce nombre est incrémenté de 1 chaque fois que la limite spécifié ci dessus n'est pas atteinte, jusqu'à ce que ce nombre soit atteint; la valeur par défaut est 5.

Limitation de charge (suite) ● iptables -A FORWARD -m limit -j LOG ● avec limit rate par defaut : 3/hour. ● avec limit burst number par default : 5 ● Première fois que cette règle est atteindre, 5 premiers loggués ● Le limit burst tombe à 0 ● Rechargé de 1 toutes les 20 minutes si pas de nouveau paquet. paquets : – il faudra donc attendre 20 minutes pour qu'un nouveau paquet soit enregistré ● Si, au bout de 1 heure, aucun paquet n'atteint la règle, le burst est rechargé à son full : retour au départ

Lister les chaînes ● iptables -L -v -n ● -L : lister ● -v : sortie verbeuse, tous les détails sont là ● -n : pas de résolution DNS inverse (numérique) ● iptables -Z -L – Met les compteurs à zéro avant le listage des règles

Translation d'adresse : table nat ● Accessible avec -t nat ● Plusieurs types ● La chaîne PREROUTING traite les paquets arrivant de l'extérieur avant qu'ils ne soient routés. Elle permet de modifier la destination de la connexion (DNAT). ● La chaîne POSTROUTING traite les paquets après la décision de routage, juste avant que le paquet soit expédié. Elle permet la modification de la source de la connexion (SNAT). On peut ainsi camoufler la véritable origine d'une connexion. ● La chaîne OUTPUT fonctionne comme la chaîne PREROUTING mais pour les connexions issues d'un processus du système.

Source nat : nat statique ● Dans chaîne POSTROUTNG, juste avant envoi des paquets ● ## Changer l'adresse source en ● # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to ● ## Changer l'adresse source en , ou ● # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to ● ## Changer l'adresse source en , port ● # iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to :1-1023

Source nat : masquerading ● Camouflage d'adresse : les paquets provenant d'une interface prennent l'adresse IP de l'interface de sortie ● ## Camoufler tout ce qui sort par eth0 ● # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ● Ici, on ne précise pas d'interface entrante = toutes les interfaces autres que eth0 seront natées ● Plutôt utilisé dans la plupart des cas, pour interfaces avec adresses IP dynamique

Destination NAT ● ## Changer l'adresse de destination en ● # iptables -t nat -A PREROUTING -i eth0 -j DNAT --to ● ## Changer l'adresse de destination en , ou ● # iptables -t nat -A PREROUTING -i eth0 -j DNAT --to ● ## Changer l'adresse de destination du trafic web en , port 8080 ● # iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 \ ● -j DNAT --to :8080

Redirection (port forwarding) ● ## Envoyer le trafic web entrant du port-80 vers notre mandataire (transparent) Squid ● # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 \ ● -j REDIRECT --to-port 3128

Forwarding ● Attention : pour toute opération de transit des paquets à travers la machine, il est impératif d'activer le ip forwarding ● echo 1 > /proc/sys/net/ipv4/ip_forward ● NETWORKING=yes dans /etc/sysconfig/network pour Mandrake ● ip_forward=yes dans /etc/network/options pour Debian