Administration système et réseau avancée 2005-2006 ● rappel sur le routage ● traduction d'adresse ● Firewall ● Les pares-feus libres : – Netfilter/iptables.

Slides:



Advertisements
Présentations similaires
Firewall sous Linux Netfilter / iptables.
Advertisements

DUDIN Aymeric MARINO Andrès
Firewalling et NAT sous LINUX
Netfilter/Iptables Introduction.
Institut Supérieur d’Informatique
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
Comprendre Internet Bases théoriques et exercices pratiques, pour débutants complets... Et curieux !
1 1 Rappel séances précédentes Les adresses la pile protocolaire l'encapsulation hub/switch/routeur.
Rappel réseau: routage ● Une machine sait transmettre les datagrammes sur les sous-réseaux de ses interfaces (réseaux locaux) ● Les autres datagrammes.
LES FONCTIONS D'UN SYSTEME D'EXPLOITATION ● Le système d'exploitation contrôle entièrement les ressources matérielles locales. ● Il est responsable de.
Gérald Masquelier Antoine Mottier Cédric Pronzato Les Firewalls.
Généralités sur les réseaux Généralités sur les réseaux informatiques.
Windows NT/2000/XP Enjeux et contraintes techniques Douzième partie La sécurité C. Casteyde Document diffusé sous licence GNU FDL.
INSIA SRT 2 IPTABLES. Netfilter ● Netfilter : module qui fournit à Linux les fonctions de – pare-feu – de traduction d'adresse – et d'historisation du.
1 Observer le paramétrage d’un réseau. 2 Dans notre réseau téléphonique habituel, les postes, reliés à un auto-commutateur... …peuvent dialoguer, car.
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.
Adressage IP Page 1 L’adressage IP.
INTERNET #1 Qu’est-ce qu’internet ? Qu’est-ce qu’un site internet ?
Dar Es Salaam Routage Statique Jean Robert Hountomey.
Le modèle TCP/IP Présentation Couche Interface-Réseau Couche Réseau
Couche 3.
Chapitre10 Prise en charge des utilisateurs distants
Module de gestion des tournées de livraison
Qu’est-ce un serveur de messagerie?
L’IPv6.
Hot Standby Router Protocol (HSRP) - Partage de charge
Remote Desktop Protocol l'Appliance de Sécurité
Commande ip nat service
Sécurité - ASA7.x/PIX 6.x et plus
Notions de base sur les réseaux
BGP - Configuration iBGP et eBGP avec ou sans adresse de Loopback
Réseau informatique Sorenza Laplume 1.
Types et Codes de paquet ICMPv6
show ip nat translations
Mise en place d’un serveur DHCP
Centralisation de logs
Hot Standby Router Protocol standby preempt et standby track
Routage S 7 - Questionnaire N°1
Chapitre 12 Surveillance des ressources et des performances
Sécurité - Configuration de
Proxy ARP ccnp_cch ccnp_cch.
CCNP Routage Chapitre 4 - Questionnaire N°1
Configuration NAT Utilisation de la commande outside source list
Pile IGMPv3 de Host.
Changer les critères de nommage
RIP - Configuration des Extensions.
Comment fonctionne RADIUS?
Sécurité - Configuration d'un
Wireshark Capture et analyse de trames IP
Les Pare-Feu.
Progression Sécurité & réseaux TCP/IP - Cours1 : Révision réseaux
Windows Server 2012 Objectifs
HTTP DNS NTP FTP R231 RJ45 definition HTTP DNS NTP FTP R231 RJ45.
Configuration NAT Dynamique
Bureau distant sur Windows Vista /2008 Server
DNS ET DHCP SOUS LINUX INSTALLATION ET CONFIGURATIONS EXPOSE GROUPE 2 THEME:THEME: REDIGE PAR IBRAHIMA FAYE.
Les protocoles de la couche application Chapitre 7.
Mise en place d'un Serveur Radius pour la sécurité d'un réseau Wireless sous Windows Serveur Présenter par le Stagiaire : Etienne Mamadou Guilavogui.
Chapitre2: SGBD et Datawarehouse. On pourrait se demander pourquoi ne pas utiliser un SGBD pour réaliser cette structure d'informatique décisionnelle.
TP N°4 Développement d’ une application client / Serveur en utilisant les Sockets TCP.
IPv6 : État des lieux et perspectives
Formation CCNA 16 - Routage Classless VLSM/CIDR. Sommaire 1)Introduction au routage classless 2)CIDR* 3)VLSM** 4)Configuration * Classless Inter-Domain.
Michaël HERVIEUX Thomas MEURISSE
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.
Internet Stage – Semaine 5.
Transcription de la présentation:

Administration système et réseau avancée ● rappel sur le routage ● traduction d'adresse ● Firewall ● Les pares-feus libres : – Netfilter/iptables – IP Filter – packet Filter

Rappel réseau: routage ● Une machine sait transmettre les datagrammes sur les sous-réseaux de ses interfaces (réseaux locaux) ● Les autres datagrammes sont envoyés à un routeur directement joignable (situé sur un réseau local) ● Une machine qui sait transmettre un datagramme reçu sur l'une de ses interface sur une autre de ses interface est appelée routeur (ou, par abus de langage, passerelle).

routage (2) ● Table de routage (netstat -nr) ● Routage dynamique : un programme externe modifie la table de routage

Algorithme de routage ● quand une machine M a un paquet à transmettre, elle applique l'algorithme suivant : – si le paquet est pour une machine située sur l'un des sous-réseaux d'une de ses cartes réseau, il est envoyé directement à la destination – si le paquet est pour un hôte pour lelque M a une route définie, il est envoyé au routeur défini dans la route – si le paquet est pour un réseau pour lelque M a une route définie, il est envoyé au routeur défini dans la route – sinon, le paquet est envoyé à la passerelle par défaut de M

Routage P3 P6 P2P1 routeur vers internet P5 R3 R1 R5 R0 R6 R2 R4 P4

Traduction d'adresses ● problèmatique ● divers types de traduction d'adresses ● de l'obligation de pouvoir modifier les identifiants de transport ● configuration sous Linux et sous Windows ● limitation de la traduction d'adresses: ftp et ALG (helpers) ● traduction d'adresse et sécurité ● Bibliographie

maquette 1 Routeur salle P3 P2 R1 R2 Couleurs: ● vert: routage activé ● - bleu: hôtes non routeur R1: /24 R2: /24 Bridge d HostOnl y P1 Internet

Maquette 1 ● la machine P1 a une interface réseau en mode bridged sur R2 et une interface réseau en mode « host only » sur R1. ● les autres ordinateurs ont une seule interface réseau en mode « host only » sur R1. ● Le routeur de la salle n'est pas administré par vous. Sa configuration ne tient pas compte de votre sous-réseau. ● Quid de la connectivité IP entre P2 et P3, P2 et P1, P1 et le routeur de la salle ( ), P2 et le routeur de la salle ?

traduction d'adresse ● motivations d'origine: – palier la pénurie d'adresses IP – permettre un accès à internet depuis des adresses privées (RFC 1918) ● Principe: – un routeur remplace les adresses IP sources ou destinations des paquets qu'il route de façon à ce que seules des adresses ip publiques apparaissent – les ports tcp/udp peuvent aussi être modifiés (selon le type de NAT) – la charge utile du paquet peut parfois être modifiée

traduction d'adresse S réseau privé NAT Internet P1 IP SRC: S IP DST: NAT IP SRC: S IP DST: P1 IP SRC: NAT IP DST: S IP SRC: P1 IP DST: S

type de NAT: ● nat de base ● nat dynamique ● NAPT: traduction d'adresses et de ports (NAPT MASQuerade) ● NAT bi-directionnel ● NAT double (twice NAT) ● NAPT avec redirection de port (port forwarding)

nat de base S réseau privé NAT Internet P2 IP SRC: S IP DST: E1 IP SRC: S IP DST: P1 IP SRC: E1 IP DST: S IP SRC: P1 IP DST: S table statique: P1: E1 P2: E2... P1

nat dynamique S réseau privé NAT Internet P2 IP SRC: S IP DST: E1 IP SRC: S IP DST: P1 IP SRC: E1 IP DST: S IP SRC: P1 IP DST: S table dynamique: P1: E1 P2: E2... P1

NAT bi-directionnel ● dans une version ultérieure de ce support ● pour permettre à des machines distantes d'accèder directement à des machines internes ● s'appuie sur le dns: – le serveur dns (en général la passerelle NAT) permet à la passerelle NAT de noter les association requete dns, ip distante – quid en cas de plusieurs requetes depuis la même ip distante ?

NAT double (twice NAT) ● on change adresses sources et destination. ● utilisé pour cacher les adresses sources aux destinations et lycée de Versailles. ● utile en cas de collision d'adresses entre sources et destination. Exemple: une entreprise qui a utilisé deux sous-réseaux privés identiques.

NAPT avec redirection de port (port forwarding): trafic entrant S réseau privé NAT Internet P2 P1 IP SRC: P1 port src: pd1 IP DST: S port dst: ps1 IP SRC: NAT port src: pdN IP DST: S port dst: ps1 IP SRC: S port src: ps1 IP DST: P1 port dst: pd1 IP SRC: S port src: ps1 IP DST: NAT port dst: pdN table statique: port NAT -> IP interne/Port interne

NAPT: traduction d'adresses et de ports (NAPT MASQuerade) S réseau privé NAT Internet P2 IP SRC: S port src: pd1 IP DST: P1 port dst: ps1 P1 IP SRC: P1 port src: ps1 IP DST: S port dst: pd1 IP SRC: NAT port src: psN IP DST: S port dst: pd1 IP SRC: S port src: pd1 IP DST: NAT port dst: psN table dynamique IP/Ports 1 seule adresse publique

identifier des « connexions »venant de la même source ● problème classique sans NAT: gestion des « connexion » venant du même hôte ● Exemples: – TCP: 2 connexions ssh ayant même IP SRC et DST. – UDP: deux requêtes dns ayant même IP SRC et DST. ● solution: le port source de chaque connexion est différent – deux ping (icmp echo) ayant même IP SRC et DST ● solution: chaque série de ping a un champ « identifier » qui permet de l'idenfier et de faire correspondre chaque « réponse echo » à la bonne « requête echo ». Il est garanti que deux sessions ping originaire du même hôte aient des « identifiers » différents.

NAPT et ping: problème SNAT Internet P2 P1 IP SRC: NAT identifier: 100 IP DST: S IP SRC: P2 identifier: 100 IP DST: S IP SRC: NAT identifier: 100 IP DST: S IP SRC: P1 identifier: 100 IP DST: S Pb: un même triplet (ip SRC, IP DST, identifier) pour des ping appartenant à des « sessions » différentes

NAPT et ping: problème SNAT Internet P2 P1 IP DST: P2 identifier: 100 IP SRC: S IP DST: NAT identifier: 100 IP SRC: S IP DST: P1 identifier: 100 IP SRC: S Pb: il n'est pas possible d'identifier la machine interne à laquelle est destinée la réponse icmp. ?

NAPT et ping: solution SNAT Internet P2 P1 IP SRC: NAT identifier: 100 IP DST: S IP SRC: P2 identifier: 100 IP DST: S IP SRC: NAT identifier: 133 IP DST: S IP SRC: P1 identifier: 100 IP DST: S Solution: le routeur NAT peut avoir à changer le champ « identifier » du paquet icmp

NAPT et ping: solution SNAT Internet P2 P1 IP SRC: S identifier: 100 IP DST: NAT IP SRC: S identifier: 100 IP DST: P2 IP SRC: S identifier: 133 IP DST: NAT IP SRC: S identifier: 100 IP DST: P1 Solution: le routeur NAT peut avoir à changer le champ « identifier » du paquet icmp en sortie et donc en entrée

NAPT: identifier les paquets entrant ● Vu de l'extérieur, tous les paquets semblent venir du routeur NAT ● On ne peut plus forcément garantir l'unicité des informations d'identification des paquets des connexions sortantes: – TCP/UDP: (IP SRC, port SRC, IP DST, PORT DST) si seule l'IP SRC est remplacé par celle du routeur – ICMP: (IP SRC, IP DST, « identifier », No de séquence) ● solution: le routeur NAT modifie aussi l'identifiant de transport source: port tcp/udp, identifiant icmp.

ftp : mode passif P connexion de données 1-connexion de contrôle P2 6-serveur: résultat de la commande LIST 5-client: LIST ● l'utilisateur se connecte et tape la commande « ls » P1 2-client: PASSV 3-serveur: IP S, Port P3

ftp : mode actif connexion de données 1-connexion de contrôle P2 5-résultat de la commande LIST 3-LIST ● l'utilisateur se connecte et tape la commande « ls » P1 2-PORT IP A, Port P2

NAT/ftp: gestion mode actif d'un client ● Problèmes: – ne pas avoir d'IP interne mentionnée à une machine externe avec la commande PORT – prévoir le port où va arriver la connexion donnée pour l'associer à la bonne machine interne – (classique) : que la connexion de donnée entrante arrive sur un port inutilisé ● Solutions: – 1) lire/modifier le niveau application (commande PORT): passerelle de niveau application (ALG (rfc) ou helper (netfilter) – 2) utiliser un mandataire (proxy) ftp avec une adresse publique.

paquets/connexions/sessions ● paquets ● connexions ● sessions ● traitement à état (« statefull ») ● passerelles de niveau application (ALG: Application Layer Gateway, helper dans la terminologie Netfilter)

Configuration d'un routeur NAPT sous Linux ● iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source adresseIPPublique avec eth0: interface pour l'accès à internet (à adapter) ● pour effacer les règles correspondantes : – iptables -t nat -F ● pour les lister : – iptables -t nat -L

Configuration d'un routeur NATP sous windows ● mmc « routage et accès distant » ● puis « nom de votre serveur »/routage IP/general ● clic droit ou Action/nouveau protocole de routage ● « traduction d'adresse réseau (NAT) » ● « nom de votre serveur »/routage IP/NAT puis clic droit/nouvelle interface.Préciser pour chaque interface – si elle est du côté public ou privé – s'il faut activer la traduction de ports (cocher « traduire les entêtes tcp/udp »)

limitations de la traduction d'adresses ● la traduction d'adresse casse le fait que tcp/ip part du principe qu'on a une liaison point à point entre source et destination (ràf: mal dit) – applications transportant les adresses IP/ports dans la charge utile TCP/IP – applications avec des sessions multiples interdépendantes, négociées dynamiquement – débogage et flicage ● fragmentation: défragmenter pour travailler sur la charge utile des paquets ● gestion des états : 15 à 20% de charge pour les routeurs/fw

traduction d'adresse et sécurité ● du point de vue des machines internes : – le réseau interne n'est pas directement joignable – si les adresses internes sont affectées par dhcp: augmentation de la difficulté pour un intrus de désigner précisément un hôte – le routeur NAT est un point central critique en cas de piratage : ● syndrome du « renard dans le poulailler » ● MiM sur tout le trafic sortant ● du point de vue des machines externes: – tout est vu comme venant du routeur NAT ce qui ne facilite pas l'identification de la source d'une attaque

Bibliographie : traduction d'adresses : – résumé en français : – rfc 3022: Traditional IP Network Address Translator (Traditional NAT) – rfc 2663: IP Network Address Translator (NAT) Terminology and Considerations – rfc 2993: Architectural Implications of NAT (bonne synthèse, clair) – TCP/IP: « TCP/IP illustré: les protocoles »: W. R. Stevens

Coupes-feux ● Coupe Feu: généralités, problèmatique ● Filtre de paquet: exemples d'utilisation, limitations ● coupefeu à états: notion d'état, exemples ● Limitation des pares-feux ● limitation des pares feux à état ● bibliographie

Coupe Feu: généralités ● termes équivalents : parefeu, coupefeu, garde barrière (US: firewall) ● élément d'une politique de sécurité : – Buts possibles: ● protéger les postes internes des attaques ● interdire la fuite des données de l'entreprise (cas d'un espion en interne) ● contrôler les accès réseau des programmes présents sur un poste de travail – Moyens: ● filtrer/interdire le trafic non autorisé/dangereux, ● laisser passer le trafic légitime ● modifier les paquets (NAT, REDIRECT, mandataire transparent,...)

● terme recouvrant des réalités variées : – filtre de paquet – coupe feu à état – mandataire (proxy applicatif) – coupe feu personnel ● agissant à des niveaux variés: – couche liaison – couche réseau/transport – couche application Divers types de coupes-feux

objet du thème: coupe feu pour sécurité périmétrique ● sécurité périmétrique ● indispensable mais insuffisante contre les ennemis de l'intérieur: ● WeB, mail,portable ramenés à la maison puis dans l'entreprise, vpn,... – ces accès directs aux postes clients nécessitent des mesures spécifiques pas forcément compatibles avec les demandes des utilisateurs: ● mandataire WeB avec antivirus & Co ● relais smtp entrant avec antivirus ● politique de sécurité stricte sur les portables, sous- réseau dédié en interne,...

Architecture classique: ● dmz ● mandataires ● But : – limiter/interdire l'accès direct de/vers l'extérieur aux postes/serveurs internes – réserver l'accès de/vers l'extérieur à des machines ciblées, surveillées et configurées en conséquence ● ces architectures avec protection périmétrique ont quand même quasiment fait disparaître les attaques directes.

Filtre de paquet ● analyse les paquets indépendamment les uns des autres ● critères de filtrage: – paquet IP: IP src, IP destination, ports sources et destination – interface réseau sur laquelle se présente le paquet IP SRC port src IP DST port dst flags tcp... eth 1 eth 0 Coupefe u

Filtre de paquet: exemples typiques (1) ● filtrage de paquet avec une source sur un sous- réseau incorrect: – le coupe feu ne doit pas accepter sur eth0 des paquets ayant une IP source sur R1 (eth1) IP port src IP DST port dst flags tcp... eth1 sur R1: /24 eth0 sur R2: /24 Coupefe u

Filtre de paquet: exemples typiques (2) ● autorisation des accès au WeB (http: tcp/80, https: tcp/443) ● en sortie: paquet vers le port 80 de toute machine externe ● paquet retour: paquet depuis le port 80 de toute machine externe ● Problème: tout paquet venant de l'extérieur et ayant le port 80 comme port source sera autorisé. ● dans la vraie vie, on utilise un mandataire WeB (proxy WeB) qui est la seule machine visible de l'extérieur

Filtre de paquet: exemples typiques (3) ● connexion tcp: l'ouverture de session est déterminée par les flags des segments ● exemple: autoriser uniquement les connexions tcp sortantes: – paquets tcp sortant avec flag SYN: OK – paquet tcp entrant avec flags Syn+Ack: OK – paquets tcp entrant ou sortant sans flag SYN: OK ● Questions : – comment réagit une machine qui reçoit un paquet syn/ack comme premier paquet d'une connexion tcp ? – est-il pertinent de faire confiance aux drapeaux des segments ?

Filtre de paquet: exemples typiques (4): ftp serveur ftp ● port 21 ● port 20 Coupefe u Poste client ● port commandes ● port données ● le port «données» est négocié dans la session ● on peut juste le supposer >= 1024

Filtre de paquets: bilan ● analyse paquet par paquet ● simple à implémenter ● syntaxe simple s'appuyant sur les propriétés du paquet (interface réseau entrante comprise) ● pas de suivi de l'historique des paquets – => manque de souplesse pour les autorisation – choix entre trop fermer (ne pas rendre le service) ou trop ouvrir (ne plus protéger) – cf exemple accès WeB sortant

coupefeu à états ● termes équivalents: coupefeu dynamique, à états, par suivi de connexion, « Statefull Packet Inspection» ● enrichit le filtrage des paquets par la mémorisation de l'état des sessions,d'échanges de données en fonction des paquets déjà vus ● analyse s'appuyant sur l'historique des sessions ● session – naturel avec tcp – la connaissance des couches réseau, transport, voire application permet d'en gérer avec udp et icmp

parefeu à état: état d'une session ● avec le parefeu NetFilter (Linux 2.4+), un paquet faisant partie d'une session peut être l'un des 4 états suivants : – New: ne correspond à aucune entrée de la table des états. Création d'une nouvelle entrée – Established: le paquet fait partie d'une connexion existante (entrée existante dans la table des états) – Related: le paquet fait partie d'une nouvelle connexion faisant partie d'une session existante. – Invalid: paquet dont l'état n'a pu être déterminé ● il y a des états internes plus détaillés accessibles par « cat /proc/net/ip_conntrack »

● Attention: c'est l'étude de l'historique des paquets qui permet de déterminer l'état, pas les FLAGS TCP – les états fournissent « seulement » des critères supplémentaires pour le filtrage: ● l'utilisation dépend du logiciel firewall: – NETFILTER (linux 2.4+): ● autoriser les paquets TCP SYN sortant ● autoriser les paquets TCP et ICMP entrants dont l'état est RELATED ou ESTABLISED ● interdire les paquets TCP NEW sans flag SYN – IPFilter ( FreeBSD, Solaris 10,... ), pf ( OpenBSD, FreeBSD,... ): ● autoriser les paquets TCP SYN sortant et tous les paquets suivants de la session seront automatiquement acceptés pare feu à état: états d'une session

exemple de sessions: icmp echo Poste APareFeu PosteB ICMP Echo reply IP SRC: B IP DST: A Identifier: 101 NEW ICMP Echo Request IP SRC: A IP DST: B Identifier: 101 ICMP Echo Request IP SRC: A IP DST: B Identifier: 101 ICMP Echo Request IP SRC: A IP DST: B Identifier: 101 ICMP Echo reply IP SRC: B IP DST: A Identifier: 101 ESTABLISHED ICMP Echo reply IP SRC: B IP DST: A Identifier: 101

exemple de sessions: tcp Poste APareFeu PosteB ESTABLISHED IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Ack IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Ack IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Ack IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack ESTABLISHED IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack NEW IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn

exemple de session: tcp ● règles associées pour autoriser un accès sortant au WeB – autoriser les paquets TCP sortant NEW vers le port http ou https – autoriser les paquets TCP entrant ESTABLISHED – autoriser les paquets icmp RELATED entrant – refuser le reste ● ràf: animation pour illustrer une connexion sortante et une connexion entrante venant du port 80 d'une machine inconnue

exemple de sessions: tcp particularité de netfilter Poste APareFeu PosteB IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack NEW IP/Port SRC: B/PB IP/Poirt DST: A/PA Flags: Syn/Ack le premier paquet vu sera considéré comme NEW même s'il est incorrect comme premier paquet du point de vue tcp. Dans l'exemple, ce premier paquet est un segment d'acquittement (alors qu'un premier paquet devrait être un SYN) cet exemple illustre deux points : ● avec NetFilter, les états sont un critères utilisable supplémentaire qu'il faut croiser avec les autres critères pour en faire ce que l'on veut ● Application : l'une des règles usuelles utilisées avec netfilter consiste à filtrer les paquets TCP NEW sans flag SYN.

exemple de session: udp (dns) Poste APareFeu PosteB IP/Port SRC: B/53 IP/Port DST: A/PA NEW IP/Port SRC: A/PA IP/Poirt DST: B/53 IP/Port SRC: A/PA IP/Poirt DST: B/53 IP/Port SRC: A/PA IP/Poirt DST: B/53 IP/Port SRC: B/53 IP/Port DST: A/PA ESTABLISHED: IP/Port SRC: B/53 IP/Port DST: A/PA

exemple de session: tcp/icmp(host unreachable) Poste APareFeu PosteB ICMP: IP SRC: B IP DST: A citation du début du paquet en erreur NEW IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn IP/Port SRC: A/PA IP/Poirt DST: B/PB Flags: Syn ICMP: IP SRC: B IP DST: A citation du début du paquet en erreur RELATED: ICMP: IP SRC: B IP DST: A citation du début du paquet en erreur

Suivi de fenêtre TCP ● Problème : – filtrer les paquets incorrects ● pour éviter la fuite d'information ● pour éviter certaines attaques liées à la façon dont ces paquets incorrects vont être gérés par la machine cible – un segment peut être incorrect si ses No de séquence sont incohérent par rapport à ceux de la connexion en cours – ràf: un dessin qui illustre la chose (fait au tableau)

Suivi de fenêtre TCP ● le coupe feu doit prendre des décisions à partir des informations qu'il a : – ce qui passe par le FW est un sous ensemble de ce qui est émis par A (pertes ou retards possibles entre A et FW) – ce qui arrive en B est un sous ensemble de ce qui est passe par le FW (pertes ou retards possibles entre FW et B) ● ne pas en tenir compte, c'est refuser des paquets réémis suite à des pertes

Exemples concrets (1) developper au tableau les cas 1 et 2 pour rappeler le mécanisme de fenêtre tcp 1-cas standard sans perte 3-cas d'un paquet retardé 2-cas d'un paquet perdu en FW et A

ràf: ● donner un exemple où les bornes sont atteintes pour montrer qu'elles sont optimales ● fait au tableau

Exemples concrets (1) developper au tableau les cas 1 et 2 pour rappeler le mécanisme de fenêtre tcp 1-cas standard sans perte 3-cas d'un paquet retardé 2-cas d'un paquet perdu en FW et A

Exemples concrets ràf: faire un exemple normal mais long

Exemples concrets paquet No 8: si A se permet d'envoyer jusqu'à l'octet 3000, c'est qu'il a reçu un ack le lui permettant (rappel: la fenêtre de B est <= 2048). Logiquement, la borne inf en tient compte.

Exemples concrets

Limitation des pares-feux ● but d'un pare feu: – protéger des machines internes – interdire les sorties/entrées d'information (plus dur) ● pare feu sans état: – soit on ouvre trop peu, soit on ouvre trop (ex.: connexion WeB qui ouvre tout en entrée depuis un port 80 distant) ● gestion de la fragmentation en particulier et de la normalisation de paquets en général: – attaque: fragmenter pour diminuer les possibilités d'identification de charge malicieuse – attaque: mécanisme de recouvrement de fragment

limitation des pares feux à état ● qualité du suivi de session: icmp, fenêtre tcp,... ● analyse du niveau application souvent nécesaire (ftp, H323,...)=> module d'analyse spécifique au protocole (ALG de la RFC 2663 ou 2993) ● insuffisant si l'information ne transite pas dans la connexion (exemple irc, sip, skype,...) ● des applications utilisent les ports http/https – => vérifier que ce qui y passe est http/https ● des applications s'encapsulent dans http ou https.

ftp : mode actif connexion de données 1-connexion de contrôle P2 5-résultat de la commande LIST 3-LIST ● l'utilisateur se connecte et tape la commande « ls » P1 2-PORT IP A, Port P2

ftp : mode passif P connexion de données 1-connexion de contrôle P2 6-résultat de la commande LIST 5-client: LIST ● l'utilisateur se connecte et tape la commande « ls » P1 2-client: PASSV 3-serveur: IP S, Port P3

limitation des pares-feux à etat: irc 2-requete DCC: ● données: ● destinataire B ● IP source: IPA ● Port Ouvert: P 3-requete DCC: IP SRC: IP B IP DST:IP A Port DST: P ● données: ● destinataire B ● IP source: IPA ● Port Ouvert: P 1-requete DCC: ● données: ● destinataire B ● IP source: IPA ● Port Ouvert: P

Netfilter : le firewall de linux 2.4 et 2.6 ● Netfilter: le logiciel, IPTABLES: la commande permettant de le configurer ● netfilter (noyaux 2.4 et premiers noyaux 2.6): – filtre à état pour ipv4 – filtre de paquet sans états pour ipv6 (Arg !) – filtre pour decnet, arp et (via des rustines) pour IPX ● Netfilter est un gros progrès par rapport au coupe feu des noyaux 2.2 (ipchain) – architecture modulaire – filtre à état sur ipv4 – traduction d'adresses, – altération d'entêtes de paquets (mangle) ● configuration/sauver/restaurer les tables

Netfilter ● présent dans les sources du noyau ● la version de l'outil iptables doit être compatible avec celle de netfilter – sinon toutes les fonctionnalités ne seront pas accessibles ● patch-o-matic: rustines apportant des fonctionnalités supplémentaires – submitted: rustines soumises pour la prochaine version du noyau – pending: en attente de soumission – base: rustines variées sans conflits entre eux – extra: le reste (conflits possibles)

● Thème de cette présentation – filtrage à état ipv4 avec netfilter ● 2 bonnes documentations (en français) : – « netfilter/iptables: le fonctionnement interne du parefeu selon linux »: linux mag France HS 12, octobre 2002 – « didacticiel sur iptables » par Oskar Andreasson Netfilter

Netfilter: tables et chaînes ● tables: ensemble de chaînes. ● chaîne: suite linéaires de règles ● règle: constituée – d'un motif permettant de reconnaître des paquets selon certaines critère – d'un cible indiquant l'action à effectuer sur les paquets reconnus ● un paquet – sera traité par certaines chaînes des tables – dans ces chaînes, il sera traité consécutivement par toutes les règles jusqu'à en trouver une dont il valide les critères – la cible de cette règle sera alors appliquée

Tables NetFilter ● Filter: – pour les opérations de filtrage IP. – les paquets n'y sont jamais modifiés – cibles: ACCEPT, DROP, LOG, REJECT, RETURN,... ● NAT: – pour les opération de traduction d'adresses – cibles: SNAT, SAME, DNAT, MASQUERADE, REDIRECT, RETURN,... ● Mangle: – pour modifier les paquets (TTL, TOS,...) – cibles: TTL, TOS, TCPMSS, RETURN,...

traversée des tables ● cf Hôte pare feu INPUT OUTPUT Routage FORWARD Les 3 chaînes de la table filter

tableau tiré de tutorial/traversingoftables.html tutorial/traversingoftables.html paquet entrant

tableau tiré de tutorial/traversingoftables.html tutorial/traversingoftables.html paquet sortant

tableau tiré de tutorial/traversingoftables.html tutorial/traversingoftables.html paquet routé

Chaînes ● 2 types de chaînes: par défaut (builtin) et utilisateurs ● chaînes par défaut: – propres à certaines tables ● table Filter: INPUT, OUTPUT et FORWARD ● table NAT: PREROUTING et POSTROUTING ● table MANGLE: INPUT, OUTPUT, FORWARD, PREROUTING et POSTROUTING – politique par défaut: ● politique à appliquer en fin de chaîne par défaut: ACCEPT ou DROP ● commande -P d'iptables: « iptables -P INPUT DROP »

● les appels aux chaînes utilisateurs peuvent être inclus à une ou plusieurs chaîne par défaut (on utilise le nom de la chaîne utilisateur comme cible) ● à la fin de la chaîne utilisateur, le flot d'exécution reprend à la ligne suivante de la chaîne appelante ● ràf: dessin illustrant l'appel à faire au tableau ● compteurs associés aux règles des chaînes – consultation avec l'option -v d'iptables chaînes utilisateurs

table schaine: règle1 règle2 règle3 règle 4 -j schaine règle5... règle n table INPUT: règle1 règle2 règle3 règle 4 -j schaine règle5... table FORWARD: règle1 règle2 règle3 -j schaine règle 4 règle5... ● intérêt : – factoriser des règles – éviter le passage dans certaines règles à certains paquets

Netfilter: syntaxe ● iptables [-t table] commande [correspondance] [cible/saut] – table: table concernée. Par défaut, c'est la table filter qui est utilisée – commande: commande iptable (ajout de règle, suppression de règle,...) – correspondance: critères du filtre de sélection de paquets. – cible/saut: action à effectuer sur le paquet ● cf « iptables -m correspondance --help» pour plus de détails sur une correspondance ● cf chapitres 9, 10 et 11 du didacticiel d'IPTABLES:

Netfilter: correspondance (matches) ● Les critères de base peuvent être enrichis par des modules externes qu'il convient de préciser avec l'option -m ● un protocole sans module spécifique devra se contenter des critères de base ● exemples de modules: – -m mac: utiliser l'adresse mac source comme critère – -m multiport: pour spécifier plusieurs ports d'un seul coup séparés par une virgule – -m state : pour utiliser le suivi de connexion

Netfilter: exemples ● placer une politique par défaut à DROP sur la talbe INPUT: – iptables -P INPUT DROP ● détruire les paquets tcp entrants avec un flag SYN seul. Deux solutions produisant les mêmes effets : – iptables -A INPUT -p tcp --tcp-flags SYN,ACK,RST,FIN SYN -j DROP – iptables -A INPUT -p tcp --syn -j DROP

● accepter les paquets routés venant d'un source donnée: – venant d'un hôte: iptables -A FORWARD -s j ACCEPT – venant d'un sous-réseau: iptables -A FORWARD -s /24 -j ACCEPT ● accepter les paquets routés venant d'une adresse MAC source données: – iptables -A FORWARD -m mac --mac-source C – noter « -m mac » qui active le module mac Netfilter: exemples (2)

● accepter les paquets entrants appartenant à des connexions déjà établies (ESTABLISHED ou RELATED): – iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT – noter le « -m state » qui active le module state ● accepter les paquets tcp routés à destination d'un port donné d'une machine données et venant d'un sous-réseau donné – iptables -A FORWARD -p TCP -d dport 22 -s /24 -j ACCEPT Netfilter: exemples (3)

IPFilter ● ipfilter est un coupe feu à état fournissant aussi des fonctionnalités de traduction d'adresses ● ipfilter est en standard sous FreeBSD, NetBSD et Solaris 10. ● il a été testé sous : solaris 2.3-9,open BSD ,IRIX,Linux 2.4 et 2.6,HP-UX 11,True 64 unix 5.1a,qnx 6 port. ● doc: ipf-howto: ● syntaxe claire et lisible :-)

IPFilter ● configuration via un (ou deux) fichier(s) de configuration (Ex. : /etc/ipf.conf, /etc/ipnat.conf) – une règle par ligne – # indique un commentaire – la règle qui s'applique est la DERNIERE auquel le paquet correspond – cas général au début du fichier – cas particuliers à la fin – « quick » => action immédiate – pas d'outil en ligne de commande pour ajouter/supprimer des régles – => générer le fichier de configuration avec des macros processeurs comme m4

IPFilter: syntaxe de base ● Syntaxe (partielle) : ● action [direction] [log] [quick] [on interface] [proto protocol] [from src_addr [port src_port]] [to dst_addr [port dst_port]] [flag tcp_flags] [keep state] ● action: pass/block ● direction: in/out ● quick: provoque l'exécution immédiate de l'action ● flag: match/testés. ex. S/SA (on regarde Syn et Ack et on veut que seul Syn soit à 1) ● (src|dst)_addr: adresse ip avec notation CIDR ou any

Exemple: # loopback pass out quick on lo0 from any to any pass in quick on lo0 from any to any #politique par défaut block in all block out all # Enable all outgoing connections pass out proto tcp from any to any flags S/SA keep state pass out proto udp from any to any keep state pass out proto icmp from any to any keep state #ssh pass in on vx0 proto tcp from to any port = 22 keep state #paquets avec des options IP block in log from any to any with ipopts # paquets trop courts pour avoir un header complet block in log proto tcp from any to any with short

IPFilter: suivi de session ● mot clef keep state ● équivaut à une acceptation implicite de tous les paquets suivants d'une connexion ● Exemple: block in quick on tun0 all pass out quick on tun0 proto tcp from /32 to any keep state ● keep frags: accepter les fragments suivants

Packet Filter ● packet filter existe sous OpenBSD, FreeBSD, NetBSD, DragonFlyBSD,... ● créé en réaction à un changement de licence d'IPFilter ● coupe feu à état ipv4/ipv6 ● performant (optimisation automatique des règles) ● in et out mais pas de forward (NetFilter) ● comme IpFilter, pf a peu de modules de suivi de connexion (ALG ou helpers) ● syntaxe proche de celle d'IPFILTER (Attention: sémantique parfois différente)

Packet Filter: différences avec IPFilter ● licence :-) ● facilités (macro, listes, tables) ● extensions: – point d'ancrages, – authentification (authpf) – normalisation de trafic – gestion de bande passante – haute disponibilité (CARP et pfsync) – balisage de paquet (TAG)

Packet Filter : syntaxe ● listes : liste d'éléments (protocoles, ports, adresses,...) : – entre accolades, séparés par des virgules ou des espaces – pass out on fxp0 from { } to { } – est équivalent à ● pass out on fxp0 from to ● pass out on fxp0 from to ● pass out on fxp0 from to ● pass out on fxp0 from to

● macros: variables utilisateurs – nom: commence par une lettre, contient lettres, chiffres, souligné (_). ne doivent pas être des noms réservés – définition: nom = valeur. Ex.:ext_if = "fxp0" – utilisation: $nom. Ex.: – block in on $ext_if from any to any – une macro peut représenter une liste – une macro peut utiliser la valeur d'autres macro: – host1 = " " – host2 = " " – les2 = { $host1 $host2 } Packet Filter: syntaxe

● tables: – regroupe des adresses (ipv4 ou ipv6). – s'utilise en général à la place d'une adresse – recherche plus rapide que dans une liste – deux modes de création : dans pf.conf ou via pfctl – les noms des tables sont entourés par – une table peut être modifiée par la suite via pfctl – attributs des tables : ● const : la table ne peut être modifiée une fois créée ● persist: ne pas détruire la table si aucune règle ne s'y réfère – spécification des adresses: ip, nom, interface, self (inclus l'adresse de bouclage) Packet Filter: tables

PF - tables: exemples ● via pf.conf table { /16, ! /24, } block in on dc0 all pass in on dc0 from to any ● via pfctl ● création/ajout: pfctl -t spammers -T add /16 ● lister : pfctl -t spammers -T show ● suppression d'adresse: pfctl -t spammers -T delete /16

Points d'ancrage: ● jeux de règles secondaires (idem chaîne NetFilter) chargés/déchargés dynamiquement ● utilisable pour filtrage, NAT, redirection ● utilisé par authpf

Authpf ● permet de charger dynamiquement des règles lorsqu'un utilisateur s'authentifie ● chaque utilisateur peut possèder des règles spécifiques ● fonctionnement: – l'utilisateur se connecte via ssh sur le firewall où authpf est son shell de connexion défini dans /etc/passwd – des règles spécifiques sont chargées – à la fermeture de la session ssh, ces règles sont déchargées – ouverture et fermeture de session sont transmises à syslogd

Antispoofing/OS finger print ● antispoofing: – idem rp_filter noyau linux – compare ip src avec les réseaux des autres interfaces de l'hôtes ● sélection selon l'OS source – s'appuie sur les particularités des paquets tcp SYN pour reconnaître l'OS de la machine source du paquet – Exemple: pass in on $ext_if from any os OpenBSD keep state block in on $ext_if from any os "Windows 2000"

Pf: Partage de charge ● dans la prochaine version de ce document

Pf: suivi de session ● keep state : idem NetFilter. Exemple: – pass in proto tcp from /24 to any port 80 flags S/SA keep state ● modulate state: idem mais pf modifiera les « ISN » de façon à être réellement aléatoires ● synproxy state: c'est pf qui gère l'ouverture de session tcp – il ne passe les paquets à la destination interne qu'une fois le 3way handshake réalisé – objectif: protéger un serveur interne d'un syn flood en laissant le fw la gérer (s'il peut :-)) – principe: le firewall est plus résistant qu'un serveur interne

Pf: suivi de session ● pf fourni un ensemble d'options permettant de contrôler/réagir au suivi de session ● Exemple: interdire l'accès à un hôte qui dépasse un certain nombre de connexions par seconde – block quick from – pass in proto tcp from any to $sshserver poirt 22 flags S/SA kepp state (max-src-conn-rate 100/10, overload flush) – tout hôte tentant plus de 100 connexion ssh en moins de 10 secondes : ● se verra ajouté à la table evil_host ● verra ses connexions concernées par cette régles effacées de la table des états ● Attention au denis de service !

Balisage des paquets ● marquer les paquets avec un identifiant qui peut ensuite servir comme critère de filtrage ● une seule balise à un instant donné par paquet ● évite de dupliquer des critères de filtrage ● Exemple: pass in on $int_if proto tcp to port 80 tag webOut keep state pass out in $ext_if tagged webOut keep state ● remarque : avec pf, keep state marche pour les paquets dans le même sens ou pour les paquets réponse. cela explique l'intérêt de la seconde ligne.

atténuer les attaques par dénis de service ● les attaques par saturation du lien réseau ne peuvent être combattues ● synproxy ● options suivi de session – max-src-conn-rate & Co (vu précédemment) – max-src-states: limite le nombre d'état par source – max-src-nodes: limite le nombre de sources (lutter contre l'usurpation d'ip source) ● adaptatives timeout – adapter les timetous au nombre total d'états – les états inutilisés meurent plus vite

● ALTQ: gestion de la qualité de service ● gestion de la congestion de la queue d'entrée : – quand la queue d'entrée est pleine, le cpu devient surchargé, la machine en répond plus – solution (de situation de crise) : ● les paquets correspondant à un état sont gérés ● les autres sont détruits – avantage: ● ces paquets auraient été mal gérés ou détruits vu l'état de la machine ● la machine gère les connexions existantes atténuer les attaques par dénis de service

Pf: normalisation ● motivations – en sortie: ● limiter l'information sur les OS, applications et architecture du réseau; ● palier certains OS faibles (ex: W98 et No de séquence prévisibles). – en entrée: supprimer toute ambiguïté dans l'interprétation d'un paquet par le destinataire ou un NIDS intermédiaire : ● protéger les OS d'attaques utilisant des paquets mal formés, la fragmentation et le recouvrement de fragments,... ● faciliter le travail des IDS

Pf: normalisation IP ● les paquets incorrects sont rejetés. Par exemple: – version IP incorrecte – champ longueur d'entête trop petit ou trop lont – checksum incorrect ● certains champs sont modifiés : – remise à zéro des options IP – ajustement du champ TTL ● éviter les abus classique (ttl faible pour éviter une machine ids située plus loin par ex.)

Pf: normalisation UDP et TCP, exemples ● UDP: – rejet des paquets avec un mauvais checksum ou un taille différente de la taille IP ● ICMP: rejet – des message echo request avec une adresse destination diffusée (multicast, broadcast) – des messages dont le checksum est incorrect ● TCP: – correction les anomalies des drapeaux tcp – rejet des paquets à checksum incorrect

routeurs et redondances ● but: permettre à un routeur de secours de prendre le relais d'un routeur HS de façon transparente pour les hôtes du réseau et les connexions en cours ● Protocoles: – HSRP (cisco): Hot Standby Routing Protocol – VRRP: virtual router redundancy protocole (RFC 2338) ● impliquent: – des annonces entre routeurs actifs et de secours – une utilisation des adresses MAC et IP du routeur actif HS par le routeur de secours qui prend le relais

VRRP (rfc 2338): Virtual Router Redondancy Protocol ● permet la migration des informations niveau 2 (MAC) et 3 (IP) d'un routeur HS vers un autre OK. Les éléments utilisés : ● Virtual router ID: tous les routeurs d'un groupe ont le même ● master virtuel routeur: routeur actif (1 seul) ● backup virtual routeur: les routeurs de secours ● fonctionnement (succinct) : – le routeur actif diffuse des annonces via multicast – en cas d'interruption de ces annonces, les autres routeurs élisent un nouveau routeur maître qui utilise les adresses MAC et IP du groupe

CARP (rfc 3040): Common Address Redundancy Protocol) ● pourquoi CARP ? HSRP et VRRP sont couverts par une licence cisco (qui la revendique) => non utilisables dans des produits libres ● différence entre CARP et VRRP/HSRP: – CARP est indépendant du type d'adresse IP (v4/v6) – arpbalance (ràf: sera traité dans la prochaine version de ce document) – les annonces sont sécurités (SHA-1 HMAC) – CARP est un protocole libre

CARP : protocole ● chaque groupe a : – une adresse MAC virtuelle – une ou plusieurs adresses IP virtuelles ● les membres du groupe répondent aux requêtes ARP de cette adresse MAC commune ● les annonces CARP ont cette adresse comme source ● Le maître d'une adresse envoie régulièrement des annonces via multicast en utilisant le protocole CARP (IP protocole 112) ● les membres du groupe écoutent ces annonces – => si plus d'annonce, l'un prend le relais

Coupe-feu et redondance ● La redondance suppose : – qu'un coupe feu prenne le relais en cas de panne du coupe feu actif – que le nouveau coupe feu se comporte comme l'ancien ● adresse MAC et IP identiques: info statique, facile ● configuration statique identique: info statique, facile ● configuration dynamique identique: suppose communication en temps réel entre les coupes feux ● VRRP/HSRV & Co : – suffisant en cas de filtre de paquet sans état (pas de configuration dynamique) – insuffisance en cas de suivi de session: table des états

une solution: pfsync ● pfsync: protocole permettant le transfert des informations de suivi de connexion entre coupes-feux

une solution: psync