Filtrage IP Statique 22/01/2009 Formation Permanente Paris6 17
Filtrage statique: Pourquoi? C'est un des moyens de limiter les flux entre différents réseaux 22/01/2009 Formation Permanente Paris6 18
Les concepts du filtrage de paquets(1) Analyse des entêtes d'un paquet : Protocole Adresse source Adresse destination Port source ( UDP / TCP ) type ( ICMP) Port destination ( UDP / TCP ) type ( ICMP) Indicateurs ( TCP Syn Ack...) Mac Adresses 22/01/2009 Formation Permanente Paris6 19
Les concepts du filtrage de paquets(2) En fonction de règles préétablies, il prend une décision. Trois possibilités Accepter le paquet ( le laisser passer ) Refuser le paquet ( répondre que ce n est pas possible ) Rejeter le paquet ( faire comme si il n était jamais arrivé ) 22/01/2009 Formation Permanente Paris6 20
Filtrage : mécanisme Les règles sont explorées dans l ordre La première règle rencontrée qui correspond au paquet est appliquée Elles sont apliquées sur une interface en entrée ou en sortie La référence est toujours le centre de l équipement de filtrage 22/01/2009 Formation Permanente Paris6 21
Commandes de filtrage (cisco/foundry) access-list acl_num {permit deny} {ip icmp tcp udp proto:n } ip-src m-src [expr] ip-dest m- dest [expr] [established] [log] Acl_num entre 1 et 99 pour les acl simples, de 100 à 199 pour les acl étendues m-src et m-dest sont des masques qui permettent de d écrire un ensemble d addresses à partir de ip-src et ip-dest ( indépendants des masques de réseaux) (Mot clef host et any à partir de V11) Expr : pour tcp et udp {eq ne ge le gt lt range} numéro de port established : uniquement pour tcp permet de laisser passer les réponses aux connexions initiées de l'intérieur log : garder une trace de l'arrivée du paquet 22/01/2009 Formation Permanente Paris6 22
Commandes de filtrage (Enterasys Xpedition) acl acl_name {permit deny} {ip icmp tcp udp protocol num} ip-src m-src ip-dest m-dest [expr-src] [expr-dest] [established] [log] m-src et m-dest sont des masques qui permettent de d écrire un ensemble d adresses à partir de ip-src et ip-dest ( indépendants des masques de réseaux ) ou en notation CIDR Expr : pour tcp et udp {=!= > >= < <=} numéro de port ou bien portinf-portsup established : uniquement pour tcp permet de laisser passer les réponses aux connexions initiées de l intérieur log : garder une trace de l'arrivée du paquet 22/01/2009 Formation Permanente Paris6 23
Commandes de filtrage (NETFILTER) Noyau 2.4.x et 2.6.x iptables [-t filter] -F chaine (vide une chaine) iptables [-t filter] -P chaine {DROP ACCEPT} (politique) iptables [-t filter] -N chaine (création d'une chaine) iptables [-t filter] -L ( listes les regles ) iptables [-t filter] -X (remet à zéro les compteurs) iptables [-t filter] -A {INPUT,OUTPUT,FORWARD,chaine} -p [!] protocol -i [!] interface -o [!] interface -s [!] adr_src[/msk_src] --sport [!][port:[port]] -d [!] adr_dest[/msk_dest] --dport [!] [port:[port]] -j {DROP REJECT ACCEPT LOG RETURN chaine} [! --syn ] est l'équivalent du established de cisco 22/01/2009 Formation Permanente Paris6 24
IPTABLES (Syntaxe) iptables [-t filter] -A (INPUT,OUTPUT,FORWARD,chaîne) [ -p protocol ] [ -s source] [ -d destination] [ -i interface] [ -o interface] [--sport port] [--dport port] [--tcpflags SYN,RST,ACK] [ --icmp-type number] -j (ACCEPT,REJECT,DROP,LOG,RETURN,chaîne) 22/01/2009 Formation Permanente Paris6 25
Le filtrage c'est simple MAIS... La difficulté c est : La définition des matrices de flux Qu'est ce qui est vital? Qu'est ce qui est utile? Qu'est ce qui est dangereux? Connaissance des protocoles utilisées 22/01/2009 Formation Permanente Paris6 26
Simple mais... (suite) Pour répondre à ces questions il faut : Analyser son réseau pour voir les échanges Savoir comment fonctionnent les protocoles» Ports utilisés» protocole» Sens de l'initialisation de la connexion Bien définir ses matrices de flux Beaucoup de rigueur dans la gestion des règles 22/01/2009 Formation Permanente Paris6 27
Échange DNS 22/01/2009 Formation Permanente Paris6 28
Échange FTP Pour ProFTPd dans /etc/proftpd.conf PassivePorts 45000 45020 Pour wu-ftp dans /etc/ftpaccess Passive port 0.0.0.0/0 45000 45020 22/01/2009 Formation Permanente Paris6 29
Filtrage au niveau des machines Permet un renfort de la sécurité au niveau d une machine Un certain nombre d'unix supporte le filtrage Linux via» ipfwadm (noyau 2.0)» ipchains (noyau 2.2)» iptables ou ipchains(noyau 2.4)» iptables (noyau 2.6) *BSD via ipfilter,pf Solaris, AIX, HP-UX... via ipfilter ou bien netfilter Des produits existent aussi pour les windows 22/01/2009 Formation Permanente Paris6 30
Ex:Linux Client iptables (statique) # Politique par défaut :input ACCEPT :forward ACCEPT :output ACCEPT #Création des chaines UTILISATEURS ( Optimisation CPU ) iptables -N LOCALNET -N FRIENDS -N ICMP # J'accepte tout sur l interface interne (loopback) iptables -A INPUT -s 0/0 -d 0/0 -i lo -j ACCEPT # ssh de n'importe ou (local filtrage au routeur) iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT # DHCP Client iptables -A INPUT -p udp --sport 67:68 --dport 67:68 -j ACCEPT # ftp actif si nécessaire iptables -A INPUT -p tcp --sport 20 --dport 1025:65535 --syn -j ACCEPT # mon DNS iptables -A INPUT -s X.Y.Z.DNS/32 --sport 53 --dport 1025:65535 -j ACCEPT # ICMP est traité dans une chaine à part iptables -A INPUT -s 0/0 -d 0/0 -p icmp -j ICMP # Réponses aux connexions établies -A intput -p tcp! --syn -j ACCEPT # Paquets LOCALNET iptables -A INPUT s X.Y.Z.0/24 d 0/0 j LOCALNET # Réseaux Amis iptables -A INPUT s D.E.F.0/24 d 0/0 j FRIENDS # log et rejet du traffic illicite externe iptables -A INPUT -p tcp -s 0/0 -d 0/0 --syn -j LOG --log-prefix 'TCP REJECT' iptables -A INPUT -p tcp -s 0/0 -d 0/0 --syn -j REJECT iptables -A INPUT -p udp -s 0/0 -d 0/0 -j LOG --log-prefix 'UDP REJECT' Iptables -A INPUT -p udp -s 0/0 -d 0/0 -j REJECT 22/01/2009 Formation Permanente Paris6 31
Ex:Linux Client iptables (statique) # limitation ICMP ( 0,3,8,11 ) -A ICMP -p icmp -i eth0 -s 0/0 -d 0/0 -j ACCEPT -A ICMP -p icmp -s 0/0 --icmp-type echo-request -d 0/0 -i eth0 -j ACCEPT -A ICMP -p icmp -s 0/0 --icmp-type time-exceeded -d 0/0 -i eth0 -j ACCEPT -A ICMP -p icmp -s 0/0 --icmp-type destination-unreachable -d 0/0 -i eth0 -j ACCEPT -A ICMP -p icmp -s 0/0 -d 0/0 -i eth0 -j LOG log-prefix 'ICMP REJECT: ' -A ICMP -p icmp -s 0/0 -d 0/0 -i eth0 -j REJECT # Chaine LOCALNET Ajouter serveurs NIS NFS NTP -A LOCALNET s X.Y.Z.NIS-NFS-NTP d 0/0 j ACCEPT # protection contre les machines locales ( SANS LOG ) -A LOCALNET -s X.Y.Z.0/24 -d 0/0 -p udp -j REJECT -A LOCALNET -s X.Y.Z.0/24 -d 0/0 -p tcp -j REJECT -y # Chaine AMIS ( Exemple X11 IDRIS ) -A FRIENDS -p tcp s D.E.F.0/24 d 0/0 --dport 6000 j ACCEPT -A FRIENDS -p udp -s D.E.F.0/24 -d 0/0 -j REJECT -A FRIENDS -p tcp -s D.E.F.0/24 -d 0/0 -j REJECT -y 22/01/2009 Formation Permanente Paris6 32
Exemple en environnement CISCO 22/01/2009 Formation Permanente Paris6 33
Machines externes Identification des populations externes Vrais ennemis => tout bloquer Vrais amis => tout autoriser Ennemis => uniquement DNS et Mail Amis => certains protocoles seulement Collaborateurs => certains protocoles vers certaines machines Le reste 22/01/2009 Formation Permanente Paris6 34
Machines Internes Machines très sensibles => rien Serveurs Internets dédiés => uniquement les services utiles Salles libre service, postes itinérants => le moins de choses possible Groupe de travail => collaboration Le reste 22/01/2009 Formation Permanente Paris6 35
Filtrage : Politique Avant (Minimum) En entrée :» Tout accepter sauf... En sortie» Tout accepter Maintenant (minimum) En entrée» Tout refuser sauf... En sortie» Tout accepter sauf voir plutôt tout refuser sauf... 22/01/2009 Formation Permanente Paris6 36
Filtrage : Politique en entrée ICMP Nécessaire» Type 3 Destination Unreachable» Type 11 Time exceeded Peuvent servir» Type 0 echo request» Type 8 echo reply» Type 4 source quench» Type 12 parameter problem Le reste : inutile ou dangereux TCP / UDP TCP UDP Ports privilégiés:» Filtrer vers serveurs Ports non privilégiés:» Fermer les ports dangereux ( trojan, services...)» Ouvrir pour réponses aux requêtes locales» Fermer si possible 22/01/2009 Formation Permanente Paris6 37
Phase 1 : Protéger le routeur no access-list 101!! Permettre a notre routeur de dialoguer avec son voisin! mais a personne d'atteindre notre routeur de l'extérieur sauf si necessaire! station d'admin externe! sauf en ICMP access-list 101 permit ip R.D.I.y 0.0.0.0 R.D.I.x 0.0.0.0 access-list 101 permit icmp any R.D.I.x 0.0.0.0! machine externe qui peut atteindre le routeur et download des configs access-list 101 permit tcp E.X.T.ADMIN 0.0.0.0 R.D.I.x 0.0.0.0 eq 23 access-list 101 permit udp E.X.T.ADMIN 0.0.0.0 eq 69 R.D.I.x 0.0.0.0 gt 1023!rip V2 access-list 101 permit udp R.D.I.y 0.0.0.0 224.0.0.0 15.255.255.255 access-list 101 deny ip any R.D.I.x 0.0.0.0 log 22/01/2009 Formation Permanente Paris6 38
Phase 2 : Réseaux interdits + Antispoofing et broadcast! Reseaux Privées, non alloués interdit comme source access-list 101 deny ip 0.0.0.0 0.255.255.255 any log access-list 101 deny ip 10.0.0.0 0.255.255.255 any log access-list 101 deny ip 127.0.0.0 0.255.255.255 any log access-list 101 deny ip 169.254.0.0 0.0.255.255 any log access-list 101 deny ip 172.16.0.0 0.15.255.255 any log access-list 101 deny ip 192.0.2.0 0.0.0.255 any log access-list 101 deny ip 192.168.0.0 0.0.255.255 any log access-list 101 deny ip 240.0.0.0 7.255.255.255 any log access-list 101 deny ip 248.0.0.0 7.255.255.255 any log access-list 101 deny ip 255.255.255.255 0.0.0.0 any log access-list 101 deny ip 224.0.0.0 15.255.255.255 any log! Protection Anti spoofing et broadcast local access-list 101 deny ip X.Y.Z.0 0.0.0.255 any log access-list 101 deny ip any X.Y.Z.255 0.0.0.0 any log access-list 101 deny ip any X.Y.Z.0 0.0.0.0 any log 22/01/2009 Formation Permanente Paris6 39
Phase 3 : Ennemis, Dangereux et nos machines sensibles! Virez les ENNEMIS tout de suite et pour tout ( Si vous en avez :-) )! From T.U.V.0/24! exemple NAPSTER 64.124.41.0/24 access-list 101 deny ip T.U.V.0 0.0.0.255 any log! Virez les DANGEREUX tout de suite en leur autorisant que MAIL et DNS! From R.S.T.0/24! Non pas EPITA.FR ;-) access-list 101 permit tcp R.S.T.0 0.0.0.255 X.Y.Z.DNS 0.0.0.0 eq 53 log access-list 101 permit udp R.S.T.0 0.0.0.255 X.Y.Z.DNS 0.0.0.0 eq 53 log access-list 101 permit tcp R.S.T.0 0.0.0.255 X.Y.Z.MAIL 0.0.0.0 eq 25 log access-list 101 deny ip R.S.T.0 0.0.0.255 any log! Protéger nos machines tres sensibles pas d'ip avec l'extérieur! X.Y.Z.SENSIBLE X.Y.Z.SYSLOG ( meme pas en sortie ) access-list 101 deny ip any X.Y.Z.SENSIBLE 0.0.0.0 log access-list 101 deny ip any X.Y.Z.SYSLOG 0.0.0.0 log 22/01/2009 Formation Permanente Paris6 40
Phase 4 : Filtrage des ports dangereux (UDP Principalement)! je filtre tous les ports connus comme dangereux ( enfin connus à un instant t)!! filtres certains ports UDP/TCP supérieurs a 1023 et dangereux :! http://packetstorm.securify.com/trojans/trojan_ports_list.r_m! http://www.simovits.com/nyheter9902.html! IRC (6665-6670)! Back orifice (31337), Netbus (12345,12346)! Mstream(6723, 12754 15104,TCP), Mstream zombies(6838 7983 9325 10498,UDP))! Ramen (27374)!.. 22/01/2009 Formation Permanente Paris6 41
Phase 5 : Connections TCP établies!! Permettre les connexions tcp établies (réponse pour nos sorties)! Attention un certain nombre de moteurs de scan passe a travers! Mais visiblement sans danger pour les machines access-list 101 permit tcp any X.Y.Z.0 0.0.0.255 established 22/01/2009 Formation Permanente Paris6 42
Phase 6 : Cas spéciaux ICMP, DNS et FTP sortant! Doit on autoriser tout ICMP ( si oui ) ( personnellement je pense que non )!access-list 101 permit icmp any X.Y.Z.0 0.0.0.255 access-list 101 permit icmp any X.Y.Z.0 0.0.0.255 unreachable fragmentationneeded echo-reply echo! Si DNS externe et de toute facon pour vos secondaires externes access-list 101 permit udp E.X.T.DNS 0.0.0.0 eq 53 X.Y.Z.0 0.0.0.255 gt 1023 access-list 101 permit tcp E.X.T.DNS 0.0.0.0 eq 53 X.Y.Z.0 0.0.0.255 gt 1023! Accès DNS pour les machines internes Access-list 101 permit udp any eq 53 X.Y.Z.0 0.0.0.255 gt 1023 Access-list 101 permit tcp any eq 53 X.Y.Z.0 0.0.0.255 gt 1023! pour pouvoir faire du ftp sortant ( Non passif ) cette ligne est nécessaire!attention pas du tout innofensif access-list 101 permit tcp any eq 20 X.Y.Z.0 0.0.0.255 gt 1023 22/01/2009 Formation Permanente Paris6 43
Phase 7: Vrais Amis, Amis et collaborations! Accepter les VRAIS AMIS pour tout??! ( est ce bien eux ou sont t'ils spoofés - Peut être trop dangereux ) from A.B.C.0/24 access-list 101 permit ip A.B.C.0 0.0.0.255 any log!accepter les AMIS sur certains ports! Exemple ftp telnet ssf r-commandes X11 et impression...! Remarque Si sshd est dispo sur l'autre site il n'est meme pas! nécessaire d'ouvrir les ports 6000 pour X11 car ils sont tunnelés ( et crypté )! FROM D.E.F.0/24 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 1023 any eq 20 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 1023 any eq 21 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 1023 any eq 23 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 950 any eq 22 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 950 any eq 513 access-list 101 permit tcp D.E.F.0 0.0.0.255 gt 950 any eq 514 access-list 101 permit tcp D.E.F.0 0.0.0.255 any eq 6000 access-list 101 permit tcp D.E.F.0 0.0.0.255 any eq 515! COLLABORATEURS!c'est le moment de les mettre ici 22/01/2009 Formation Permanente Paris6 44
Phase 8 :Nos Serveurs externes! Permettre l'access a nos serveurs externes! uniquement sur les ports qui les interessent access-list 101 permit tcp any X.Y.Z.WWW 0.0.0.0 eq 80 access-list 101 permit tcp any X.Y.Z.WWW 0.0.0.0 eq 443 access-list 101 permit tcp any X.Y.Z.DNS 0.0.0.0 eq 53 access-list 101 permit udp any X.Y.Z.DNS 0.0.0.0 eq 53 access-list 101 permit tcp any X.Y.Z.FTPANO 0.0.0.0 eq 21 access-list 101 permit tcp any X.Y.Z.FTPANO 0.0.0.0 eq 20! special ftp passif! Pour les serveurs wu-ftpd(version 2.6.1 minimum pour la sécurité) rajouter dans /etc/ftpaccess! passive ports 0.0.0.0/0 45001 45010 ( autorise 10 connexions simultanée)! PassivePorts 45001 45010 dans /etc/proftpd.conf pour dix connexions! ceci ne marche que pour cisco V11 access-list 101 permit tcp any gt 1023 host X.Y.Z.FTPANO range 45001 45010! si pas wu-ftpd ou proftpd ou bien pas la ligne, pour le mode passif il faut! access-list 101 permit tcp any gt 1023 X.Y.Z.FTPANO gt 1023 access-list 101 permit tcp any X.Y.Z.POP 0.0.0.0 eq 110 access-list 101 permit tcp any X.Y.Z.IMAP 0.0.0.0 eq 143 access-list 101 permit tcp any X.Y.Z.WEBMAIL 0.0.0.0 eq xxxx access-list 101 permit tcp any X.Y.Z.MAIL 0.0.0.0 eq smtp! Notre serveur interactif accessible de partout(telnet(23) FTP(20,21) SSF(22))!( Si on peut se passer de telnet et ftp et n'autoriser que SSF ( c'est beaucoup mieux) access-list 101 permit tcp any X.Y.Z.INTERACTIF 0.0.0.0 eq 20 access-list 101 permit tcp any X.Y.Z.INTERACTIF 0.0.0.0 eq 21 access-list 101 permit tcp any X.Y.Z.INTERACTIF 0.0.0.0 eq 23 access-list 101 permit tcp any X.Y.Z.INTERACTIF 0.0.0.0 eq 22 22/01/2009 Formation Permanente Paris6 45
Phase 9 : J interdit Tout!!INTERDIRE TOUT LE RESTE EN ENTREE! ET JE LOGGUE access-list 101 deny ip any X.Y.Z.0 0.0.0.255 log 22/01/2009 Formation Permanente Paris6 46
Protections en sortie no access-list 102! ACCESS LISTE 102 Sortie du site! Il n'est pas inutile de protéger les autres peut être compléter un peu la liste! protection réseau et broadcast extérieur access-list 102 deny ip any 0.0.0.255 255.255.255.0 access-list 102 deny ip any 0.0.0.0 255.255.255.0! protections d'un certain nombre de ports en sortie Pormap, mountd, linuxconf,nfs,snmp,tftp,lpd, Microsoft access-list 102 deny udp any any eq 111 log access-list 102 deny udp any any eq 635 log access-list 102 deny tcp any any eq 98 log access-list 102 deny udp any any eq 2049 log access-list 102 deny udp any any eq 161 log access-list 102 deny tcp any any eq 79 log access-list 102 deny tcp any any eq 515 log Access-list 102 deny tcp any any range 135 139 Access-list 102 deny udp any any range 135 139 Access-list 102 deny tcp any any eq 445 Access-list 102 deny udp any any eq 445 22/01/2009 Formation Permanente Paris6 47
Filtrage statique : Conclusion Avantage Concept et syntaxe simple Sécurisation relativement efficace mais complétement insuffisante en entrée de site Inconvénients Attention à l ordre (l ACL du vendredi soir ;-) Nécessite une surveillance attentive des logs Pas de support de certains protocoles sans ouvrir de grosses brèches dans le filtrage» ports dynamiques : netmeeting» connexions initiées depuis l extérieur (ftp, X11, ) => Filtrage dynamique 22/01/2009 Formation Permanente Paris6 48