Netfilter/Iptables Introduction.

Slides:



Advertisements
Présentations similaires
Qualité de Service sur Linux
Advertisements

Module 5 : Implémentation de l'impression
Page d accueil.
Liste de contrôle d’accès
M2: Les parefeux Université Paris II & LRI Michel de Rougemont 1.Quest ce quun parefeu ? 2.Architecture des parefeux.
– Routage. Sommaire 1)Principes fondamentaux 1)Routage statique et dynamique 1)Convergence 1)Routage à vecteur de distance 1)Routage à état de liens 1)Systèmes.
- 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.
– NAT et PAT.
14 - Adresse IP et interfaces. Plan détude 1)Adresse IP dune interface 1)Résolution de nom vers IP statique 1)Service DNS 1)Spécification des interfaces.
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.
DUDIN Aymeric MARINO Andrès
Les Firewall DESS Réseaux 2000/2001
Module 3 : Gestion et analyse du service DHCP
Vue d'ensemble Présentation multimédia : Rôle du routage dans l'infrastructure réseau Activation et configuration du service Routage et accès distant Configuration.
Vue d'ensemble Implémentation de la sécurité IPSec
Module 6 : Gestion et analyse du système DNS
Module 7 : Résolution de noms NetBIOS à l'aide du service WINS
Firewalling et NAT sous LINUX
! 1 CREATION D'UNE MAQUETTE EXPORT / IMPORT
Cours Présenté par …………..
FLSI602 Génie Informatique et Réseaux
UDP – User Datagram Protocol
TP sur le filtrage avec iptables
Assistance à distance Parfois on se sent bien seul face à un problème informatique surtout si on n’est qu’un simple utilisateur. Lorsqu'un problème survient.
Active Directory Windows 2003 Server
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
SECURITE DU SYSTEME D’INFORMATION (SSI)
Structures de données linéaires
Pare-feu.
1 Sécurité Informatique : Proxy Présenter par : Mounir GRARI.
Labview Programmation réseau Communication par sockets
À l’aide du sniffer Etherpeek
Module 2 : Préparation de l'analyse des performances du serveur
Module 3 : Création d'un domaine Windows 2000
Le Modele OSI.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Vue d'ensemble Configuration d'adresses IP
Les Access-lists sur routeurs Cisco
Progression Sécurité & réseaux TCP/IP - Cours1 : Révision réseaux
PHP 5° PARTIE : LES COOKIES
 Administration - Système windows, linux..Passerelle Internet sous linux Présenter par : Mounir GRARI 2012/2013.
Sommaire Dans ce chapitre, nous aborderons :
Interconnexion de réseaux par des routeurs sous GNU/Linux
ARP Le protocole ARP Pour qui utilise-t-on le protocole ARP ? ou
User Datagram Protocol
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Les listes de contrôle d’accès
Institut Supérieur d’Informatique
PROCEDURE TYPE PROCEDURE TYPE DE
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
Répartition des adresses IP
Introduction à la sécurité des interconnexions Internet
Exemples de paramètrage ACL VLAN niveau 3
FTP : File Transfer Protocol (protocole de transfert de fichier ) est un protocole de communication destiné à l'échange informatique de fichiers sur.
Le protocole DHCP.
Module 3 : Création d'un domaine Windows 2000
LE PARE-FEU AMON. MAI 2002.
Mise en place de translation d’adresses NAT/PAT
1 Windows 2003 Server Stratégie des comptes. 2 Windows 2003 Server Il faut tenir compte de ces 3 paramètres.
Olivier Allard-Jacquin version juillet 2003 GUILDE:Groupement des utilisateurs Linux du Dauphiné 1 / 37 Introduction I Rappels sur les réseaux.
Architecture Client/Serveur
Afnog 2009 Liste de contrôle d’accès Jean Robert HOUNTOMEY
Configuration NAT Dynamique
Chapitre8 Configuration de l'adressage TCP/IP et de la résolution de noms Module S41.
CentralWeb F. Playe1 Principes de base du routage IP Ce cours est la propriété de la société CentralWeb. Il peut être utilisé et diffusé librement.
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.
INSIA SRT 2 IPTABLES. Netfilter ● Netfilter : module qui fournit à Linux les fonctions de – pare-feu – de traduction d'adresse – et d'historisation du.
Transcription de la présentation:

Netfilter/Iptables Introduction

Présentation – 1 Netfilter est un module du noyau Linux qui assure les fonctionnalités suivantes : pare-feu traduction d'adresse (NAT) et de ports (PAT)‏ historisation du traffic Netfilter fonctionne en mode noyau il récupère les paquets grâce à des hooks et peut les manipuler avant et après le routage Netfilter constitue un framework utilisé par de nombreux pare-feux

Présentation – 2 Iptables est la commande en espace utilisateur qui permet de paramétrer Netfilter on fait très souvent l'amalgame entre Netfilter et Iptables

Historique NetFilter/Iptables est intégré au noyau Linux depuis la version 2.4 (1998)‏ Il est le successeur de ipchains

Caractéristiques -1 Netfilter est le pare-feu standard de Linux et est mis en oeuvre dans de nombreuse solutions commerciales. Netfilter est un pare-feu à états (stateful): il peut prendre des décisions de routage/filtrage en fonction de l'état d'une connexion TCP très flexible et modulaire il est très largement utilisé et dispose d'une abondante documentation.

Caractéristiques - 2 on trouve de nombreuses solutions permettant de simplifier son utilisation interfaces graphiques (Firestarter, Firebuilder, .... méta-langages (Firehol, ...)‏ solutions intégrées Netfilter ne joue pas le rôle de proxy ni d'IDS sa configuration peut être complexe (plusieurs centaines de règles pour les cas complexes)‏

Principes Netfilter utilise des listes d'accès qui sont regroupées dans des "chaînes", elles mêmes contenues dans des tables. Chaque paquet IP qui arrive, traverse, sort de du noyau Linux est analysé et traité (accepté, rejeté, refusé, modifié, redirigé) en fonction des règles qui lui sont applicables. Netfilter permet de faire de la translation d'adresses et du masquage (translation de ports).

Netfilter : le filtrage Netfilter peut filtrer sur Les adresses/blocs d'adresse IP Les ports source et/ou destination Les protocoles (TCP, UDP, ICMP)‏ Les adresses MAC L'état éventuel de la connexion TCP

Les 3 tables FILTER : table par défaut, contient les chaines de règles de filtrage NAT : contient les règles de translation d'adresses /ports MANGLE : contient les règles de modification de paquets (peu utilisée)

La table FILTER 3 chaines prédéfinies : FORWARD : contient les règles à appliquer aux paquets qui traversent (routage)‏ INPUT : contient les règles à appliquer aux paquets destinés aux processus locaux OUTPUT : contient les règles à appliquer aux paquets émis par les processus locaux

La table NAT permet d'effectuer toutes les translations d'adresses nécessaires. La chaîne PREROUTING. Permet de faire de la translation d'adresse de destination (DNAT). La chaîne POSTROUTING. permet de faire de la translation d'adresse de la source (SNAT), comme du masquage d'adresse (MASQUERADE). La chaîne OUTPUT. permet de modifier la destination de paquets générés localement (par la passerelle elle-même).

La table MANGLE permet de marquer l'en-tête des paquets (gestion de la QOS, ...)‏

Les chaînes 5 chaînes prédéfinies

Les cibles – 1 ACCEPT : Les paquets envoyés vers cette cible seront tout simplement acceptés et pourront poursuivre leur cheminement au travers des couches réseaux. DROP : Cette cible permet de jeter des paquets qui seront donc ignorés. REJECT : Permet d'envoyer une réponse à l'émetteur pour lui signaler que son paquet a été refusé. LOG : Demande au noyau d'enregistrer des informations sur le paquet courant. Cela se fera généralement dans le fichier /var/log/syslog (selon la configuration du programme syslogd).

Les cibles – 2 MASQUERADE : Cible valable uniquement dans la chaîne POSTROUTING de la table nat. Elle change l'adresse IP de l'émetteur par celle courante de la machine pour l'interface spécifiée. Cela permet de masquer des machines et de faire par exemple du partage de connexion. SNAT : Egalement valable pour la chaîne POSTROUTING de la table NAT seulement. Elle modifie aussi la valeur de l'adresse IP de l'émetteur en la remplaçant par la valeur fixe spécifiée. DNAT : Valable uniquement pour les chaînes PREROUTING et OUTPUT de la table nat. Elle modifie la valeur de l'adresse IP du destinataire en la remplaçant par la valeur fixe spécifiée.

Les cibles - 3 RETURN : Utile dans les chaînes utilisateurs. Cette cible permet de revenir à la chaîne appelante. Si RETURN est utilisé dans une des chaînes de base précédente, cela est équivalent à l'utilisation de sa cible par défaut.

Iptables – Syntaxe de base – 1 Syntaxe : Fonction : iptables -h aide en ligne iptables -L lister les chaînes et règles actives iptables -N chain créer une nouvelle chaîne utilisateur iptables -X chain supprimer chaîne utilisateur iptables -F [chain] vider une chaîne (ou toutes)‏ iptables -P chain cible traitement par défaut pour une règle iptables -A chain règle ajouter une règle à la chaîne

Iptables – Syntaxe de base – 2 Syntaxe : Fonction : iptables -A chain règle ajouter une règle à la chaîne iptables -I chain [numéro] règle insérer une chaîne en position numéro iptables -D chain [numéro] [règle] effacer une règle iptables -R chain [numéro] [règle] remplacer une règle iptables -C chain tester un paquet dans une règle iptables -Z [chain] remettre à zéro les compteurs

Iptables – Les options -i interface : appliquer la règle sur cette interface d'entrée -o interface : appliquer la règle sur cette interface de sortie -t table : table concernée ( filter par défaut)‏ -s [!] X.X.X.X/lg adresse source, longueur du masque, ! signifie la négation -d [!] X.X.X.X/lg adresse dest (et longueur du masque)‏ -p protocole tcp / udp / icmp / all --source-port [!] [port[:port]] port source (ou intervalle de ports)‏ --destination-port [!] [port[:port]] port destination (ou interv.de ports)‏ --tcp-flags [!] masq comp flags de paquets tcp ( ex. SYN)‏ -j cible ACCEPT/DROP/QUEUE/RETURN/REDIRECT/MASQUERADE / DNAT/ SNAT/ LOG

Sauvegarde-Restauration les règles sont stockées en mémoire pour les sauvegarder : iptables-save pour les restaurer : iptables-restore

Iptables – Exemples -1 vidage chaine INPUT iptables -F INPUT politique par défaut pour la chaine INPUT iptables -P INPUT ACCEPT

Le filtrage à états – 1 Iptables permet d’effectuer du filtrage à états : c’est à dire qu’il permet de tenir compte de l’état de la connexion TCP pour prendre une décision de filtrage --state : Permet de spécifier l'état du paquet à faire correspondre parmi les états suivants : ESTABLISHED : paquet associé à une connexion déjà établie NEW : paquet demandant une nouvelle connexion INVALID : paquet associé à une connexion inconnue RELATED : Nouvelle connexion mais liée, idéal pour les connexions FTP

Le filtrage à états – 1 Exemples : # iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state -- state ESTABLISHED -j ACCEPT

Filtrage de base iptables -t filter -F iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED --jump ACCEPT iptables -t filter -A INPUT --protocol tcp --destination-port 80 -- jump ACCEPT iptables -t filter -A INPUT -m state --state NEW,INVALID --jump DROP

La NAT - SNAT SNAT : cible valable dans la table NAT dans la chaîne POSTROUTING – à utiliser avec un adresse fixe syntaxe : --to-source <adresse-ip>[-<adresse-ip>][:port- port] Ex : iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 193.15.24.156

La NAT - DNAT Cette cible n'est valable que dans la table nat , dans les chaînes PREROUTING et OUTPUT , et dans les chaînes définies par l'utilisateur qui sont appelées par celles-ci. Elle spécifie que l'adresse de destination du paquet doit être modifiée (ainsi que tous les paquets à venir dans le cadre de cette connexion ), et que les règles doivent cesser d'être examinées. Elle reçoit une option : --to-destination <adresse-ip>[-<adresse-ip>][:port-port] qui peut spécifier une seule adresse IP de destination, une série d'adresse IP inclusive , et optionnellement, une plage de ports (qui n'est valide que si la règle spécifie aussi -p tcp ou -p udp). Si aucune plage de port n'est spécifiée, le port de destination ne sera jamais modifié. Ex : iptables -t nat -p tcp -A PREROUTING -j DNAT --destination- port 80 --to-destination 192.168.1.3:80

La NAT - MASQUERADE Cette cible n'est valable qu'avec la table nat , dans la chaîne POSTROUTING à utiliser uniquement avec une adresse dynamique: si vous avez une adresse IP statique, vous devez utiliser la cible SNAT. Le masquerading revient à spécifier une translation (mapping) vers l'adresse IP de l'interface par laquelle le paquet va sortir, mais implique aussi que les connexions sont perdues lorsque l'interface tombe. option : --to-ports <port>[-<port>] qui spécifie une série de ports source à utiliser, qui prend le pas sur la sélection heuristique de port source SNAT (voir ci dessus). Ceci n'est valide que si la règle spécifie aussi -p tcp ou -p udp. Ex : iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Les chaines utilisateurs – 1 Création de la chaîne sur laquelle les filtres seront appliqués ; # iptables -N internet Ensuite, on associe la chaîne 'internet' à la chaîne INPUT, c'est à dire en entrée sur l'interface 'eth0' ; # iptables -A INPUT -i eth0 -j internet Permet : ESTABLISHED : permet d'avoir le mode 'stateful', c'est à dire qui regarde la validité des paquets retour par rapport aux fenêtres ; RELATED : permet d'accepter les paquets ICMP d'erreur concernant la transaction.

Les chaines utilisateurs – 2 # iptables -A internet -m state --state ESTABLISHED,RELATED -j ACCEPT Tout ce qui arrive sur cette interface, matché par cette chaîne, est journalisé. # iptables -A internet -p all -s any/0 -d any/0 -j LOG Il est nécessaire maintenant d'autoriser les flux (ici, le service SSH de 'any 0/0' vers 'yoda 10.0.0.1/32') ; # iptables -A internet -i eth0 -p tcp -s 0/0 -d 10.0.0.1/32 -- source-port 1023: --destination-port 22 -j ACCEPT On interdit tout. # iptables -A internet -i eth0 -p all -s any/0 -d any/0 -j DROP

Le logging Met en service la journalisation du noyau (kernel logging ) pour les paquets correspondants. Lorsque cette option est positionnée pour une règle, le noyau Linux affichera certaines informations sur tous les paquets correspondants à cette règle (comme la plupart des champs de l'en-tête IP) par l'intermédiaire des journaux du noyau. --log-level niveau Niveau de journalisation (cf syslog.conf(5)). --log-prefix préfixe Préfixe les messages de journalisation avec le préfixe spécifié; utile pour distinguer les différents messages d'un fichier de log. --log-tcp-options Option de journalisation de l'en-tête de paquets TCP. --log-ip-options Option de journalisation de l'en-tête de paquets IP.

Blocage des adresses privées # On refuse les paquets des classes privées iptables –A INPUT –i eth0 –s 10.0.0.0/8 –j DROP iptables –A INPUT –i eth0 –s 172.16.0.0/12 –j DROP iptables –A INPUT –i eth0 –s 192.168.0.0./16 –j DROP

Remarques de mise en oeuvre - 1 Toute mise en place de pare-feu doit débuter par la remise à zero des chaines standard iptables -F iptables -F -t nat iptables -F -t mangle Des chaines utilisateurs iptables -X iptables -X -t nat iptables -X -t mangle Remise à zero des compteurs iptables -Z

Remarques de mise en oeuvre - 2 Stratégie par défaut : Drop iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP Autorisation sur loopback iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT Utilisation d’outils : nmap pour effectuer un scan de ports

Exemple 1 – un pare feu de base Bloque toutes les connexions entrantes depuis l'extérieur Hyp. : eth0 : LAN, eth1 : extérieur Réseau local en 192.168.x.y , passerelle en 192.168.1.1 On crée une chaine pour filtrer selon l'état des paquets : iptables -N block iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A block -m state --state NEW -i ! eth1 -j ACCEPT iptables -A block -j DROP iptables -A INPUT -j block iptables -A FORWARD -j block

Example 2 PRIVPORTS=“0:1023” # ports système UNPRIVPORTS=“1024:65535” #ports standard #DNS autorisé iptables –A OUTPUT -o eth0 –p udp –s $MY_IP -sport 53 -d $NAMESERVER - dport 53 –j ACCEPT iptables –A INPUT -I eth0 –p udp –s $NAMESERVER -sport 53 -d $MY_IP -dport 53 –j ACCEPT #connexion SSH autorisée iptables –A INPUT -I eth0 –p tcp -sport $UNPRIVPORTS - -dport 22 – j ACCEPT iptables –A OUTPUT -o eth0 –p tcp –s $MY_IP -sport 22 -dport $UNPRIVPORTS –j ACCEPT