Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parEdmond Martin Modifié depuis plus de 8 années
1
Administration système et réseau avancée 2005-2006 ● rappel sur le routage ● traduction d'adresse ● Firewall ● Les pares-feus libres : – Netfilter/iptables – IP Filter – packet Filter
2
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).
3
routage (2) ● Table de routage (netstat -nr) ● Routage dynamique : un programme externe modifie la table de routage
4
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
5
Routage P3 P6 P2P1 routeur vers internet P5 R3 R1 R5 R0 R6 R2 R4 P4
6
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
7
maquette 1 Routeur salle P3 P2 R1 R2 Couleurs: ● vert: routage activé ● - bleu: hôtes non routeur R1: 192.168.10/24 R2: 192.168.195/24 Bridge d HostOnl y P1 Internet
8
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 (192.168.195.2), P2 et le routeur de la salle ?
9
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
10
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
11
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)
12
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
13
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
14
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 ?
15
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.
16
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
17
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
18
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.
19
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
20
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. ?
21
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
22
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
23
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.
24
ftp : mode passif P3 2121 4-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
25
ftp : mode actif 2020 2121 4-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
26
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.
27
paquets/connexions/sessions ● paquets ● connexions ● sessions ● traitement à état (« statefull ») ● passerelles de niveau application (ALG: Application Layer Gateway, helper dans la terminologie Netfilter)
28
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
29
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 »)
30
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
31
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
32
Bibliographie : traduction d'adresses : – résumé en français : http://www.securiteinfo.com/conseils/nat.shtml http://www.securiteinfo.com/conseils/nat.shtml – 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
33
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
34
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,...)
35
● 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
36
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,...
37
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.
38
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
39
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 192.168.10.2 port src IP DST port dst flags tcp... eth1 sur R1: 192.168.10/24 eth0 sur R2: 192.168.20/24 Coupefe u
40
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
41
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 ?
42
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
43
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
44
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
45
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 »
46
● 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
47
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
48
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
49
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
50
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.
51
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
52
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
53
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)
54
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
55
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
58
ràf: ● donner un exemple où les bornes sont atteintes pour montrer qu'elles sont optimales ● fait au tableau
59
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
60
Exemples concrets ràf: faire un exemple normal mais long
61
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.
62
Exemples concrets
63
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
64
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.
65
ftp : mode actif 2020 2121 4-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
66
ftp : mode passif P3 2121 4-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
67
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
68
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
69
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)
70
● 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 http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/ http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/ Netfilter
71
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
72
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,...
73
traversée des tables ● cf http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/traversingoftables.html http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/traversingoftables.html Hôte pare feu INPUT OUTPUT Routage FORWARD Les 3 chaînes de la table filter
74
tableau tiré de http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html paquet entrant
75
tableau tiré de http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html paquet sortant
76
tableau tiré de http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html http://www.linux-france.org/prj/inetdoc/guides/iptables- tutorial/traversingoftables.html paquet routé
77
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 »
78
● 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
79
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
80
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: http://www.linux-france.org/prj/inetdoc/guides/iptables-tutorial/
81
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
82
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
83
● accepter les paquets routés venant d'un source donnée: – venant d'un hôte: iptables -A FORWARD -s 192.168.196.246 -j ACCEPT – venant d'un sous-réseau: iptables -A FORWARD -s 192.168.196.0/24 -j ACCEPT ● accepter les paquets routés venant d'une adresse MAC source données: – iptables -A FORWARD -m mac --mac-source 00- 50-56-C0-00-01 – noter « -m mac » qui active le module mac Netfilter: exemples (2)
84
● 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 192.168.196.246 --dport 22 -s 192.168.195.0/24 -j ACCEPT Netfilter: exemples (3)
85
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 2.0- 3.5,IRIX,Linux 2.4 et 2.6,HP-UX 11,True 64 unix 5.1a,qnx 6 port. ● doc: ipf-howto: http://www.obfuscation.org/ipf/ipf-howto.html ● syntaxe claire et lisible :-)
86
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
87
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
88
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 195.221.162.248 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
89
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 20.20.20.1/32 to any keep state ● keep frags: accepter les fragments suivants
90
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)
91
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)
92
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 { 192.168.196.1 192.168.196.246} to {192.168.10.1 192.168.10.2 } – est équivalent à ● pass out on fxp0 from 192.168.196.1 to 192.168.10.2 ● pass out on fxp0 from 192.168.196.246 to 192.168.10.2 ● pass out on fxp0 from 192.168.196.1 to 192.168.10.1 ● pass out on fxp0 from 192.168.196.246 to 192.168.10.1
93
● 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 = "192.168.196.1" – host2 = "192.168.196.246" – les2 = { $host1 $host2 } Packet Filter: syntaxe
94
● 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
95
PF - tables: exemples ● via pf.conf table { 172.16.0.0/16, !172.16.1.0/24, 172.16.1.100 } block in on dc0 all pass in on dc0 from to any ● via pfctl ● création/ajout: pfctl -t spammers -T add 218.70.0.0/16 ● lister : pfctl -t spammers -T show ● suppression d'adresse: pfctl -t spammers -T delete 218.70.0.0/16
96
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
97
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
98
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"
99
Pf: Partage de charge ● dans la prochaine version de ce document
100
Pf: suivi de session ● keep state : idem NetFilter. Exemple: – pass in proto tcp from 192.168.196.0/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
101
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 !
102
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.
103
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
104
● 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
105
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
106
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.)
107
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
108
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
109
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
110
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
111
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
112
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
113
une solution: pfsync ● pfsync: protocole permettant le transfert des informations de suivi de connexion entre coupes-feux
114
une solution: psync
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.