Vous êtes sur la page 1sur 86

Anne acadmique 2001-2002

Cration dun Firewall


Travail raliser:
Lobjet de ce projet de fin dtudes est la cration dun Firewall qui est bas sur le principe du filtrage de paquets. Le travail consiste dans ldition et linstallation dun script firewall sur une machine Linux du Centre Universitaire. La description de diverses mthodes dintrusions connues est une partie essentielle du projet. Pour cela, il faut faire une synthse de divers papiers recherchs sur Internet www.cert.org et sur dautres sites. Enfin, la validation du script consiste en un contrle que les divers dispositifs de protection fonctionnent correctement.

Etudiant:
Nom: Classe: Adresse: Tlphone: e-mail: Gaspers Serge 2e anne du D.U.T. en informatique 2, rue du Foss 021 30 67 37 ou 56 79 66 sergej@email.lu ou gaspers@cu.lu Prof P. YANS L-3644 Kayl (Luxembourg)

Promoteur du projet:

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

1. Table des matires


1. Table des matires.......................................................................................................................................2 2. Remerciements.............................................................................................................................................5 3. Introduction.................................................................................................................................................6 volution rcente des intrusions................................................................................................................6 Classification des intrus.............................................................................................................................6 Quest-ce quun firewall ?..........................................................................................................................7 Les types de firewall...................................................................................................................................7 1. Le filtrage de paquets............................................................................................................................7 2. Les Application-Level Gateways.........................................................................................................8 3. Les Circuit-Level Firewalls..................................................................................................................8 Architecture des firewalls..........................................................................................................................8 1. Firewall personnel................................................................................................................................9 2. Firewall bastion....................................................................................................................................9 3. Firewall bastion + Firewall interne (choke)..........................................................................................9 4. Notions de base..........................................................................................................................................11 TCP/IP.......................................................................................................................................................11 IP................................................................................................................................................................11 Adresse IP...............................................................................................................................................11 Datagrammes IP......................................................................................................................................12 Paquets ICMP...........................................................................................................................................13 Ports...........................................................................................................................................................14 Paquets UDP..............................................................................................................................................15 Paquets TCP..............................................................................................................................................15 Runlevel-Manager....................................................................................................................................18 Description des services dmarrs par le Runlevel 2 ................................................................................................................................................................20 xinetd..........................................................................................................................................................21 inetd classique.........................................................................................................................................21 xinetd......................................................................................................................................................21 DNS............................................................................................................................................................21 Structure des noms symboliques sous forme darbre.............................................................................21 Traitement dune requte dun client......................................................................................................22 5. Le filtrage de paquets................................................................................................................................24 Masquage dIP..........................................................................................................................................26 6. ipchains......................................................................................................................................................28 Les options dIpchains..............................................................................................................................28 -F [<chane>]..........................................................................................................................................28 -P <chane>.............................................................................................................................................28 -A [<chane>].........................................................................................................................................28 -I [<chane>]...........................................................................................................................................29 -i <interface>..........................................................................................................................................29 -p <protocole>........................................................................................................................................29

Page 2 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

-j <policy>..............................................................................................................................................29 -s <adresse> [<port>]..............................................................................................................................29 -d <adresse> [<port>].............................................................................................................................30 -l..............................................................................................................................................................30 -y.............................................................................................................................................................30 ! y..........................................................................................................................................................30 7. Exemples tirs du script............................................................................................................................31 Rgles gnrales........................................................................................................................................31 Options du kernel....................................................................................................................................31 Fausses adresses......................................................................................................................................32 Messages ICMP.........................................................................................................................................33 Protection des services utilisant des ports non privilgis....................................................................34 Services necessaries..................................................................................................................................35 DNS........................................................................................................................................................35 Services TCP frquents............................................................................................................................35 HTTP (www)..........................................................................................................................................35 SSH.........................................................................................................................................................36 Services UDP frquents............................................................................................................................37 Traceroute...............................................................................................................................................37 Installation du firewall.............................................................................................................................37 1. Adresse IP statique.............................................................................................................................37 2. Connexion PPP...................................................................................................................................38 8. Attaques frquentes et les solutions possibles..........................................................................................39 Denial of Service (DoS).............................................................................................................................39 Introduction.............................................................................................................................................39 Effets.......................................................................................................................................................39 Types dattaque.......................................................................................................................................39 Buffer Overflow........................................................................................................................................46 1. mountd dans NFS...............................................................................................................................47 2. IMAP..................................................................................................................................................47 3. POP.....................................................................................................................................................47 CGI et les mta-caractres.......................................................................................................................47 Dfinitions..............................................................................................................................................47 Pourquoi les mta-caractres sont dangereux.........................................................................................48 Comment viter ce danger?....................................................................................................................48 FTP.............................................................................................................................................................49 Gnralits..............................................................................................................................................49 Configuration dun serveur FTP anonyme.............................................................................................49 Serveur FTP compromis.........................................................................................................................52 Attaque FTP bounce...............................................................................................................................53 9. Prsentation des utilitaires et test du systme...........................................................................................56 netstat.........................................................................................................................................................56 ping.............................................................................................................................................................57 ifconfig.......................................................................................................................................................58 traceroute...................................................................................................................................................58 nslookup.....................................................................................................................................................60

Page 3 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

whois...........................................................................................................................................................60 route...........................................................................................................................................................61 D'abord quelques explications:...............................................................................................................61 La commande route:...............................................................................................................................62 Nmap..........................................................................................................................................................63 Description..............................................................................................................................................63 Options....................................................................................................................................................64 10. Conclusion...............................................................................................................................................73 iptables.......................................................................................................................................................73 ipfilter.........................................................................................................................................................73 Exprience personnelle.............................................................................................................................73 ANNEXE A : Les srcipts...............................................................................................................................75 script principal..........................................................................................................................................75 Autres scripts utiles..................................................................................................................................81 accept-all.................................................................................................................................................81 block-ip...................................................................................................................................................81 unblock-ip...............................................................................................................................................82 ANNEXE B : Ressources..............................................................................................................................83 Livres :.......................................................................................................................................................83 Linux Firewalls ................................................................................................................................................................83 linux firewalls konzeption und implementierung fr kleine netzwerke und PCs ................................................................................................................................................................83 Sites Internet (principaux):......................................................................................................................83 Pages Man et Howtos :.............................................................................................................................84 ANNEXE C: Index........................................................................................................................................85

Page 4 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

2. Remerciements
Je tiens remercier

le tuteur de ce projet, M. P. Yans qui ma toujours indiqu les tapes franchir tout au long de ce projet, relu ce que javais produit plusieurs fois et donn son avis. Il tait aussi ouvert pour toutes les questions, ltudiant Christophe Ferreira qui a mis ma disposition son ordinateur de la salle informatique du Centre Universitaire plusieurs fois pour que je puisse effectuer les tests ncessaires, ladministration du Centre Universitaire pour avoir mis ma disposition le matriel informatique ncessaire (machines, rseau, imprimante, ) et pour mavoir prt le livre linux firewalls de Robert L. Ziegler, ma famille et ma copine pour le soutien moral pendant cette priode.

Page 5 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

3. Introduction
volution rcente des intrusions
Au cours des dernires annes, le nombre dintrusions illgales dans des systmes informatiques travers Internet a considrablement augment. Un CERT (Computer Emergency Response Team) est un organisme ou une socit qui produit des rapports sur les incidents qui comprennent les attaques, les virus et les bugs et des rapports sur des vulnrabilits qui concernent des systmes dexploitations ou des applications logicielles spcifiques. Un CERT a donc pour but dinformer et de prvenir/ragir ainsi face aux incidents de scurit qui augmentent danne en anne. Souvent, il donne aussi des conseils aux utilisateurs pour viter des attaques. Le CERT/CC (Computer Emergency Response Team / Coordination Center) publie lensemble des rapports et statistiques qui lui sont donns par les diffrents CERTs rparties dans le monde. Voici un graphique qui illustre laugmentation des incidents reports aux CERTs pendant les dernires annes. En se basant sur le nombre dincidents qui ont t reports pendant le premier quart de lanne 2002, on peut prvoir quen 2002, le nombre dincidents double encore une fois par rapport lanne prcdente.

Incidents reports CERT


60000 nombre d'incidents 50000 40000 30000 20000 10000 0
92 93 98 88 89 90 91 94 95 96 97 99 00 19 19 19 19 19 19 19 19 19 19 19 19 20 20 01

Anne

Classification des intrus


Les gens qui sintroduisent dans des systmes sont de deux familles :

les pirates, Crackers ou Black Hats qui se caractrisent par des activits illgales et les White Hats (parfois nomms simplement hackers) qui sillustrent par leur dsir de connatre, dapprendre et damliorer la scurit en ligne.

Page 6 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Un des plus rputs White Hats en France agit sous le pseudonyme Fozzy . Il a trouv rcemment plusieurs failles dans les services de courrier lectronique : Hotmail et Yahoo ! Aprs avoir alert les deux services, il recevait une rponse de Hotmail disant que le problme tait rsolu. En revanche, Yahoo ! ne parvenait pas rsoudre le problme avant que Fozzy ne publie le problme dans le journal Hackerz Voice pour avertir les utilisateurs. Mais les intrusions ont souvent dautres raisons que la scurisation de systmes informatiques : Quelques pirates pntrent dans des ordinateurs parce que cest un loisir intressant pour eux ou parce quils aiment se vanter, embter les autres ou le dfi. Dautres, par contre, cherchent des avantages plus concrets, comme la diffusion de copies illgales de logiciels ou lespionnage. Enfin, les Hacktivistes ont des raisons politiques pour sintroduire dans des systmes. Par exemple, en 1999, le site du Front National avait t hack par le hacktiviste Raptor666 qui avait remplac la page daccueil par une autre qui attaquait le racisme et le fascisme.

Quest-ce quun firewall ?


Pour lutter contre des intrusions illgales, ltablissement dun pare-feu (appel aussi coupefeu ou firewall en anglais) est indispensable. Cest un systme qui permet de protger un ordinateur ou un rseau des attaques qui proviennent dun autre rseau, notamment Internet. Le systme firewall est un systme logiciel (parfois galement matriel) constituant un intermdiaire entre le rseau local et le monde extrieur. Dans le cas o la zone protge se limite lordinateur sur lequel le firewall est install, on parle de firewall personnel.

Rseau externe / Internet

Rseau interne Firewall

Dans le cadre de ce projet de fin dtudes, un firewall personnel doit tre install. Celui-ci se laisse quand-mme transformer aisment en un firewall qui protge tout un rseau.

Les types de firewall 1. Le filtrage de paquets


Un firewall fonctionnant selon le principe du filtrage de paquets analyse les paquets, donc les messages qui sont changs entre deux machines. Plus prcisment, ils analysent len-tte de

Page 7 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ces paquets, qui contient surtout des informations pour lacheminement des paquets et sur le type des paquets, et dcident si le paquet est acceptable ou pas. Lavantage de ce type de firewall est quil na pratiquement pas dimpact sur les performances du rseau et est tout fait transparent pour lutilisateur. Il peut aussi enregistrer les paquets non accepts dans des journaux, ce qui facilite de retrouver les auteurs de lagression. Linconvnient majeur est que lauthentification ne peut se faire qu partir de ladresse IP. Si ladministrateur bloque ladresse IP dun ordinateur du rseau interne, cest--dire quil rejette tous les messages qui partent de cette adresse IP ou qui sont destins celle-ci, pratiquement rien nempche lutilisateur de se connecter dun autre ordinateur du mme rseau Internet ou de simplement changer son adresse IP. Notre firewall personnel travaillera selon ce principe. Une bonne connaissance du protocole TCP/IP est ncessaire afin de crer des rgles de filtrage cohrentes.

2. Les Application-Level Gateways


Ce type de firewall est mieux connu par les logiciels qui tournent sur son systme : les proxies. Ce sont des logiciels spcifiques crits pour chaque service qui doit tre support et permettent de filtrer les communications application par application. Lordinateur qui relie le rseau interne au rseau externe est appel serveur proxy. Chaque programme proxy de ce serveur se comporte vis--vis du client sur le rseau interne comme serveur et vis--vis du serveur sur le rseau externe comme client. Pour chaque application dont ladministrateur veut accepter la communication du rseau interne avec lextrieur, il doit y avoir un programme proxy qui peut contrler lintgrit des donnes sur un niveau plus haut que le filtrage de paquets, car le programme proxy connat la manire dont les donnes doivent tre structures dans lapplication en question. En plus, il peut scanner les donnes pour trouver des virus et authentifier les utilisateurs. Lavantage de ce type de firewall est quil offre en principe le plus haut degr de scurit envisageable. Un autre avantage est que ladministrateur peut forcer lauthentification des utilisateurs avec un nom dutilisateur et un mot de passe. Les Application-Level Gateways sont plus faciles configurer et tester que les firewalls bases sur le filtrage de paquets. On peut encore remarquer quil est facile de loguer le trafic entrant et sortant. Le plus grand dsavantage de ce type de firewall est que des programmes et des interfaces spcialiss sont requis et que seulement les services les plus importants seront supports. Un autre inconvnient est la forte consommation de ressources sur le serveur proxy. Ce type de firewall est aussi moins transparent envers lutilisateur.

3. Les Circuit-Level Firewalls


Ce type de firewall ne ralise aucun contrle ou filtrage une fois que la connexion est permise. Ils agissent simplement comme un tuyau (wire) entre le serveur et le client. Comme les Application-Level Gateways, ils permettent lauthentification des utilisateurs et ils apparaissent pour chaque interlocuteur comme lautre extrmit de la connexion. Ce type de firewall est souvent utilis pour les communications sortantes en parallle avec un autre type de firewall pour les communications entrantes, ce qui forme un firewall hybride.

Architecture des firewalls


part le choix du type de firewall que lon veut implmenter, il est aussi ncessaire de choisir une architecture qui est en accord avec le degr de scurit souhait et le nombre et le type de machine(s) quon veut protger. Voici quelques architectures possibles :

Page 8 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

1. Firewall personnel
On parle de pare-feu personnel si seulement un ordinateur doit tre protg contre dventuels intrus. Il est clair que dans une telle architecture le choix dun Application-Level Gateway ou dun Circuit-Level Gateway a peu de sens. Vu que ce projet a pour objectif de protger en premier lieu une seule machine du Centre Universitaire, cette architecture trs simple sera utilise.

2. Firewall bastion
Une firewall bastion se situe entre le rseau externe (Internet) et le rseau interne (LAN). Sa mission primaire est de protger le rseau local contre dventuelles agressions venant de lextrieur. Dans certains cas, il est galement ncessaire de limiter les actions des utilisateurs du rseau interne, pour viter que ceux-ci lancent des attaques, par exemple. Des parents peuvent aussi implmenter un serveur proxy pour viter que les enfants recherchent des pages contenant certains mots ou accdent certains sites.

Internet

Firewall bastion LA N
Dans le cas o lon ferait confiance aux utilisateurs du rseau interne, le firewall personnel qui est tabli dans le cadre de ce projet peut facilement tre converti en un pare-feu bastion. Cette architecture est acceptable pour des petits rseaux locaux, mais les grands rseaux qui offrent aussi plusieurs services, comme des services web et ftp font mieux de choisir la prochaine architecture, car une fois que le firewall bastion est perc, tout le rseau interne est accessible lintrus.

3. Firewall bastion + Firewall interne (choke)


Dans un grand rseau qui offre des services des clients se trouvant sur le Net, il vaut mieux diffrencier les serveurs offrant des services, sur lequel se trouvent des informations publiques et les machines du rseau local, sur lequel se trouvent des donnes personnelles de lentreprise qui doivent tre protges davantage. Dans cette architecture, il y a deux pare-feux, un qui protge les serveurs de services et un qui protge les machines du rseau interne. Les rgles de scurit du 2e firewall (choke) seront plus restrictives, car dans le cas o quelquun arriverait sintroduire dans un serveur web, par exemple, il ne doit pas tre capable dattaquer les ordinateurs du rseau local.

Page 9 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

La zone qui est moins protge de par le fait quelle doit offrir certains services est appele zone dmilitarise. Elle se situe entre les deux firewalls.

Internet

Firewall 1 (bastion) Serveur FTP Firewall 2 (Choke) LA N LAN (Local Area Network) protg davantage Serveur Web DMZ (DeMilitarized Zone) zone dmilitarise

Page 10 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

4. Notions de base
TCP/IP
Pour transporter des informations dune machine lautre travers lInternet, une famille de protocoles est utilise, appele TCP/IP (Transmission Control Protocol / Internet Protocol). Le modle TCP/IP est divis en quatre couches/niveaux pour faciliter la communication entre les ordinateurs. On divise pour mieux rgner. Chaque couche a une tche bien dtermine et ne doit pas ncessairement savoir comment les donnes sont traites dans les autres couches.

Chemin dun message Couche Application

telnet, www, ftp, http,

Couche Application

Couche Transport

TCP, UDP

Couche Transport

Couche Rseau

IP, (ICMP)

Couche Rseau

Couche Liaison

Protocole liaison eth,

Couche Liaison

Canal physique
La couche Application permet 2 applications sur diffrentes machines de communiquer, cest--dire de senvoyer des messages mutuellement. La structure de ces messages dpend du type de lapplication. Une page web est par exemple transmise par le protocole http. La couche Transport accepte les donnes de la couche Application, les dcoupe en paquets (segments TCP ou datagrammes UDP, cf. page 15) et les ordonne. Elle assure ventuellement lintgrit des messages transmis de bout en bout. La couche Rseau soccupe de lacheminement des datagrammes (paquets IP, cf. page 11). Finalement, la couche Liaison est responsable de lacheminement de blocs dinformation sur la liaison physique (ligne tlphonique, satellite, rseau local). Pour effectuer une transmission correcte, cette couche attache des en-ttes au paquet de donnes transmettre. Les messages qui sont changs sont appels trame. Sa conception incombe plutt des spcialistes du domaine de lingnieur lectronicien.

IP Adresse IP
Une adresse IP est un nombre de 32 bits (4 octets) qui identifie une machine, plus prcisment une interface rseau, cest--dire un modem ou une carte ethernet, . Sa reprsentation se fait en notation dcimale pointe. Les adresses possibles vont donc de 0.0.0.0 255.255.255.255 et elle doit tre unique au monde. Elle est dcoupe en deux parties : la premire dsigne

Page 11 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ladresse de rseau (network id), la seconde est lidentificateur local de la machine (host id). Ladresse de rseau des grands rseaux est plus petite que celle des petits rseaux. Rseau de classe A : de 1.0.0.0 126.0.0.0 Rseau de classe B : de 128.1.0.0 191.255.0.0 Rseau de classe C : de 192.0.1.0 223.255.255.0 Rseau de classe D : de 224.* 231.* Rseau de classe E : de 239.* 254.* max. 16 277 214 id locaux max. 65 534 id locaux max. 254 id locaux adresses multicast rserv pour utilisations futures

Ladresse 127.0.0.1 est ladresse loopback ou localhost. Par cette adresse, on dsigne soi-mme. Ceci est utile si on veut tester des logiciels. On leur dit donc de se connecter sa propre machine sans passer par linterface externe (modem, carte ethernet, ). Si tous les bits de lidentificateur local sont mis 0, on dsigne tout le rseau, p.ex.: 193.168.74.0 dsigne le rseau de la classe C qui se trouve au rez-de-chausse du Btiment des Sciences dans le Centre Universitaire. Si tous les bits de lidentificateur local sont 1, on dsigne ladresse broadcast de ce rseau, donc toutes les machines de ce rseau. Un paquet envoy une adresse broadcast est envoy toutes les machines de ce rseau (si le rseau nest pas configur de faon ignorer le broadcasting par mesure de scurit), p.ex.: 193.168.74.255. Si on veut adresser toutes les machines du mme rseau, ladresse de diffusion locale 255.255.255.255 est utilise, ainsi lordinateur na pas besoin de connatre ladresse de son rseau. Ceci est la raison pour laquelle un rseau de classe C peut seulement avoir 254 identificateurs locaux alors que thoriquement 28=256 seraient possibles : une adresse IP est rserve pour dsigner le rseau et une est ladresse broadcast. Ladresse 0.0.0.0 est mise comme adresse source si cette machine ne connat pas son adresse IP. Exemple : une machine sans disque de dmarrage utilisant RARP (voir page 13) ou une nouvelle station arrivant sur le rseau.
Sous-rseaux IP

Ladministrateur rseau peut diviser son rseau en plusieurs sous-rseaux (subnet) pour avoir une meilleure structuration du rseau. Le rseau de classe C 193.168.74.0 peut, par exemple, tre divis en deux sous-rseaux. Dans ce cas de figure, le premier bit de la partie host id (dernier byte de ladresse IP) dans une adresse IP dfinit alors quel rseau ladresse IP appartient.

Datagrammes IP
Le format de paquet adopt par la couche IP est le datagramme. Cest donc un groupe doctets qui circule sur Internet, provenant dune station et destination dune autre station. Un datagramme IP est divis en 2 parties : len-tte (header) et les donnes. Len-tte contient entre autre les informations suivantes : Vers : la version du protocole. La version actuelle est la version 4 IHL : Internet Header Length. Cest la longueur de len-tte exprime en mots, en anglais Fullword (1 Fullword = 4 octets). Gnralement, len-tte a une longueur de 5 mots TOS : Type of Service. Ce champ nest actuellement pas utilis, il tait prvu pour donner la qualit de service requise.

Page 12 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

TL : Total Length. Cest la longueur totale du datagramme IP en octets. La longueur maximale dun datagramme IP est de 64 Ko, mais il est recommand de ne pas dpasser les 576 octets. TTL : Time To Live : Cest le nombre maximal de routeurs quun datagramme peut traverser (ou nombre de hops). Il sert viter quun datagramme circule ternellement en cas de boucle, mais il sert dautres utilisations (voir la commande traceroute, page 58). En fait, les routeurs prennent seulement en compte ladresse IP destinataire du datagramme pour choisir quel routeur il faut le transmettre et il se peut que des informations narrivent jamais son destinataire dans le cas dune boucle. Protocol : Ce champ indique le protocole de la couche suprieure. En fait, on peut considrer que le protocole ICMP se situe entre la couche T TCP : 6 Rseau et la couche Transport. Cest la raison pour laquelle je lai mis entre C : 17 UDP parenthses dans la couche Rseau sur le graphique au-dessus. Mais en tout P : 1 ICMP cas, un datagramme IP est compris dans un Message ICMP. Ensuite, un datagramme IP contient encore un champ qui vrifie lintgrit de len-tte (Header Checksum) et des champs qui contiennent des informations sur la fragmentation IP : le n didentification du datagramme (ID), des flags qui indiquent sil y a encore des fragments qui vont arriver (Flags) et la position du fragment dans le datagramme dorigine (FO = Fragment Offset). Naturellement, une en-tte IP contient aussi ladresse IP de lmetteur (Source Address) et celle du destinataire (Destination Address). Attention, ce sont les adresses des extrmits et non pas des routeurs intermdiaires. Les deux autres champs sont Options (niveau de scurit, time stamp) et Padding (complte le champ Options pour que len-tte soit un multiple de 32). ARP (Address Resolution Protocole) est un protocole qui permet de trouver ladresse physique (appele adresse Ethernet ou encore adresse MAC : Medium Access Control) sur le mme rseau en donnant uniquement son adresse IP. En fait, la carte rseau de chaque machine connecte au rseau possde un numro didentification unique qui est fix ds la fabrication de la carte en usine. Toutefois, la communication sur Internet ne se fait pas directement partir de ce numro, mais partir dune adresse logique : ladresse IP. Si lacheminement des paquets serait fait en utilisant cette adresse physique, les mises jour dans les routeurs suite des remplacements de cartes ne trouveraient pas de fin. Les correspondances entre les adresses physiques et logiques sont faits laide dune table ARP. Sous Linux, le contenu de cette table peut tre affich par la commande arp a. Leffet renvers (trouver ladresse IP partir dune adresse physique) peut tre obtenu par rarp a. Cest souvent utilis dans le cas o une machine naurait pas de disque de dmarrage et utilise le protocole rarp pour demander au serveur sa propre adresse IP et, par la suite, charger un fichier en mmoire pour amorcer la machine.

Paquets ICMP
Labrviation ICMP signifie Internet Control Message Protocol et cest un protocole qui soccupe des messages derreurs transmis sur le rseau. Un tel paquet peut tre envoy par lquipement destinataire ou un routeur intermdiaire sil constate un problme li un paquet dun autre type. En gnral, un message ICMP ne doit pas engendrer un autre message ICMP, il ne demande donc pas de rponse (exception : ICMP echo request). Cela vite dentrer dans un cercle vicieux de rmissions de messages de contrle en rponse dautres messages de contrle. Donc, en cas derreur sur un datagramme transportant un message ICMP, aucun message derreur nest dlivr.

Page 13 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Comme je lai dit auparavant, ce protocole utilise le protocole IP comme une couche suprieure, il est En-tte IP En-tte ICMP Donnes ICMP donc contenu dans un datagramme IP. Le but de ces messages de contrle est de pouvoir signaler lapparition dun cas derreur dans lenvironnement IP. Cest la raison pour laquelle le protocole ICMP fait partie de la couche Rseau. Len-tte ICMP dcrit seulement que cest un message ICMP. Le champ donnes ICMP est divis en 4 parties : Type, Code, Checksum et Message. Le premier octet du champ donnes ICMP est son type. Sa valeur dtermine le format du reste des donnes. Voici quelques exemples de types : Type 0 3 4 5 8 11 12 Nom symbolique echo-reply destination-unreachable source-quench redirect echo-request time-exceeded parameter-problem Signification Rponse un ping Un routeur ne peut pas transmettre le paquet au routeur/rseau suivant Le routeur signale que le volume de donnes envoy est trop grand et demande de rduire la vitesse de transmission Le routeur pense quil y a une route plus courte Envoi dun ping Le temps de vie (ttl = time-to-live) est dpasse Le champ dune en-tte est erron

La partie Code du champ Donnes ICMP nous donne plus dinformations sur la cause de lenvoi du message ICMP. Pour le type destination-unreachable (3), le tableau suivant donne les codes les plus frquents et leur signification : Code 0 1 2 3 4 5 Signification Rseau inaccessible Hte inaccessible Protocole non disponible Port non accessible Fragmentation ncessaire, mais interdite par un flag dans len-tte IP Le routage a chou

La partie Checksum contient des bits qui permettent de contrler lintgrit du message. La partie Message est variable en taille, elle dpend du type de message ICMP. Souvent, elle contient len-tte IP plus les 64 premiers bits extraits du datagramme original. Ces donnes peuvent tre utilises par la machine hte pour reconnatre le programme concern par ce message.

Ports
Un port est un identificateur dune application. Cest simplement un numro qui dsigne une destination abstraite utilise par un protocole de la couche Transport. Derrire les ports se cachent des applications qui veulent communiquer avec dautres programmes travers Internet. On peut dire que les ports sont des noms numriques de 0 65535 pour les services rseau/Internet. Les dmons (en anglais daemons), cest--dire les programmes qui attendent des connexions (ils se trouvent sur des serveurs ), les plus importants sont dsigns par les

Page 14 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ports privilgis (1 1023). LIANA (Internet Assigned Numbers Authority) soccupe de laffectation des services aux ports. Les programmes des ports privilgis ont en gnral les privilges root, mais il y a des exceptions. Quoique laffectation des numros de ports aux applications soit standardise, un client ne peut jamais tre sr que le service avec lequel il communique est rellement celui quil prtend tre. Un service est dit offert sil est accessible au port correct. Le tableau suivant montre les ports les plus importants et leur nom symbolique. Port 20 21 23 25 43 53 80 443 Nom FTP-Transfert FTP-Contrle Telnet SMTP Whois DNS WWW HTTPS Protocole TCP TCP TCP TCP TCP TCP ou UDP TCP TCP Explication Connexion de donnes du protocole FTP Connexion de commande du protocole FTP Terminal distance (TErminaL NETwork protocol) : cest un terminal virtuel utilisable partir dune autre machine Transmission de messages e-mail Permet davoir des informations sur un rseau Domain Name Server : pour la conversion des noms symboliques en adresses IP World Wide Web utilis par les serveurs Web et les browseurs, bas sur le protocole HTTP Utilis par SSL (Secure Socket Layer), un protocole pour laccs scuris et crypt des sites Web.

Aux ports non-privilgis (1024 65535) sont affects dynamiquement les applications du client qui veulent communiquer avec le serveur. Quelques ports de ce domaine peuvent aussi tre utiliss pour des services spcifiques, comme le serveur X-Window (ports 6000 6063). Une connexion est toujours identifie par deux sockets : Le socket client est la combinaison entre le port client, son adresse IP et le type de protocole (TCP ou UDP). Le socket serveur est compos de la mme faon.

Paquets UDP
Les deux protocoles principaux de la couche Transport sont TCP et UDP. La diffrence fondamentale entre eux est que TCP fonctionne en mode orient connexion et que UDP fonctionne en mode sans connexion. UDP signifie User Datagram Protocol . Vu que ce protocole est sans connexion, il est sans garantie, cest--dire quil ny a pas de confirmation que lautre ordinateur a reu le paquet, pas de contrle de flux et pas dordonnancement des paquets. On peut comparer ce protocole par lenvoi dune lettre en vie pratique. Par contre, le protocole TCP est comparable un appel tlphonique, vu quon doit dabord tablir une connexion avant dchanger des informations. Le protocole UDP ajoute une en-tte de 8 octets aux donnes quil a reu de la couche suprieure. Elle comprend le port source et le port destinataire ; le port source est optionnel, il peut indiquer un port pour la rponse. Le champ Length de 16 bits contient la longueur totale du paquet UDP, la longueur maximale tant de 216 = 64 Koctets. Enfin, le champ Checksum (qui est optionnel) est la seule garantie sur la validit des donnes (en-tte UDP & donnes proprement dites) qui arrivent destination.

Paquets TCP
Le protocole TCP (Transmission Control Protocol) a t conu pour rpondre aux besoins suivants :

Page 15 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Numroter les paquets pour vrifier sils sont tous arrivs destination, le cas chant redemander les paquets manquants et rassembler tous les paquets fragments pour les donner la couche Application. Comme UDP, TCP contient aussi les champs port source, port destinataire et Checksum. En plus, un paquet TCP contient les champs suivants : La Sequence Number est la numrotation des octets dans les paquets, donc le nombre doctets dj transmis. Il est utilis pour donner la possibilit de redemander les paquets perdus en route ou pour liminer les paquets qui sont arrivs plusieurs fois. LAcknowledgement Number exprime le numro du prochain octet que le destinataire espre recevoir et cest en mme temps un accus quil a reu les octets prcdents sans erreur ni perte. Le champ Data Offset ou HLEN est la longueur de len-tte donne en multiple de 32 octets. Le champ Window indique combien doctets lmetteur peut envoyer sans avoir eu un acquittement des paquets prcdents. En effet, on a introduit dans TCP le mcanisme de fentre de transmission . Dans la fentre sont les octets qui ont dj t envoyes, mais dont lacquittement na pas encore t reu et les octets qui peuvent encore tre envoys sans quon doive recevoir un acquittement pour des paquets antrieurs. Ce mcanisme vite que le serveur doive attendre lacquittement du paquet prcdent avant transmettre le prochain. 1 2 3 4 5 6 7 8 9 10 11 12 13

Faire tout ce que UDP sait faire, Vrifier que le destinataire est prt recevoir des donnes, Fragmenter les gros paquets pour que IP les accepte,

Dernier octet envoy et acquitt

Dernier octet envoy (non

Dernier octet qui peut tre envoy avant de recevoir un nouvel acquittement

Pour chaque connexion, le serveur et le client doivent alors grer 3 pointeurs, reprsents par les bulles ci-dessus. Le champ Window contient alors la largeur de la fentre. En plus, un paquet contient encore 6 fanions (flags) : - URG : message urgent ou non, exemple: interruption - ACK : utilis pour laccus de rception - SYN : exprime le dsir dtablir une connexion - PSH : le paquet doit tre dlivr immdiatement et ne pas tre mis dans un buffer - RST : exprime le dsir de rinitialiser la connexion - FIN : termine la connexion Dans le cas normal, lchange de donnes en utilisant le protocole TCP comporte trois phases:

Ltablissement de la connexion, Le transfert de donnes et le contrle de flux, La libration de la connexion.

Page 16 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Ltablissement de la connexion se fait par une procdure trois mains (en anglais Three-Way Handshake ). a) Dabord, le client qui veut tablir une connexion avec le serveur, met un paquet TCP qui contient le flag SYN et le numro de squence x.

b) Si le serveur reoit ce paquet et sil offre le service correspondant, il envoie un paquet SYN-ACK avec le numro de squence y et le numro daccus de rception x + 1. c) Le client qui a reu ce paquet met donc un paquet ACK avec lAcknowledgement Number y + 1.

La connexion est ce moment tablie pour le client et ds que le serveur reoit ce paquet, il sait aussi que la connexion est tablie. partir dici, les deux correspondants nenvoient que des paquets dont le flag ACK est mis et le flag SYN pas. En mots plus clairs : a) Dabord, le client exprime le dsir quil veut se connecter au serveur.

b) Celui-ci rpond quil a bien reu la demande du client et confirme que le client a bien le droit de se connecter au service correspondant. c) Le client confirme quil a reu la rponse du serveur et la connexion est tablie.

flags: SYN n de sq.: x addr. metteur: 193.168.74.227 addr. destinataire:192.88.209.14 flags: SYN, ACK n de sq.: y n daccus: addr. metteur: 192.88.209.14 addr. destinataire:193.168.74.227 flags: ACK n de sq.: x+1 n daccus: addr. metteur: 193.168.74.227 addr. destinataire:192.88.209.14

x+1

Client
IP: 193.168.74.227

Serveur
y+1 IP: 192.88.209.14

La connexion tant tablie, le transfert de donnes peut se faire. Le protocole TCP utilise le mcanisme de la fentre coulissante (sliding window), appliqu sur les octets et non pas sur les paquets pour tre plus efficient (voir plus haut). Les champs Sequence Number et Acknowledgement Number assurent que tous les paquets arrivent destination. Un paquet est retransmis automatiquement si le serveur saperoit que le client met plusieurs fois un paquet qui indique quil attend une suite doctets donne. (Exemple : le serveur reoit 3 fois un paquet dont le n daccus vaut 303 il rmet le paquet qui contient comme premier octet loctet n 303). La libration de la connexion peut se faire de deux faons : la libration normale ou la libration dinterruption (ou libration brutale). La premire situation est celle o un des deux correspondants indique quil ny a plus dinformations transmettre et met un paquet FIN.

Page 17 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

La deuxime est celle o le client met un paquet RST (reset) contenant la primitive ABORT. Toute transmission est interrompue, les rceptions sont ignores et les tampons (buffers) sont vids des deux cts. Le serveur met encore un paquet avec la primitive TERMINATE et un code qui reprsente la raison de la libration brutale.

Runlevel-Manager
Aprs tre dmarr, Linux a dj dmarr un certain nombre de services (dmons) que vous pouvez dfinir manuellement laide du Runlevel-Manager ou en ditant les fichiers de configuration. Un Runlevel dcrit le dmarrage du systme ou son tat pendant son activit. Ils sont numrots de 0 7. 0 : tches excutes avant larrt du systme 1 : tches excutes au passage dans le mode single-user 2 : tat normal, NFS est dsactiv 3 : tat normal 4 : rserv pour la dfinition dun nouveau Runlevel par lutilisateur 5 : tat normal, mais xdm (X Window Display Manager) est actif rend possible le login graphique 6 : tches excutes avant le redmarrage du systme Le Runlevel par dfaut peut tre dfini dans le fichier /etc/inittab. Cest un fichier de configuration ; le pre de tous les processus, init, lit ce fichier chaque fois que lordinateur dmarre. Pour un firewall, le Runlevel 2 est le meilleur choix. Nous pouvons donc diter le fichier /etc/inittab et remplacer la ligne
id:5:initdefault

par la ligne
id:2:initdefault

Ensuite, nous pouvons regarder de plus prs quels services sont dmarrs par le passage dans le Runlevel 2. Pour cela, je prfre utiliser le programme Runlevel-editor de KDE. Il est aussi possible dditer les fichiers de configuration dans le rpertoire /etc/rc.d . Le fichier /etc/rc.d/rc2 est donc le fichier o est dfini quels services sont dmarrs et lesquels sont arrts lors du passage dans ce Runlevel. Un Runlevel-Manager est donc juste une interface graphique qui dite ces fichiers de configuration.

Page 18 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Voici un cran du Runlevel-editor de KDE :

Et le Runlevel-Manager original :

Page 19 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Description des services dmarrs par le Runlevel 2


ipchains programme pour ladministration dun firewall ; nous le verrons les dtails plus loin iptables un autre programme pour ladministration dun firewall plus rcent que ipchains network syslog keytable random apmd soccupe de la connexion de toutes les interfaces SYStem and kernel LOGger ; il permet de lire/effacer les buffers circulaires de messages (log, journal) du noyau ce service charge les diffrents plans de boutons pour le clavier init /dev/random script ; initialise et sauvegarde des informations pour le dmarrage et larrt du systme Advanced Power Management Daemon ; il permet de surveiller tout ce qui est en relation avec lalimentation lectrique du systme. Il peut excuter des commandes quand certains vnements arrivent, par exemple alerter les utilisateurs quand la batterie est faible. Secure SHell Daemon ; cest un dmon qui donne un terminal virtuel distance. Des utilisateurs externes peuvent alors faire un login sur notre machine et ils disposent dun terminal virtuel qui leur permet dexcuter des commandes. Il doit remplacer les dmons moins srs comme telnet, rlogin et rsh qui permettent de faire la mme chose. Line Printer Daemon; il soccupe de la communication avec limprimante ncessaire si vous avez une connexion ISDN Cest un client pour PPPoE (Point-to-Point Protocol over Ethernet). Il fournit une connexion PPP travers Ethernet. Il encapsule des trames PPP de la couche liaison dans des trames Ethernet. Soccupe de la transmission de messages e-mail Cest un utilitaire qui permet de faire le cut and paste (copier et coller) et soccupe de la gestion de la souris dans une console virtuelle

sshd

lpd isdn pppoe

sendmail gpm

crond CRON Daemon ; dmon permettant de lancer des commandes diffres xfs anacron X Font Server; il alimente les serveurs daffichage X Window System avec des polices de caractre dmon qui excute des commandes priodiquement. Contrairement crond, il ne suppose pas que la machine soit allume tout le temps et est il est plutt utilis pour excuter des tches chaque jour, semaine ou mois, alors que les tches de cron sexcutent normalement plus souvent. appelle le script rc.local. Il est excut chaque fois que lordinateur dmarre. Cest souvent ici quon fait le setup du firewall.

local

Page 20 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

xinetd
Pour expliquer xinetd (eXtended InterNET services Daemon), je vais dabord prsenter son prdcesseur : inetd

inetd classique
inetd nest pas seulement utilis pour dmarrer des services (comme FTP, par exemple), il contrle en plus les connexions. Ensemble avec le programme tcpd, il vrifie sur base de ladresse IP du client et des rgles contenues dans les fichiers hosts.allow et hosts.deny si la connexion peut tre tablie. Ce mcanisme est aussi communment appel tcp_wrapper.

xinetd
xinetd donne les mmes possibilits quinetd, mais il y a encore quelques fonctionnalits qui ont t ajouts. Il permet, par exemple, de limiter le nombre de connexions un service et le nombre de connexions en parallle venant dun seul client. Un systme de logging plus complet et la possibilit dattacher un service une (plusieurs) interface(s) externe(s) et non pas une autre rendent xinetd plus sr. Cette dernire possibilit a pour avantage quon peut offrir certains services aux machines du rseau interne, mais pas lextrieur sans modifier les rgles du firewall.

DNS
Le Domain Name Service est une base de donnes distribue, structure sous la forme dun arbre, utilise surtout pour la conversion dun nom symbolique en une adresse IP.

Structure des noms symboliques sous forme darbre


Chaque nud de cet arbre porte un label qui lidentifie par rapport son parent . Le parcours de la racine vers un nud est appel le nom de domaine de ce nud. Dans lexemple ci-dessous, jobs.luxpoint.com est un nom de domaine, ainsi que fr ou lu. Un domaine est la partie de larbre prsente sou un nom donn. Le domaine com regroupe ainsi les noms de domaine com, luxpoint.com, finances.luxpoint.com, jobs.luxpoint.com et hotmail.com. Les adresses luxembourgeoises, donc celles qui se terminent par .lu, sont distribues par Restena . Lorganisation ICANN (Internet Corporation for Assigned Names and Numbers) soccupe de la gestion des adresses internationales, comme .com, .org, etc. En plus de ladresse IP et le nom symbolique, chaque nud peut contenir dautres informations, comme le type de machine, le nom de la machine en charge du courrier de ce domaine, la dure de validit de cette information, etc.

lu

edu

com

fr

luxpoint zone gre par luxpoint.com finances jobs

hotmail

nom de domaine hotmail.com domaine com

Page 21 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Lutilit de cette structure hirarchise des noms dhtes est la possibilit de rpartir les responsabilits entre les serveurs DNS : chaque serveur est responsable dun certain domaine : il peut rsoudre les noms symboliques de ses fils et connat les responsables des nuds infrieurs. Une zone est la partie de larbre gre par le mme serveur, cest--dire lensemble des noms symboliques quun serveur peut rsoudre sans faire de requtes auprs dautres serveurs DNS. Pour des raisons de performance, chaque requte et sa rponse sont stockes dans le cache du serveur DNS jusqu ce que la dure de validit soit coule. Les donnes de chaque zone sont aussi dupliques sur plusieurs serveurs. Ainsi, il existe un serveur primaire pour chaque zone qui est responsable de ldition dun fichier de configuration de cette zone. Les serveurs secondaires sont des miroirs de ce serveur et contactent le serveur primaire rgulirement pour voir, partir dun numro de srie, si leurs informations sont encore jour. Si ce nest pas le cas, ils doivent tlcharger la base de donnes du serveur primaire.

Traitement dune requte dun client


Il y deux modes possibles pour rsoudre un nom symbolique : le mode itratif et le mode rcursif.
Mode itratif

En mode itratif, le client doit sadresser plusieurs serveurs DNS pour rsoudre un nom symbolique en une adresse IP. chaque demande auprs dun serveur, celui-ci prcise sil connat ladresse IP en question (il regarde dabord dans son cache, ensuite dans sa base de donnes). Si oui, il la fournit, sinon, il retourne cependant une liste denregistrement dNS (Name Server) plus proches du nom de domaine demand. Le client doit alors choisir quel serveur il va sadresser ensuite. Ce mcanisme est rpt jusqu ce que le nom symbolique soit transform en une adresse IP ou lorsque le client doit constater que ce nom symbolique ne correspond aucune adresse IP.

Client DNS
jobs.luxpoint.com?

NS 1
com -> NS2 jobs.luxpoint.com? luxpoint.com -> NS3 jobs.luxpoint.com? jobs.luxpoint.com: 213.181.155.145

NS 2

com

NS 3

luxpoint.com

Page 22 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Mode rcursif

En mode rcursif, le client fait la demande seulement une fois. Si le serveur ne sait pas rpondre directement, il adresse la requte vers un autre serveur quil suppose plus renseign que lui-mme, attend la rponse et la transmet au client. Le mode rcursif est le mode prfr. Le mode itratif est utilis soit lorsque le client demande ce mode explicitement, soit quand le serveur de noms ne supporte pas le mode rcursif.

Client DNS
jobs.luxpoint.com? jobs.luxpoint.com: 213.181.155.145

NS 1

NS 2

com

NS 3

luxpoint.com

Page 23 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

5. Le filtrage de paquets
Le principe du filtrage de paquets est simple : le kernel analyse len-tte de chaque paquet qui traverse linterface externe (modem, carte ethernet, ) au niveau de la couche Transport et de la couche Rseau et dcide du sort de ces paquets. Les sorts les plus usuels des paquets sont : ACCEPT DENY REJECT consiste accepter le paquet, il passe donc le firewall refuser le paquet et faire comme si le paquet navait pas t reu. Un paquet refus nengendre donc pas de message derreur du type ICMP rejeter le paquet. Le rejet est identique au refus, mais un message derreur du type ICMP destination-unreachable est transmis lmetteur du paquet

Cette analyse est statique, cest--dire que les paquets antrieurs ne sont pas pris en considration. Le kernel (ou noyau) ne sait donc pas si une connexion a t tablie ou pas. Pour dcider sil va laisser passer le paquet et sil doit envoyer un message derreur la source de ce paquet, le noyau se base sur une liste de rgles. Les donnes sur lesquels sont bases ces rgles sont linterface rseau par laquelle le paquet est arriv ou sera transmis, les adresses mettrice et destinataire, le protocole utilis, les ports en question, la direction dans laquelle le paquet est transmis (sil arrive ou sil va tre mis), quelques flags du protocole TCP et les types des paquets ICMP. Les paquets sont compars successivement aux rgles de la chane correspondante jusqu ce quune rgle soit trouve laquelle le paquet correspond ou jusqu ce que la fin de la liste soit atteinte. Dans ce cas, la police est consulte pour dcider du sort du paquet. La police (policy) est dfinie pour chaque chane et elle dit ce que le noyau doit faire du paquet (accepter, rejeter ou refuser) si aucune rgle de la chane nest applique. Dans un systme scuris, la police dit normalement de rejeter tous ces paquets. Dans les chanes figurent alors surtout les rgles pour les paquets qui doivent tre accepts. Il est aussi possible daccepter tous les paquets par dfaut et filtrer ceux qui sont dangereux. Mais vu quil nest pas vident de trouver toutes les rgles qui filtrent les paquets non souhaits, de ne pas oublier une et de toujours reconfigurer le firewall quand les hackers ont trouv une nouvelle mthode dintrusion, la police DENY est le seul choix acceptable pour un utilisateur final. Notre firewall va donc refuser tous les paquets par dfaut. Les services que nous avons lintention dutiliser vont figurer comme des exceptions dans les chanes de protection. Par dfaut, il y a trois listes de rgles dans le noyau, ce sont les chanes de protection ou simplement chanes. Le noyau se base sur les rgles dfinies dans ces chanes pour dcider du sort du paquet. La premire chane est appele input (entre). Ce sont les rgles qui seront appliques aux paquets arrivants. La deuxime est appele output (sortie). Elle contient les rgles qui seront appliques aux paquets sortants. Enfin, la troisime chane est appele forward (transmission). Les rgles de cette chane sont appliques aux paquets entrant sur notre machine, mais qui doivent tre rediriges vers une autre machine, comme cest le cas pour les routeurs, par exemple.

Page 24 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Dautres chanes que les trois qui sont prdfinies peuvent tre dfinies par lutilisateur. Elles peuvent tre appeles comme les sous-programmes dun programme appelant quand une rgle dit que si elle-mme est confirme, alors le kernel doit traverser une chane donne. Les chanes dfinies par lutilisateur nont pas de policy ; si la fin dune telle chane est atteinte, le noyau poursuit la comparaison du paquet aux rgles suivant immdiatement la rgle qui a appele cette sous-chane. On peut alors dire au noyau de parcourir telle ou telle chane si le paquet est du type ICMP, une autre pour le protocole TCP et ainsi de suite. Pour cela, il faut y avoir une rgle dans la chane input, output ou forward qui dit que si une rgle donne (p.ex. le paquet est du type TCP) est confirme, alors la chane prdfinie xy doit tre excute. Le nom de la chane qui doit tre excute remplace ainsi ACCEPT, DENY ou REJECT dans la rgle appelant la chane non-prdfinie. Lordre des rgles est important. La premire rgle qui est vrifie par le paquet est applique, Paquet IP ACCEPT: Le paquet peut passer

Chane de protection prdfinie

Rgle 1 confirme?

oui Chane non-prdfinie

non Rgle 2.1? Rgle 2 confirme? non oui non Rgle 2.2? non oui oui ACCEPT oui ACCEPT

Rgle 3 confirme?

oui non

Rgle 2.3?

ACCEPT

non Police DENY: refuser le paquet

ACCEPT: Le paquet peut passer

les rgles restantes ne sont pas prises en considration. Si on veut refuser tous les paquets ICMP, sauf le ICMP echo-request et le ICMP echo-reply (qui sont utiliss pour le

Page 25 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ping), on ne doit pas placer la rgle que tous les messages ICMP sont refuss avant les deux autres, sinon les deux autres ne seront jamais appliques. Si un paquet est rejet (REJECT), le kernel efface le paquet et envoie un message derreur du type ICMP destination unreachable (code 11 : Communication interdite filtrage) lmetteur du paquet. Un paquet refus (DENY) nengendre pas de message derreur.

La premire raison pour laquelle le refus est dans la plupart des cas mieux que le rejet est quun message derreur augmente le trafic sur le rseau. La plupart des paquets qui ne doivent pas tre accepts sont malfaisants et non issus dun innocent qui veut se connecter un service que vous noffrez pas, il est donc justifi que nous ne voulons pas mettre un message ICMP lmetteur du paquet non accept. La deuxime raison est que les rponses ces paquets peuvent faire partie dune attaque de dni de service (voir plus loin). Enfin, chaque rponse, mme un message derreur peut donner des informations utiles, comme le type de systme dexploitation, une personne malintentionne.

Masquage dIP
Le masquage dIP (IP Masquerading) est typiquement utilis dans un rseau local (LAN = Local Area Network) avec un serveur qui forme le firewall. Tous les paquets que les machines individuelles veulent transmettre une machine extrieure au LAN passent par le serveur. Celui-ci reoit les paquets et les retransmet vers la destination en remplaant ladresse IP de lmetteur par sa propre adresse IP et le port utilis par un port de son choix. Les paquets entrants de la machine extrieure au LAN sont redirigs vers la machine individuelle du LAN. Le serveur mmorise les en-ttes des paquets sortants, en particulier ladresse IP et le numro de port de lmetteur original ainsi que le port qui remplace le port original, afin de pouvoir rcrire les en-ttes des paquets entrants qui en sont la rponse. Quand une machine du rseau local se connecte un serveur sur Internet, ce dernier a limpression que cest en fait le firewall qui sest connect, tandis que du point de vue de la machine individuelle de notre rseau, la connexion est tablie entre elle et le serveur extrieur. Pour implmenter le camouflage (= masquage) dIP, les adresses IP du rseau priv doivent tre attribues aux machines du LAN en utilisant les adresses prives rserves par la RFC1 1597, ce sont les adresses 10.*.*.*, 172.16.*.* ou 192.168.*.*. Les machines qui nont pas dadresse IP officielle dfinissent le firewall comme passerelle. Une faon trs simple pour savoir si le camouflage est utilis dans un rseau donn est de comparer les adresses IP des machines aux adresses prives rserves par la RFC 1597. Une adresse IP qui correspond une des adresses plus haut (exemple : 172.16.24.227) est camoufle. Les adresses qui ne correspondent pas ces adresses rserves ne sont pas masques. Toutes les machines du rseau des salles informatiques du Centre Universitaire ont des adresses IP officielles, ils nutilisent donc pas le masquage dIP. Ainsi, lordinateur dont je dispose dans notre salle de classe a ladresse IP 193.168.74.227, mon adresse IP nest donc pas masque par un firewall.

RFC signifie Request for Comments et forme une base de donnes de documents qui dcrivent, spcifient, aident l'implmentation, standardisent et dbattent de la majorit des normes, standards, technologies et protocoles lis Internet et aux rseaux en gnral.

Page 26 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Lavantage du camouflage dIP est que la connexion Internet tout le rseau ne ncessite quune seule adresse IP officielle : celle du firewall. Le dsavantage est que seuls les machines du LAN peuvent ouvrir des connexions. Cela implique que ces machines ne peuvent pas offrir des services et ne peuvent pas profiter de tous les services qui leur sont offerts dans Internet. Un exemple en est FTP (File Transfer Protocol). Ce protocole est utilis pour tlcharger des fichiers et dans le temps, ctait toujours le serveur qui initialisait la connexion (mode actif). Maintenant, la plupart des serveurs FTP acceptent aussi que le client initialise la connexion (mode passif). Pour plus de dtails sur FTP, veuillez-vous rfrer la section FTP du chapitre Attaques frquentes et solutions possibles (page 49).

Page 27 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

6. ipchains
Ipchains est un programme qui sert administrer le filtrage de paquets dans les noyaux de Linux partir de la version 2.1.102. Cest un programme, crit en C, qui doit tre appel chaque fois quon veut ajouter une rgle une chane de protection. Les paramtres que nous donnons ce programme dfinissent la rgle et laction entreprendre si cette rgle est vrifie pour un paquet donn. Le kernel ne sauvegarde pas ces rgles, elles doivent donc tre entres chaque redmarrage du systme dexploitation. Le plus pratique est donc dcrire les rgles dans un script qui sera excut automatiquement soit au dmarrage du systme, soit lors dune connexion Internet.

Un script qui est excut au dmarrage du systme est applicable si la machine sur laquelle le firewall est install possde une adresse IP fixe, comme cest souvent le cas avec des connexions plus rapides.

Si lIP est par contre affecte dynamiquement, le deuxime choix (linitialisation du firewall est effectue lors de la connexion Internet) est le seul applicable, car le script a, si cest un bon script, besoin de connatre ladresse IP de linterface externe. Cest par exemple le cas pour les utilisateurs qui se connectent via modem Internet. Lordinateur sur lequel le script va tre install a une adresse IP statique. Le coupe-feu sera alors initialis lors du dmarrage du systme. Les dtails sur lappel du script sont dcrits plus loin.

Les options dIpchains -F [<chane>]


Cette option vide la chane <chane>. Si aucune chane nest spcifie, toutes les chanes sont vides. Typiquement, au dbut dun script qui initialise un coupe-feu, il y aura la ligne : ipchains F

-P <chane>
Cette option permet de dfinir la policy dune chane. Comme il est prfrable dinterdire tout trafic par dfaut et de dfinir les exceptions comme des rgles dans les chanes, la policy va tre soit DENY ou REJECT. ipchains P input DENY ipchains P output REJECT ipchains P forward REJECT Ainsi, nous interdisons tout trafic avec lextrieur. Les autres machines nauront pas de messages derreur lorsquils nous envoient des paquets, mais nous aurons des messages derreurs quand nous essayons denvoyer un paquet qui ne correspond aucune rgle de la chane output. La chane forward nest pas utilise dans mon firewall, car ma machine nest pas responsable de la redirection de paquets dautres machines.

-A [<chane>]
Cette option ajoute une rgle la fin de la chane <chane>. Si aucune chane nest spcifie, la rgle est ajoute la fin de toutes les chanes. <chane> peut tre une chane de protection prdfinie - input, output ou forward - , mais aussi une chane dfinie par lutilisateur.

Page 28 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

-I [<chane>]
Cette option ajoute une rgle au dbut de la chane <chane>. Si aucune chane nest spcifie, la rgle est ajoute au dbut de toutes les chanes.

-i <interface>
Cette option spcifie linterface pour laquelle la rgle compte. Si aucune interface nest spcifie, la rgle compte pour toutes les interfaces. Dans notre exemple, linterface est presque toujours eth0 ; elle spcifie donc la premire (et la seule) carte ethernet connecte lordinateur. Dautres noms peuvent tre eth1 (2e carte ethernet), ppp0 (premier modem) ou lo. lo dsigne localhost : cest une interface virtuelle travers laquelle on peut se connecter sur son propre ordinateur, mme si aucun priphrique nest install qui permet la connexion un autre ordinateur. Elle permet essentiellement tester des applications distribues et est aussi utilise par X-Window, linterface graphique de Linux. Des informations sur les interfaces actives peuvent tre affiches par la commande ifconfig (c.f. page 58)

-p <protocole>
Cette option spcifie le protocole IP pour lequel la rgle compte. Si cette option est omise, la rgle compte pour tous les protocoles. <protocole> peut tre tcp, udp, icmp, all et tous les noms et numros de protocole dfinis dans le fichier /etc/protocols. Si on veut que tous les paquets UDP qui entrent travers linterface eth0 soient bloqus, on ajoute la rgle suivante : Ipchains A input i eth0 p udp j DENY

-j <policy>
Cette option dcrit laction entreprendre par le noyau pour cette rgle, cest donc la police de cette rgle. Des polices possibles sont ACCEPT, REJECT, et DENY. Pour la chane forward, la police MASQ (Masquerading) est aussi accepte.

-s <adresse> [<port>]
Avec loption s, on peut spcifier ladresse IP de lmetteur. Si cette option est omise, toutes les adresses IP possibles sont concernes par cette rgle. Si un (des) port(s) est (sont) spcifi(s), la rgle ne compte que pour ce(s) port(s). Un port ne peut pas tre spcifi sans adresse ; si on veut dsigner un port pour toutes les adresses IP possibles, on utilisera comme adresse any/0, suivi du port en question. Un port est spcifi en donnant son numro ou son nom symbolique et un groupe de ports peut tre spcifi en donnant comme argument le port le plus bas et le port le plus haut spars par deux points (:). Une plage dadresses IP peut tre spcifie en donnant un masque une adresse IP. Ce masque est un nombre entre 0 et 32 et donne le nombre de bits qui doivent tre masqus. Ainsi, si on veut spcifier toutes les adresses possibles du rseau 193.168.74.*, on crira 193.168.74.0/24. La plage dadresses 192.168.24.0/22 dsigne toutes les adresses IP entre 192.168.24.0 et 193.168.27.255 192.168.24.0 192.168.27.255 Bit 1 11000000.10101000.00011000.00000000 11000000.10101000.00011011.11111111 Bit 22

La plage dadresses 193.168.74.227/32 correspond donc ladresse IP 193.168.74.227 et la plage dadresses 0.0.0.0/0, quon peut encore crire any/0 dsigne toutes les adresses IP.

Page 29 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Les adresses IP peuvent aussi tre dsignes par leur nom symbolique (Hostname) qui sera rsolu par le service DNS. Les adresses symboliques peuvent seulement tre utilises pour les rgles de la chane qui suivent les rgles acceptants des transferts de paquets avec le serveur DNS. Dans mon script, je nutiliserai pas les noms symboliques pour viter ce problme. Si nous voulons refuser tous les paquets tcp qui entrent par notre interface externe et dont ladresse mettrice est 193.168.74.* et le port est le port n 80, nous crirons : ipchains A input i eth0 p tcp s 193.168.74.0/24 80 j DENY

-d <adresse> [<port>]
Avec cette option, on peut spcifier ladresse et le port du destinataire. Avec la rgle suivante, on refuse tous les paquets qui seront envoys vers ladresse IP 208.255.131.193 , en plus, ces essais denvoi de paquets sont enregistrs dans un fichier log du kernel (option -l): ipchains A output i eth0 d 208.255.131.193 j DENY l

-l
Cette option spcifie que chaque fois que cette rgle correspond un paquet, un message du type kern (pour Kernel) et de la priorit info (message informatif qui ne renvoie pas un problme) est crit dans le fichier /var/log/messages.

-y
Cette option peut seulement tre utilise pour les paquets TCP. Le bit SYN du paquet doit tre mis, le bit ACK ne doit pas tre mis pour que la rgle puisse correspondre au paquet. Le paquet doit donc tre le premier dune connexion par le Three-Way Handshake. Si nous voulons accepter linitialisation de connexions TCP par notre machine avec des serveurs www (port 80), nous crirons la rgle :
ipchains -A output -i eth0 -p tcp -s 193.168.74.227 1024:65535 d any/0 80 -j ACCEPT

! y
Le bit ACK dans le paquet TCP doit tre mis, le bit SYN nimporte pas. Le paquet est donc soit une rponse dans ltablissement de la connexion par la procdure trois mains, soit un paquet qui est transmis dans une connexion tablie.

Page 30 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

7. Exemples tirs du script


Aprs avoir prsent ipchains et ses options, passons maintenant la pratique du filtrage de paquets. Dans ce chapitre, je vais prsenter et commenter quelques rgles de filtrage du script.

Rgles gnrales
Les premires lignes du script sont des dfinitions de variables et leur initialisation. En fait, ce sont pour nous des constantes, comme par exemple :
IPADDR="193.168.74.227" # mon adresse IP # classe A: rseaux prives

ou
CLASS_A="10.0.0.0/8"

Vu que le script est arrt ds la premire erreur de syntaxe, les rgles les plus importantes, comme la dfinition de la policy, doivent se trouver en dbut du script. Aussi, je vais imprimer un message au dbut du script et un la fin du script pour massurer que le script a effectivement t appel et que tout le script a t parcouru. Les premires rgles de protection doivent vider toutes les chanes de protection et dfinir la policy pour chaque chane :
# effacer les anciennes rgles ipchains -F # policies par defaut ipchains -P input DENY ipchains -P output REJECT ipchains -P forward REJECT

Mon ordinateur a deux interfaces : les interfaces eth0 et lo (voir ifconfig, page 58).

eth0 reprsente linterface externe : la carte Ethernet qui est connect Internet

lo reprsente linterface loopback : une interface virtuelle qui permet de se connecter sa propre machine, mme sans avoir dinterface externe. Les paquets qui sont adresss ladresse 127.0.0.1 (adresse loopback) ne passent donc jamais par linterface externe. Les paquets qui passent par linterface virtuelle lo seront tous accepts :
# pas de restrictions pour loopback ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT

Options du kernel
Ensuite, nous activons quelques options du kernel de Linux, par exemple refuser les paquets de redirection ICMP (ICMP-redirects). Un routeur qui constate quil y a un chemin plus court pour acheminer un paquet peut indiquer au routeur source du paquet que le chemin choisi nest pas optimal. Il envoie un paquet ICMP-redirect ce routeur et lui indique un nouveau routeur. Si un attaquant peut modifier la table de routage dun routeur, alors il peut indiquer au routeur de rediriger les paquets vers une machine qui va tre dconnecte, ainsi ils narriveront jamais leur destination. De nos jours, les ICMP-redirects ne sont pratiquement plus utiliss et nous les refusons dans notre script par les lignes suivantes :

Page 31 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

# refuser les ICMP-Redirects for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f done

Le routage des paquets par lexpditeur tait utilis dans le temps pour donner un paquet une liste dadresses IP par lesquelles il devait passer. Cette option est rarement utilise aujourdhui et seul les routeurs dcident du trajet quun paquet doit prendre. Son utilisation majeure sert de nos jours aux hackers de faire croire un Firewall que le paquet vient dune autre machine, par exemple dune machine du rseau interne ou dune autre machine laquelle notre Firewall fait confiance, par exemple de notre ISP (Internet Service Provider). Le routage des paquets par lexpditeur est interdit par notre Firewall par une option du kernel que nous activons par les lignes suivantes :
# refuser les paquets routes par l'expditeur for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $f done

Fausses adresses
Ensuite, il faut savoir que tous les paquets qui arrivent sur notre interface externe ne doivent pas venir (ou prtendre venir) de certaines adresses IP, dont :

notre propre adresse IP : en fait, tous les paquets que nous envoyons notre propre machine vont passer par linterface virtuelle loopback et non pas par une interface externe. Cest aussi de cette faon que X-Windows (interface graphique de Linux) fonctionne. une suite dadresses dans chaque classe de rseaux (classes A, B et C) qui sont rserves exclusivement des rseaux locaux : ce sont les adresses allant de 10.0.0.0 10.255.255.255, de 172.16.0.0.0 de 192.168.0.0 172.31.255.255 192.168.255.255 et

les adresses loopback qui ne doivent jamais traverser un rseau, mais qui sont destines exclusivement lutilisation pour une machine de communiquer avec elle-mme. Ce sont les adresses de 127.0.0.0 127.255.255.255. Ladresse 127.0.0.1 est mieux connue sous son nom symbolique : localhost qui utilise linterface loopback : lo. les adresses rserves par lIANA (Internet Assigned Numbers Authority). Ce sont des blocs dadresses rserves par cette organisation. La liste complte de ces adresses peut tre obtenue au site http://www.isi.edu/innotes/iana/assignments/ipv4-address-space. ladresse 0.0.0.0 : elle est utilise si une machine ne peut pas savoir son adresse IP, comme les clients DHCP qui requirent une adresse assigne dynamiquement auprs du serveur DHCP. Elle envoie alors un paquet sur le rseau dont ladresse source est 0.0.0.0 est ladresse destinataire 255.255.255.255. Ce paquet va alors arriver toutes les interfaces du rseau et seul le serveur va communiquer ladresse IP dynamique au client DHCP. Si un tel paquet est envoy travers Internet, alors lobjectif de lmetteur est clair : il veut dterminer si la machine cible est une machine Unix utilisant le code relatif au net de BSD (sockets, ).

Page 32 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ladresse 255.255.255.255 : elle peut seulement figurer dans un paquet comme adresse destinataire et dsigne toutes les interfaces du mme rseau. les adresses multicast (classe D) : ces adresses peuvent galement seulement figurer dans un paquet comme adresse destinataire. Elles sont utilises pour des confrences et des transmissions audio/vido et ce sont les adresses de 224.0.0.0 239.255.255.255 (224.0.0.0/4).

Les adresses rserves de la classe E : les adresses de 240.0.0.0 247.255.255.255 sont rserves pour des applications futures et exprimentales. Elles sont surtout utilises par le militaire et le service secret amricains. Notre firewall va donc accepter divers types de paquets que nous dfinirons plus loin. Mais, en tout cas, ces paquets ne devront pas avoir comme adresse source une de celles mentionnes ci-dessus. Pour refuser les paquets venant de notre propre adresse IP, nous crirons :
ipchains -A input -i $EXTERNAL_INTERFACE -s $IPADDR -j DENY -l

o la variable EXTERNAL_INTERFACE contient le nom de linterface externe - dans notre cas eth0 et la variable IPADDR notre adresse IP. Nous refusons aussi les paquets dont une adresse est, par exemple, une adresse rserve de la classe A. Pour cela, nous devons dfinir 4 rgles :
ipchains ipchains ipchains ipchains -A -A -A -A input input output output -i -i -i -i $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE -s -d -s -d $CLASS_A $CLASS_A $CLASS_A $CLASS_A -j -j -j -j DENY DENY DENY -l DENY -l

Ici, nous demandons aussi au kernel dcrire un message dans le fichier log si nous utilisons une de ces adresses, soit comme adresse source, soit comme adresse de destination.

Messages ICMP
Les paquets ICMP sont souvent des messages derreur. Bon nombre dentre eux ne doivent donc pas simplement tre refuss par notre firewall. Les types de paquets ICMP suivants doivent tre admis ; certains dentre eux seulement dans certains cas. Type 0 3 4 8 11 12 Nom echo-reply destination-unreachable source-quench echo-request time-exceeded parameter-problem Description rponse un ping le routeur ne peut pas transmettre le paquet demander de transmettre les paquets plus lentement la machine qui nous envoie des paquets ping sortant la TTL (Time-To-Live) a t dpasse donnes non valables dans len-tte dun paquet

Exemple : accepter la rception et lmission de messages ICMP du type source-quench :


ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 4 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 4 -d any/0 -j ACCEPT

Page 33 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Pour le type 3 (destination-unreachable), les rgles sont un peu plus compliques. En effet, ce type de paquets est retourn si quelquun veut se connecter un service sur notre machine qui nexiste pas. Vu que les scanneurs de ports (exemple nmap, voir page 63) testent un grand nombre de ports sils sont ouverts ou non, ce type de paquets est renvoy souvent si un hacker essaie de dterminer les vulnrabilits de notre machine. Pour lui rendre la vie moins facile et pour ne pas gnrer du trafic non ncessaire sur notre rseau, nous voudrions simplement bloquer tous les paquets ICMP du type 3. Malheureusement, le sous-type fragmentation-needed du type destinationunreachable est parfois ncessaire pour dterminer la taille idale des fragments de paquets. La performance de notre systme pourrait se dtriorer gravement si nous refusons ces paquets. Lmission de ce type de paquets doit donc tre accepte. Si nous voulons accepter traceroute (page 58) venant dautres systmes, nous devons aussi accepter lmission du sous-type port-unreachable, ce que nous ne faisons dailleurs pas dans notre firewall. Finalement, nous allons accepter tous les paquets ICMP du type 3 arrivants, tous ceux qui sont destins notre ISP et tous ceux du sous-type fragmentation-needed. Les autres, donc les paquets ICMP destination-unreachable sortants qui ne sont pas destins notre ISP et qui ne sont pas du sous-type fragmentation-needed sont rejets par la policy.
ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR $MY_ISP -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR fragmentation-needed -d $ANYWHERE -j ACCEPT 3 -d 3 -d

Les paquets ICMP du type 0 et 8 sont utiliss lors du ping (description de ping page 57). Lmission dun paquet ping (type 8) engendre normalement lmission dun paquet pong (type 0) chez le destinataire. Vu que ces paquets peuvent tre utiliss pour lancer des attaques de dni de service (c.f. ping de la mort, page 45), nous acceptons seulement que notre ISP peut nous pinger, mais nous pouvons pinger tout le monde. Les rgles relatifs aux paquets ICMP du type 0 et 8 scrivent donc :
# nous pouvons pinger ipchains -A output -i $ANYWHERE -j ACCEPT ipchains -A input -i $IPADDR -j ACCEPT # seul notre ISP peut ipchains -A input -i $IPADDR -j ACCEPT ipchains -A output -i $MY_ISP -j ACCEPT tout le monde $EXTERNAL_INTERFACE -p icmp -s $IPADDR $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE nous pinger $EXTERNAL_INTERFACE -p icmp -s $MY_ISP $EXTERNAL_INTERFACE -p icmp -s $IPADDR 8 -d 0 -d 8 -d 0 -d

Protection des services utilisant des ports non privilgis


part les services utilisant des ports privilgis, il en existe dautres qui utilisent des ports fixes non privilgis. Ce sont surtout des services qui sont destins au rseau local et ne devraient pas tre accessibles de lextrieur. Nous rejetons des connexions Open-Windows (port 2000) allant de notre machine vers lextrieur. cause de loption y, cette rgle compte seulement pour ltablissement dune connexion ; des connexions existantes vers un client externe utilisant par hasard le port 2000

Page 34 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ne sont pas affectes. Les connexions notre port 2000 nont pas besoin dtre rejets, car un Open-Windows-Display-Manager ne fait pas partie de Linux.
ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -s $IPADDR -d $ANYWHERE $OPENWINDOWS_PORT -j REJECT

De la mme faon, nous rejetons nos connexions Open-Windows (ports 6000 6063). En plus, nous devons rejeter toutes les connexions notre serveur X-Windows. Toutefois, nous pouvons continuer lutiliser localement sur notre machine, car linterface loopback est alors utilise.
# refuser la connexion a un x-serveur ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -s $IPADDR -d $ANYWHERE $XWINDOW_PORTS -j REJECT # rejeter la connexion d'autrui a notre serveur ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y -d $IPADDR $XWINDOW_PORTS -j DENY -l

NFS (Network File System, port UDP 2049) est utilis sur un rseau local pour partager des rpertoires. Vu que le protocole UDP ne connat pas le principe de connexion, nous devons rejeter tous les paquets UDP destins notre port 2049.
ipchains -A input -i $EXTERNAL_INTERFACE -p udp -d $IPADDR $NFS_PORT -j DENY -l

Services necessaries
Les services qui sont absolument ncessaires sont le service DNS (page 21) et le service ident ou auth qui est souvent utilis pour lauthentification dun utilisateur.

DNS
Ce service utilise par dfaut le protocole UDP. Il y a cependant des cas rares ou linformation que le serveur DNS met est trop grande pour un seul paquet UDP. Dans ce cas, la demande est refaite par une connexion TCP. Lacceptation de requtes DNS comme client est faite par les rgles suivantes :
# DNS par UDP ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $NAMESERVER 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT # cas o une connexion TCP est ncessaire ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $NAMESERVER 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT

Services TCP frquents


Maintenant, il est temps dadmettre les services TCP que nous dsirons utiliser, comme HTTP et SSH, par exemple.

HTTP (www)
Pour que nous puissions naviguer sur le World Wide Web, nous devons admettre les paquets sortants (connexion et autres paquets) vers des serveurs web et nous devons aussi accepter les

Page 35 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

rponses que ces serveurs nous envoient. Lenvoi de paquets au port 80 des serveurs web est admis par la premire rgle ci-dessous. La deuxime accepte les paquets venant du port 80 du serveur et dont le bit ACK est mis. Le serveur ne peut donc pas demander ltablissement dune connexion. Dans le protocole http et dans la majorit des autres protocoles, cest toujours le client qui demande la connexion.
# acces a des sites web comme client ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 80 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 80 -d $IPADDR $UNPRIVPORTS -j ACCEPT

SSL (Secure Socket Layer) est un protocole qui sert crypter les messages transmis travers Internet. Ce mcanisme est souvent utilis par des sites web commerciaux, des sites de Online-Banking , etc. Pour admettre des connexions vers des serveurs https qui implmentent le protocole SSL, les rgles sont quasi les mmes, sauf que le numro de port vaut 443 :
# https (ssl = Secure Socket Layer) ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 443 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 443 -d $IPADDR $UNPRIVPORTS -j ACCEPT

SSH
Secure SHell est un service qui donne un terminal virtuel distance. Pour des raisons de scurit, il doit remplacer les services moins srs comme telnet, rlogin et rsh qui permettent de faire la mme chose. Lors de la connexion dun client, celui-ci demande ltablissement dune connexion entre le port 22 du serveur et un port non privilgi du client. Une fois la connexion tablie, elle est transmise du ct du client vers un port entre 1023 et 513 le port le plus grand qui est encore libre (entre 1023 et 513) est utilis. Ce changement de port rend possible une deuxime authentification : lauthentification base sur ladresse IP ; la premire authentification tant celle base sur le nom dutilisateur et le mot de passe. Le nombre de rgles se multiplie donc par deux, vu que nous devons accepter les connexions partantes des ports non privilgis et des ports disons de 1020 1023. Ainsi, nous acceptons seulement 4 connexions SSH en parallle.
# acces a des sites externes par ssh ipchains -A output -i $EXTERNAL_INTERFACE -p tcp $UNPRIVPORTS -d $ANYWHERE 22 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y 22 -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp $SSH_PORTS -d $ANYWHERE 22 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y 22 -d $IPADDR $SSH_PORTS -j ACCEPT -s $IPADDR -s $ANYWHERE -s $IPADDR -s $ANYWHERE

Pour admettre des connexions extrieures notre serveur ssh, il suffit dinverser les rgles. Nous acceptons ainsi au plus 4 connexions en parallle dun seul client.
# acces a ce serveur par des clients externes ipchains -A input -i $EXTERNAL_INTERFACE -p tcp $UNPRIVPORTS -d $IPADDR 22 -j ACCEPT -s $ANYWHERE

Page 36 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR 22 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $SSH_PORTS -d $IPADDR 22 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR 22 -d $ANYWHERE $SSH_PORTS -j ACCEPT

Services UDP frquents Traceroute


Cest un service UDP qui produit volontairement des messages derreur ICMP. Le destinataire met un paquet ICMP du type destination-unreachable (sous-type : port-unreachable) et les systmes intermdiaires mettent des paquets ICMP du type time-exceeded. partir de ces messages, traceroute est capable de dterminer le chemin quun paquet traverse dune machine mettrice vers une autre machine. Les ports utiliss normalement sont dfinis par ces deux constantes :
TRACEROUTE_SRC_PORTS="32769:65535" TRACEROUTE_DEST_PORTS="33434:33523" # Traceroute: ports d'expedition # Traceroute: ports de destination

Pour que nous puissions effectuer des traceroute, nous devons accepter les paquets ICMP destination-unreachable et time-exceeded de nimporte quelle adresse, ce qui a en fait t fait. En plus, nous devons ajouter la rgle suivante pour pouvoir mettre les paquets traceroute :
# envoi traceroute ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $TRACEROUTE_SRC_PORTS -d $ANYWHERE $TRACEROUTE_DEST_PORTS -j ACCEPT

traceroute est un service peu sr et peut tre utilis pour attaquer dautres services UDP. Pour cette raison, nous acceptons seulement les traceroute arrivants dont ladresse source est celle de notre ISP :
# traceroute arrivant de mon ISP ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $MY_ISP $TRACEROUTE_SRC_PORTS -d $IPADDR $TRACEROUTE_DEST_PORTS -j ACCEPT

Installation du firewall
Le propritaire du script doit tre le superviseur. Idalement, les autres ne peuvent mme pas lire le script.
chown root.root /etc/rc.d/rc.firewall chmod u=rwx,go-rwx /etc/rc.d/rc.firewall

Pour initialiser le firewall manuellement, il suffit de lancer le script qui sappelle dans notre cas /etc/rc.d/rc.firewall sur la ligne de commande. Pour linitialiser automatiquement, je vais prsenter 2 mthodes :

1. Adresse IP statique
Si vous possdez une adresse IP statique, comme cest le cas des machines au Centre Universitaire linstallation est trs simple. Il suffit de choisir un script qui est lanc lors du dmarrage de la machine et appeler notre script dans celui-ci. Il suffit donc dajouter la ligne suivante la fin du script /etc/rc.d/rc.local :

Page 37 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

sh /etc/rc.d/rc.firewall

2. Connexion PPP
Les utilisateurs qui se connectent Internet par modem et RNIS (Rseau Numrique Intgration de Services ou ISDN) ne peuvent pas lancer le script au dmarrage de lordinateur, mais seulement lors de leur connexion Internet aprs avoir obtenu leur adresse IP. Le script /etc/ppp/ip-up.local est lanc juste aprs que la connexion Internet ait t tablie. Ce script a comme 4e paramtre ladresse IP. Notre adresse IP ne doit pas tre dfinie explicitement dans notre script. Nous lobtenons par un paramtre : IPADDR=$1 La ligne suivante qui appelle notre script sera ajout la fin du script /etc/ppp/ipup.local : /etc/rc.d/rc.firewall $4 Malheureusement, il y aura un bref instant o la connexion Internet aura t tablie, mais o notre script naura pas encore t excut. Nous allons donc refuser tous les paquets ds le dmarrage de lordinateur, sauf ceux qui sont destins linterface loopback et ajouter les rgles suivantes la fin du script /etc/rc.d/rc.local :
ipchains ipchains ipchains ipchains ipchains P P P A A input DENY output DENY forward DENY input i lo j ACCEPT output i lo j ACCEPT

Page 38 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

8. Attaques frquentes et les solutions possibles


Denial of Service (DoS) Synthse des articles Denial of Service Attacks , TCP SYN Flooding and IP Spoofing Attacks , UDP Port Denial-of-Service Attack et Email Bombing and Spamming Introduction
Les attaques par dni de service ou refus de service sont des attaques dune personne malintentionne vers un rseau ou un serveur qui ont pour but de paralyser temporairement ou de rendre inactif pour un certain temps des serveurs ou des rseaux entiers. Mais des machines individuelles sont aussi souvent lobjet dune telle attaque. En fait, chaque machine connecte Internet et utilisant le protocole TCP/IP peut en tre victime si la machine nest pas protge contre les attaques de DoS. Ces attaques sont trs frquentes lheure actuelle. Yahoo, Ebay, Amazon, Hotmail et eTrade en sont seulement quelques victimes cette anne.

Effets
Les effets de telles attaques peuvent tre trs varies.

- perturbation dun service un systme ou une personne Les attaques DoS peuvent donc rendre inutilisable un ordinateur ou un rseau local. Ces effets peuvent tre trs dangereux, surtout pour les firmes utilisant le commerce lectronique. Ces attaques rsultent frquemment dans une perte importante de temps et dargent. Quelques types dattaques par dni de service sont trs effectifs parce quils sont asymtriques : un utilisateur avec une connexion modem peut nuire gravement un systme beaucoup plus rapide et sophistiqu. Ce faible utilisateur peut, par exemple, inciter un grand nombre de sources envoyer constamment des paquets la victime qui se verra surcharge.

- inondation dun rseau : la connexion Internet est bloque - perturbation de la connexion entre deux machines - empchement un utilisateur dutiliser un service

Types dattaque consommation de ressources rares, limites ou non renouvelables destruction ou modification dinformations de configuration destruction physique ou modification de composantes du rseau
A. Consommation de ressources rares 1. Connexion au rseau Ce sont les attaques les plus frquentes. Les serveurs ou les rseaux locaux ne pourront plus communiquer sur Internet. Exemple : le TCP SYN-Flooding Ce type dattaque cre chez le serveur attaqu un grand nombre de connexions semi-ouvertes. Lattaquant bombarde le serveur avec des paquets IP dont ladresse IP de lexpditeur est probablement falsifie et dont le flag SYN est mis. Le serveur rpond avec un paquet IP adress lexpditeur du paquet prcdent (qui peut exister ou pas) avec le flag SYN-ACK mis et attend un paquet IP avec le flag ACK, qui narrive probablement jamais. La structure

Page 39 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

de donnes qui contient les connexions et leur tat est un tableau non agrandissable, le nombre de connexions une machine est donc limit. Ce tableau sera ncessairement satur un moment donn et les connexions normales ne pourront plus se faire. Le serveur est disponible de nouveau quand les premires connexions semi-ouvertes sont cltures. Ceci est fait aprs le time-out des connexions semi-ouvertes, qui peut diffrer selon les diffrents systmes dexploitation et mme selon les diffrentes versions dun mme systme dexploitation. Lattaquant peut alors crer de nouveau des connexions semi-ouvertes pour paralyser le systme. Dans la majorit des cas, le systme attaqu ne se rend mme pas compte quil est attaqu. Ce sont les clients normaux qui en soufrent, car leur connexion ne peut pas se faire et ils perdent confiance dans le site. Dans dautres cas, le serveur peut crasher ou sa mmoire peut se voir sature. Il est trs difficile de donner une solution pour les attaques utilisant des paquets IP truqus. Il faut nanmoins prvoir dans le filtrage des paquets que tous les paquets venant dadresses IP interdits (venant dadresses rserves) soient rejetes. Le kernel de Linux utilise une autre solution : il traite les connexions normalement jusqu ce que la queue devient presque pleine. Lorsque le serveur reoit alors un paquet dont le flag SYN est mis, il rpond avec un cookie SYN2 (qui nest pas sauvegard) et efface le paquet SYN de la queue. Le client, sil existe, rpond alors avec un SYN et le serveur est sr que ce client existe. Si lattaquant na pas falsifi ladresse de lexpditeur, il va tre impossible pour lui de remplir la queue en rpondant continment aux cookies. Cette mthode de protection est active dans notre script par la ligne :
echo 1 >/proc/sys/net/ipv4/tcp_syncookies

2. Utilisant nos propres ressources contre nous Ceci constitue typiquement une attaque de DoS utilisant des ports UDP. Si une connexion est tablie entre deux services UDP qui produisent tous les deux beaucoup de sorties, il y aura beaucoup de trafic sur le rseau et cela peut conduire une attaque de dni de service. Exemple : un intrus, en utilisant des paquets UDP truqus, peut connecter le service echo dune machine dun rseau au service chargen dune autre machine (chargen est un service qui gnre des squences de caractres quand il reoit des paquets et echo envoie linformation quil reoit son expditeur). Ceci mne un trafic important sur le rseau qui consomme beaucoup de bande passante et la connexion Internet de ce rseau peut en tre une victime. Les services echo et chargen ne servent pas grand-chose. lorigine, ils avaient t imagins pour tester la communication travers un rseau. Ils devraient tre rendus inactifs, comme la majorit des services de inetd (ou xinetd). Pour a, il faut diter des fichiers qui se trouvent gnralement dans le dossier /etc : le fichier inetd.conf (respectivement
2

Un cookie SYN est un paquet transmis au client dont les bits SYN et ACK sont mis. Le numro daccus de rception (n de squence ACK) est calcul partir des adresses IP mettrice et destinataire, les ports source et destinataire, du numro de squence, dun compteur temporel qui augmente toutes les 64 secondes, etc. Le serveur ne garde aucune trace de ce paquet. Les paquets arrivant dun client normal sont des paquets ACK dont le numro de squence doit tre le mme que le numro daccus de rception du cookie SYN. Pour vrifier cela, il recalcule simplement ce nombre. Sil ny a pas dquivalence, le serveur recalcule encore une fois ce nombre en utilisant la valeur du compteur temporel moins un. Le client a donc en moyenne environ une minute et demie pour envoyer son paquet ACK.

Page 40 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

xinetd.conf et les fichiers du dossier xinetd.d). Le coupe-feu doit aussi filtrer tous les paquets qui sadressent des ports UDP en dessous de 900, except le service DNS (port 53). Comme dans les rgles du firewall, tous les paquets sont refuss par dfaut, il suffit daccepter explicitement les paquets du port 53 (DNS) entrants et sortants et qui sont changs avec le Nameserver, dont on peut obtenir ladresse en consultant la configuration du rseau. Le port sur notre machine qui demande le service DNS au Nameserver doit aussi toujours tre un port non privilgi.
ipchains -A output -i eth0 -p udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A input -i eth0 -p udp -s $NAMESERVER 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT

Si les ports UDP du systme sont absolument ncessaires, il est prfrable dutiliser le mcanisme de proxy pour rendre le service plus sr. Il faut tre particulirement prudent en utilisant des services UDP et surveiller le rseau avec des outils comme Argus, tcpdump ou netlog. Loutil le plus performant de ceux-ci est Argus, vu que son analyse des rsultats est plus complte de celle des autres. Il peut mme dtecter dans certains cas des paquets dont ladresse source a t falsifie ; ces paquets spoofs qui peuvent tre dtects ont les caractristiques suivantes : ladresse IP source est une adresse de votre rseau, mais pas celle du routeur connectant votre rseau Internet et ladresse MAC est celle de ce routeur. 3. Utilisation de bande passante Un intrus peut aussi consommer toute la bande passante disponible en gnrant un grand nombre de paquets envoys au rseau cible. Pour augmenter leffet, il peut faire attaquer le rseau par plusieurs machines sur des rseaux diffrents ( attaque asymtrique). Lattaque smurf Cette attaque est nomme daprs le nom du premier programme qui utilisait cette technique. Elle utilise des paquets ICMP echo request (encore appels des paquets ping) spoofs3, envoys une adresse broadcast. Le serveur broadcast va alors envoyer des paquets ping chaque machine du rseau. Toutes ces machines vont envoyer leur rponse (paquet pong) au serveur broadcast qui va transmettre les paquets pong la machine cible, ce qui

IP Spoofing

Par IP spoofing, on entend la falsification de ladresse IP mettrice dans un paquet IP. Gnralement, la falsification de ladresse IP est utilise par une personne malintentionne pour rcuprer des informations que seulement des personnes autorises ont le droit de voir. Un serveur peut avoir plus de confiance aux personnes se trouvant sur le mme rseau et leur attribuer plus de droits daccs. Il ny a pas de moyen connu pour vrifier si lauteur dun paquet a spoof son adresse IP ou non. Pour scuriser un rseau ou une machine individuelle, ladministrateur ne doit pas se baser sur une authentification par ladresse IP. Toutes les commandes r* (rlogin, rsh) doivent tre dsactives vu quils se basent sur ladresse IP pour faire lauthentification. Page 41 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

constitue un norme trafic sur le rseau, surtout entre le serveur broadcast et la machine cible.

Utilisation normale du ICMP echo request

Machine mettrice

ping pong

Machine cible

Attaque smurf: Utilisation du ICMP echo request pour inonder un rseau

Machine attaquante

ping Serveur broadcast . . .

pong pong pong pong


Procd de lattaque smurf

Machine cible

Lattaquant doit dabord rcuprer ladresse IP de la machine cible. Puis, il forgera des paquets ICMP echo request contenant comme adresse source ladresse IP de la victime. Il les envoie un serveur broadcast, qui ne doit pas ncessairement tre celui de la machine cible. Ainsi, on peut aussi inonder la connexion Internet dun simple utilisateur modem en faisant une attaque smurf qui utilisera comme intermdiaire un rseau local dont la bande passante est plus large ou qui utilise mme plusieurs intermdiaires. Le serveur broadcast envoie ces paquets chaque machine de son rseau. Ceux-ci rpondent par des paquets ICMP echo reply (encore appels pong) qui passent par le serveur broadcast pour atteindre finalement la machine cible. Considrons un cas dun rseau de 100 machines. chaque mission dun paquet ping de lattaquant, le serveur broadcast propage ce paquet 100 machines, reoit la rponse de celles-ci et transmet les 100 rponses la machine cible. Pour chaque paquet ping que lattaquant met, le nombre de paquets transmis sur le rseau vaut 3 fois le nombre de machines du rseau. Lintermdiaire (le rseau qui admet le broadcasting) et la machine cible soufrent de cette attaque. Les consquences sont (peuvent tre) la perte de la bande passante, le ralentissement du systme, la perte du rseau, le blocage du systme et le crash du systme.

Page 42 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Les solutions possibles - Pour le serveur lintermdiaire

Les routeurs ne devraient pas supporter les IP-directed broadcasts, soit la possibilit pour une personne extrieure dutiliser ladresse IP 193.168.74.255 pour dsigner ladresse broadcast de ce rseau. Il est indispensable que tous les routeurs sur le rseau soient paramtriss (avec loption no ip directed-broadcast, pour un routeur Cisco par exemple) de faon ne pas supporter cette possibilit et non seulement le routeur responsable pour le trafic avec lextrieur. Si on utilise le filtrage de paquets pour interdire les messages broadcast arrivant du type ICMP car tous les messages ICMP peuvent tre utiliss pour lattaque thoriquement nous devons ajouter les rgles suivantes pour le serveur : ipchains A input p icmp d 193.174.68.0 s any/0 j DENY ipchains A input p icmp d 193.174.68.255 s any/0 j DENY Les vendeurs de routeurs ont rcemment implment un mcanisme pour dtecter un grand nombre dadresses IP falsifies : soit un paquet pA dont ladresse IP de lmetteur est adrA et qui est entr par linterface intA. La rponse ce paquet est le paquet pB, dirig vers ladresse IP adrB. Ces nouveaux routeurs assurent alors que le paquet pB passe par linterface intA. De cette faon, la machine cible ne peut pas se trouver sur le mme rseau que celui dont ladresse broadcast est utilise, mais lattaque peut encore se diriger vers dautres victimes. Cette technique sappelle Source Address Verification est est activ dans notre script par les lignes suivantes :
# Protection contre les adresses IP falsifiees # Activer Source Address Verification for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done - Pour les machines intermdiaires

Si une machine du rseau est compromise par un attaquant, il peut lancer son attaque partir de cette machine. Les paquets ping ne traversent alors pas les routeurs et le rseau est quand mme vulnrable, mme si les routeurs ont t configurs convenablement. Il faut alors configurer le systme dexploitation de faon ce quil interdise la machine de rpondre aux paquets ICMP dirigs vers ladresse broadcast. Sous Solaris, ceci est faisable en ajoutant la ligne ndd -set /dev/ip ip_respond_to_echo_broadcast 0 au fichier de configuration /etc/rc2.d/S69inet. Sous Linux, il ny a pas une telle option et il faut filtrer ces paquets dans les chanes du firewall : ipchains -A input -p icmp -d 255.255.255.255 -j DENY l ipchains -A output -p icmp -d 255.255.255.255 -j REJECT l Remarques: En principe, tous les paquets ICMP peuvent tre utiliss pour faire une attaque smurf, non seulement les paquets ping. Cest la raison pour laquelle tous les paquets ICMP sont filtrs. Les deux adresses 193.174.68.0 et 193.174.68.255 peuvent aussi tre utilises pour dsigner ladresse broadcast et doivent tre filtrs.

Page 43 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

- Pour la victime :

Pour la victime, il ny a pas de solution relle. Certes, on pourrait filtrer les paquets ICMP echo-reply, mais cela narrterait pas le flux de paquets pong qui sont dirigs vers la machine cible. Cela namliorerait pas la performance de sa connexion Internet ou au rseau local, car le trafic travers son interface reste le mme.
- Pour le rseau metteur de lattaque :

Si on doit maintenir un grand rseau, on doit empcher les utilisateurs dutiliser des adresses IP spoofes. Il est donc ncessaire de filtrer tous les paquets dont ladresse de lmetteur ne correspond pas une adresse du rseau. Remarque : il existe une attaque qui sappelle fraggle. Elle fonctionne comme lattaque smurf, mais utilise des paquets UDP echo. 4. Consommation dautres ressources Utilisation de structures du noyeau Dans beaucoup de systmes, le nombre de structures qui contiennent des informations sur les processus est limit. Un grand nombre de ces structures peut tre consomm par un intrus. Il peut, par exemple, excuter un programme qui contient une boucle infinie dont le corps de la boucle est linstruction fork. Un autre effet de ce type dattaque est la forte consommation du processeur. Pour y remdier, on peut restreindre le nombre de processus quun utilisateur peut lancer en parallle, soit par la commande ulimit (ulimit u 256 pour le restreindre 256) ou en ditant le fichier /etc/security/limits.conf (ajouter la ligne @users hard nproc 256 pour limiter le nombre de processus 256). Utilisation despace disque Un intrus peut consommer despace disque en

plaant des fichiers dans des rgions ftp anonymes ou des dossiers partags En gnral, tout ce qui admet que quelque chose est crit sur disque peut tre exploit pour effectuer une attaque de dni de service si le systme na pas une limite de combien doctets peuvent tre crits sur disque.
Le mitraillage de courrier et le multipostage abusif (Email Bombing and Spamming)

gnrant un nombre lev de messages email gnrant des erreurs qui doivent tre mentionnes dans un fichier log

Le mitraillage de courrier est le fait d'inonder de messages une bote aux lettres lectronique. Le multipostage abusif est laction d'envoyer un message non dsir par email de faon abusive. C'est considr comme malpoli, cest donc un manque au ntiquette (vient de net et tiquette). (Il existe aussi des techniques de email spoofing o ladresse email de lexpditeur est falsifie.) Les consquences sont doubles : le client qui reoit les mails est embt parce quil reoit des messages quil ne veut pas recevoir et le serveur mail qui doit grer un grand nombre de messages inutiles et est souvent le sujet dune attaque de refus de service. Prvenir de telles attaques nest pas facile. Il faudrait dvelopper des outils qui dtectent si de nombreux messages arrivent une adresse ou sont expdis partir dune adresse email pendant un dlai court et rejeter ces messages. Une fois quune adresse IP est identifie qui produit une telle attaque, le coupe-feu peut tre configur pour quil naccepte plus les paquets qui arrivent de cette adresse. Il faut aussi informer les utilisateurs de telles attaques et leur interdire de rpondre de tels messages, ce qui rendrait le problme encore plus grave.

Page 44 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Blocage de comptes Beaucoup de sites verrouillent un compte utilisateur si quelquun entre un faux mot de passe plusieurs fois. Un intrus peut intentionnellement entrer un nom dutilisateur correct, mais un mot de passe incorrect plusieurs fois. Le compte sera alors verrouill. Ceci est particulirement dangereux, si lintrus arrive bloquer le compte root. Ladministrateur systme doit prvoir une possibilit de regagner laccs ce compte trs important en cas durgence. Ping de la Mort Quelques systmes ragissent de manire imprvisible (crash, deviennent instables, redmarrent) sils reoivent des paquets qui dpassent la taille maximale autorise des paquets. La taille maximale est de 65536 octets avec un minimum de 20 octets dans len-tte IP. Particulirement avec des paquets ICMP rsultant de la commande ping, il est possible de gnrer des paquets de trs (trop) grande taille. Cette attaque est appele Ping de la mort ou en anglais ping of death . Dans Linux, cette attaque ne consiste plus un problme partir du kernel 2.0.27. Mais des patchs sont disponibles pour des versions plus anciennes. Divers Dautres composantes (imprimantes, bandes magntiques, connexions de rseau et dautres ressources limites importantes) peuvent aussi tre le sujet dattaques de dni de service et doivent aussi tre surveilles. Un administrateur systme prudent limite le nombre doctets qui peuvent tre sauvegards par un compte et partitionne le disque pour sparer des fonctions critiques dautres activits. Il observe aussi les performances du systme et remarquera des niveaux levs dutilisation disque, CPU ou de trafic travers le rseau. B. Destruction ou modification dinformations de configuration Si un intrus est capable de modifier/dtruire des informations de configuration, la machine ou le rseau local peut ne plus fonctionner ou mal fonctionner. Mots de passe Sur une machine, il ne devrait pas y avoir des comptes utilisateur avec des mots de passe qui sont faciles de deviner. Les utilisateurs ne doivent pas utiliser des mots qui se trouvent dans un dictionnaire ou une encyclopdie de nimporte quelle langue, des noms de vedettes ou autres personnages bien connus, ni des abrviations ou acronymes qui sont souvent utiliss par des professionnels du domaine informatique. Les comptes utilisateurs sans mot de passe doivent tre interdits ainsi que ceux utilisant des mots de passe par dfaut ou trs courts. Diffrents comptes ne doivent pas avoir des mots de passe identiques non plus. Une bonne mthode pour choisir un mot de passe, est de partir dune phrase, de remplacer les espaces par des signes de ponctuation, modifier des mots et utiliser des caractres majuscules des endroits alatoires. Mais mme des trs bons mots de passe ne sont pas ncessairement srs. Si on utilise des services travers Internet comme telnet, qui transmet la liste des mots de passe en plein texte, ces informations peuvent tre captures par des packet sniffers. Mme si le mot de passe traverse Internet sous forme crypte, il se peut quil soit dchiffr. Pour remdier cette vulnrabilit, il existe des produits qui utilisent des one-time passwords . Le serveur sattend chaque connexion un autre mot de passe. S/KEY est un programme gratuit qui utilise un mot de passe rutilisable dfini par lutilisateur. Il transmet un mot de passe calcul partir du mot de passe original. En fait, le

Page 45 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

serveur applique une fonction qui est simple dans le sens normal, mais dont linversion de la fonction est pratiquement impossible. Il applique cette fonction n fois et demande lutilisateur dentrer le mot de passe original auquel cette fonction est applique n-1 fois. En appliquant la fonction encore une fois lentre de lutilisateur, le serveur peut contrler si le mot de passe est valide. A la prochaine identification, ce dernier rsultat est utilis comme mot de passe de dpart. Secure ID utilise aussi des one-time passwords. Il utilise un algorithme propritaire pour calculer un nombre en fonction du temps et dune carte didentification. Lhorloge du client doit tre synchronise avec celle du serveur. SafeWord est aussi un outil commercial utilisant une carte didentification. Le serveur pose un problme (qui nest jamais rpt 2 fois) au client, qui le rsout en lintroduisant dans la carte. Services rseau non srs ou mal configurs Un service comme TFTP (Trivial File Transfer Protocol) peut tre utilis par un intrus pour recevoir le fichier des mots de passe. Ce service devrait tre rendu inutilisable ou configur de faon ce que laccs soit restreint. En fait, tous les services qui ne sont pas ncessaires doivent tre rendus inutilisables, car ils prsentent un danger supplmentaire. Les vulnrabilits dans sendmail ont t remdies dans sa dernire version. Un administrateur systme doit veiller toujours utiliser les dernires versions et dinstaller tous les patchs de scurits. Pour FTP, ladministrateur systme doit aussi veiller que le serveur utilise la dernire version du dmon ftpd et le configurer correctement. (voir la section consacre FTP) Les permissions (protections) des fichiers et dossiers doivent tre contrles, surtout les directoires / (root) et /etc et tous les fichiers de configuration et fichiers systme. Finalement, beaucoup dintrus exploitent des failles de scurit de versions de systmes dexploitation plus vieux. Affin de rduire les chances que le systme soit lobjet dune attaque, la dernire version du systme dexploitation devrait tre installe et tous les patchs de scurit devraient tre installs. Pour lutter contre des intrus qui modifient/dtruisent la configuration dun systme, il est prudent de faire rgulirement des backups de ces informations. Des outils comme Tripwire contrlent lintgrit des informations de configurations. Dans le cas de Tripwire, ces informations sont compares au contenu dune base de donnes qui a t gnre pralablement et enregistre tous les changements dans un fichier log. C. Destruction physique ou modification de composantes du rseau Les composantes importantes du rseau devraient tre surveilles pour empcher un accs non autoris dune personne.

Buffer Overflow
Un buffer overflow, cest--dire un dpassement du tampon (zone de mmoire temporaire utilise par une application), dans des dmons qui offrent un service public, peut tre exploit par un intrus pour gagner le statut de root et excuter nimporte quelles commandes sur le serveur compromis.

Page 46 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Cest une attaque trs efficace et assez complique raliser. Elle vise exploiter une faille, une faiblesse dans une application (type browser, logiciel de mail, etc...) pour executer un code arbitraire qui compromettra la cible. Ce qui suit est une description des services vulnrables connus.

1. mountd dans NFS


NFS (Network File System) est un service qui offre au client la possibilit dutiliser des systmes de fichier offerts par le serveur. Cest une possibilit de partager des fichiers entre plusieurs ordinateurs. Le fait de monter le systme de fichiers consiste faire une demande auprs du serveur pour utiliser un systme de fichiers et donner laccs ce systme de fichiers localement. Le programme du serveur qui traite les demandes des clients pour monter un systme de fichiers est appel mountd (ou rpc.mountd). Certaines implmentations de ce programme (mountd) sont vulnrables. Ils peuvent produire un dpassement de tampon dans la partie de leur code qui sert maintenir un fichier log les activits de NFS. La raction consiste installer un patch qui limine cette vulnrabilit. En gnral, il vaut mieux toujours installer la dernire version dun dmon et installer tous les patchs de scurit quil y a.

2. IMAP
IMAP (Internet Message Access Protocol, port 143) est un protocole pour aller chercher ses emails auprs dun serveur IMAP. Quelques implmentations de serveurs IMAP sont vulnrables au dpassement du tampon. Ce sont toutes celles de la University of Washington antrieures la version 4.1 et celles qui utilisent le code de cette implmentation. La version 5.1 de Redhat Linux et toutes les distributions antrieures sont vulnrables. Il existe des upgrades pour Redhat Linux 4.2, 5.0 et 5.1. Les versions plus rcentes ne devraient plus tre affectes.

3. POP
POP (Post Office Protocol, port 110) sert aussi, comme IMAP, aller chercher ses e-mails auprs dun serveur POP. Toutes les versions qui se basent sur qpopper de la firme QUALCOMM sont vulnrables. Des patchs sont gnralement disponibles.

CGI et les mta-caractres Dfinitions


Dfinition de CGI (daprs www.techno-guru.com)

"Common Gateway Interface". Technique grce laquelle une requte contenue dans une page HTML provoque le dclenchement d'un programme spcifique sur un serveur. Ces programmes sont gnralement crits en C, C++, Perl ou TCL, et sont excuts par le serveur Web. Le CGI permet par exemple de crer des formulaires de saisie sur le Web. Cette technologie est concurrence par les ASP, le PHP et les JavaServer Pages (JSP).
Dfinition de mta-caractre

Cest un caractre spcial dans un programme ou un champ de donnes qui donne des renseignements sur les autres caractres. Il peut exprimer la faon dont les autres caractres Page 47 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

doivent tre trats. Ainsi le backslash est souvent utilis pour indiquer que les caractres suivants doivent tre traits de faon spciale

Pourquoi les mta-caractres sont dangereux


Les donnes entres dans un formulaire sur une page web, par exemple, ne doivent pas inclure des mta-caractres, puisque lors du traitement, ces caractres peuvent dclencher des actions non souhaites.
Exemple :

Imaginez un programme qui doit envoyer un e-mail une adresse qui a t introduite dans un champ de donnes dune page web. Le code source contient une ligne comme system("/usr/lib/sendmail -t $form_address < $input_file"); ce qui va envoyer lemail contenant linput_file ladresse form_address. Si le contenu de form_address nest pas filtr, quelquun peut y introduire la valeur bonne@adresse.email;mail adresse@d_un.cracker < /etc/passwd, par exemple. Il utilise ainsi le signe point-virgule pour insrer une nouvelle commande qui va lui mailer le fichier des mots de passe.

Comment viter ce danger?


Les donnes transmises au script CGI doivent donc tre filtres avant d'tre utilises. La mthode non-recommande consiste dans la recherche des caractres non-autoriss et de les remplacer par un caractre sans danger. Les caractres dangereux sont : /;[]<>& , la tabulation et lespace Il vaut mieux clairement dfinir quels sont les caractres autoriss et remplacer tout autre caractre par un caractre inoffensif. Ainsi, il ny a pas le risque quon oublierait un caractre dangereux. Le programme suivant affiche la liste des arguments du script CGI, qui se trouve dans la variable denvironnement QUERY_STRING, une fois avant et une fois aprs le filtrage. En C : #include <stdio.h> #include <string.h> #include <stdlib.h> int main (int argc, char *argv[], char **envp) { static char ok_chars[] = abcdefghijklmnopqrstuvwxyz\ ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_-.@; char *user_data; /* pointeur vers QUERY_STRING; attention, ne pas utiliser un tableau de taille fixe, car on ne peut pas prvoir la taille de QUERY_STRING */ char *cp ; /* curseur dans le string */ user_data = getenv(QUERY_STRING); printf(%s\n, user_data); for (cp = user_data; *(cp += strspn(cp, ok_chars));) *cp = _; printf(%s\n, user_data); exit(0); } En Perl:

Page 48 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

#!/usr/local/bin/perl $_ = $user_data = $ENV{QUERY_STRING}; print $user_data\n; $OK_CHARS=-a-zA-Z0-9_.@; s/[^$OK_CHARS]/_/go; $user_data = $_; print $user_data\n; exit(0); Il est aussi recommand de configurer httpd de faon ce que tous ses processus fils soient excuts comme utilisateur non-privilgi.

FTP Gnralits
Dfinition (daprs www.techno-guru.com)

"File Transfer Protocol". Protocole dfinissant les rgles de transfert de fichiers entre deux machines relies par un rseau de type TCP/IP (comme Internet par exemple).
Fonctionnement

Le principe est que le client fait un login sur le serveur FTP. Il entre alors dans un rpertoire dfini dans les fichiers de configuration du serveur FTP. Si lutilisateur est un utilisateur anonyme, il peut seulement descendre dans larborescence partir de ce point dentre dans le systme de fichiers et pas remonter au-dessus de son point dentre. Aprs tre connect, il existe une connexion dite de commande qui utilise le port 21 entre le serveur FTP et le client. Elle est utilise pour transfrer des commandes du client vers le serveur et les messages simples du serveur vers le client. Les fichiers et les listes du contenu dun directoire sont transfrs par une connexion de donnes qui utilise le port 20.
Les modes actif/passif

Il y a deux modes : le mode actif et le mode passif. Le mode actif est le mode par dfaut et le mode passif na t dvelopp que plus tard. En mode FTP passif, le flux de donnes est lanc par le programme client et non par le serveur FTP - comme c'est le cas en mode FTP actif. En mode actif : le client demande au serveur dtablir une connexion de donnes sur un port du client non-privilgi par la commande PORT. Le serveur connecte son port 20 au port indiqu par le client et la connexion est ouverte. En mode passif : le client demande une connexion en mode passif par la commande PASV. Le serveur transmet un message au client qui indique le port sur lequel il est en coute. Le client se connecte alors depuis un port non-privilgi au port indiqu par le serveur et la connexion est tablie. En gnral, le mode passif est conseiller du point de vue scurit. Le fait que le serveur lance la connexion dans le mode actif joue un rle important, car vous ne pouvez jamais tre sr que cest vraiment le serveur FTP qui se connecte votre machine. Si une personne mal intentionne se connecte plus rapidement votre machine que le serveur FTP ( man in the middle ), les consquences peuvent tre fatales.

Configuration dun serveur FTP anonyme


Il est conseill dutiliser toujours le dmon FTP le plus rcent.

Page 49 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Les utilisateurs anonymes nont pas accs toute larborescence du systme de fichiers, mais seulement au rpertoire ~ftp et ses sous-rpertoires. Il est aussi possible de configurer dautres utilisateurs de faon ce quils puissent seulement accder cette partie du systme

Zone invisible par un anonyme

home ftp etc


Zone visible par un anonyme

bin

lib

pub Zone de transfert

de fichiers par une entre supplmentaire dans le fichier /etc/ftpaccess. Il ne faut jamais accepter que lutilisateur root se connecte au systme via FTP, car il aurait simplement trop de droits.

Zone invisible par un anonyme

home ftp etc


Zone visible par un anonyme

bin

lib

pub Zone de transfert

Une entre dans /etc/passwd est requis pour le compte FTP anonyme. Le mot de passe doit tre dsactiv, cest--dire dans le champ passwd figure le signe *. Le rpertoire racine peut tre dfini dans le fichier de configuration /etc/ftpaccess, p.ex la ligne anonymous-root /home/ftp dfinit le rpertoire racine comme tant le rpertoire /home/ftp. Remarque : si la spcification du rpertoire racine est omise dans ce fichier de configuration, celui du fichier /etc/passwd sapplique. Une entre dans ce fichier peut tre : ftp:*: 123:123:FTP anonyme:/home/ftp:/bin/false

Page 50 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Explications : Comme indiqu plus haut, le mot de passe doit tre *. Les deux nombres 123 et 123 sont le UserID et le GroupIP de lutilisateur anonyme, ensuite vient un champ appel Gecos qui contient une explication. Sy ajoutent le rpertoire racine et le shell. Le shell doit tre /bin/false ou /bin/true, ce qui signifie que les utilisateurs de lFTP anonyme nont aucun shell. Le rpertoire racine (~ftp) de FTP anonyme et ses deux sous-rpertoires, etc et bin, ne devraient pas appartenir au compte d'utilisateur FTP. Le propritaire doit tre root. Seul root peut crire dans le rpertoire ~ftp et ses sous-rpertoires. Les sous-rpertoires sappellent normalement bin, etc, lib et pub. ~ftp/bin : Contient des copies de tous es excutables laide desquels FTP offre les fonctionnalits de ls, cd et des programmes de compression. Ce rpertoire ainsi que les fichiers quil contient doivent seulement tre excutables pour tout le monde. (chmod 0111) ~ftp/etc : Contient des copies modifies de /etc/passwd et /etc/group, contenant seulement les informations minimales ncessaires. La commande ls utilise ces fichiers pour dterminer le propritaire dun fichier par exemple. Ces fichiers doivent tre read-only (chmod 0444). Vu que les propritaires des fichiers dans ~ftp sont soit root ou le compte FTP, seuls ces deux entres sont ncessaires. Les mots de passe doivent tre remplacs par le signe *. Sinon, une personne mal intentionne peut copier ces fichiers, dcrypter les mots de passes et gagner accs non limit votre machine. Le rpertoire ~ftp/etc doit tre excutable par tout le monde (chmod 0111). Remarque : ce rpertoire ne doit pas ncessairement contenir les fichiers passwd et group. Dans ce cas, les utilisateurs ne peuvent pas voir le nom du propritaire dun fichier, mais seulement les identificateurs numriques UID et GID. ~ftp/lib : Contient des bibliothques ncessaires pour lexcution de FTP. Le rpertoire et tous les fichiers quil contient ne doivent pas tre modifiables (chmod 0555). ~ftp/pub : Cest le rpertoire accessible publiquement. Les fichiers dans ce rpertoire doivent tre readonly (chmod 0444). Les sous-rpertoires doivent aussi tre excutables (lexcution dun rpertoire consiste louvrir, sa lecture consiste afficher son contenu) (chmod 0555).
Cas o lon accepte lcriture de donnes dans un rpertoire (drop off)

Autrefois, un usage rpandu du FTP anonyme tait de permettre vos correspondants de vous transmettre des fichiers trop volumineux pour le courrier lectronique: un rpertoire o lutilisateur FTP avait le droit d'criture tait cr et on pouvait donc y dposer des documents par une session FTP sous le compte Anonymous FTP. Le fait que n'importe qui pouvait crire sur votre disque tait tempr par une certaine courtoisie qui rgnait alors sur l'Internet. De nos jours, cette possibilit est tt ou tard dtourne pour faire de votre serveur FTP un centre d'change de fichiers d'origine douteuse. Si ladministrateur systme accepte lcriture de donnes dans un sous-rpertoire de ~ftp, par exemple ~ftp/incoming, il doit tre conscient des risques que cela peut impliquer. En

Page 51 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

fait, les utilisateurs peuvent utiliser votre serveur FTP pour lchange de copies illgales de programmes, pour lchange dinformations concernant des comptes dutilisateurs et leurs mots de passe dchiffrs et pour intentionnellement remplir votre disque dur (attaque de dni de service). Un grand nombre de lectures et dcritures sur votre disque via FTP peut aussi consister en un dni de service si une bonne partie de votre bande passante est utilise. Les solutions possibles : 1. Rpertoire temporaire Il est possible de contourner ce problme en crant un rpertoire temporaire qui appartient lutilisateur FTP anonyme avec les permissions 700, donc plein droit pour le propritaire (utilisateur FTP anonyme). Le correspondant transfre alors son fichier et ds que le transfert est accompli, lutilisateur root doit retirer tous les droits pour le compte FTP anonyme, par exemple en changeant le propritaire pour le rpertoire (/bin/chown root ~ftp/incoming). Cette solution nest toutefois pas trs lgante et ncessite que ladministrateur systme doit toujours tre contact si quelquun veut lui transfrer un fichier. 2. Utilisation dun disque pour le rpertoire incoming Il est possible de monter un disque comme ~ftp/incoming pour limiter la quantit de donnes crite par les utilisateurs du FTP anonyme. Le rpertoire ~ftp/incoming doit alors tre surveill par ladministrateur systme pour viter lchange de donnes illgales entre les utilisateurs du FTP anonyme. 3. Utilisation de rpertoires protgs Cette mthode ncessite une coordination a priori entre ladministrateur systme et les personnes qui ont le droit dcriture dans une session FTP. Lide est de crer le rpertoire incoming comme tant seulement excutable. Les utilisateurs FTP anonyme peuvent donc ouvrir ce directory, mais pas afficher son contenu ou crire quelque chose dedans. Ladministrateur place alors un ou plusieurs sous-rpertoires dans le rpertoire incoming. Les noms doivent tre choisis de faon ce quils ne soient pas devinables facilement (mmes critres que pour les mots de passe). Ces rpertoires auront donc le droit dcriture et dexcution pour les utilisateurs FTP anonyme. Toutefois, si le nom de ces rpertoires (qui peuvent aussi tre imbriqus plusieurs niveaux) devient public, alors il faut les renommer ou les supprimer. 4. Utilisation dun dmon FTP modifi Ceci est la solution la plus efficace : on utilise un dmon FTP modifi qui offre plus de scurit. Ils implmentent normalement les possibilits suivantes :

Un fichier transfr dun utilisateur anonyme vers le serveur FTP doit tre examin par ladministrateur systme et amen dans un rpertoire public affin de pouvoir tre lu par un utilisateur FTP anonyme. Limitation de la quantit de donnes transfre dans une session. Limitation de la quantit de donnes transfre globalement, bas sur la capacit de disque Augmentation du logging pour dtecter plus tt les abus.

Serveur FTP compromis


Ce paragraphe dcrit comment on peut dtecter si votre serveur FTP a t compromis, cest-dire mis dans une situation critique ou dangereuse.

Page 52 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Il est essentiel de contrler les fichiers log du serveur FTP. Une forte augmentation des transferts de fichiers (puts/gets) peut indiquer que des personnes mal intentionnes changent des donnes critiques. Le contrle de ces fichiers peut aussi se faire automatiquement. Ladministrateur doit aussi rgulirement examiner le contenu des rpertoires FTP (y inclus des rpertoires ventuellement cachs) pour reprer des fichiers non acceptables. Il est utile de contrler lintgrit des fichiers (avec Tripwire, p.ex.) affin dassurer que ces fichiers nont pas t remplacs par des versions contenant un Cheval de Troie. Loutil Tripwire est un produit commercial (une version acadmique gratuite est aussi disponible) qui cre une base de donnes de tout le systme de fichiers avec les proprits de chaque fichier et un code de hachage pour chaque fichier, obtenu partir de lapplication dune fonction de hachage sur le contenu du fichier. De cette faon, on peut dcouvrir quun fichier a t modifi mme si lintrus a pris garde de ne pas modifier la taille du fichier et sil a rtabli les dates de la dernire modification et de la dernire lecture du fichier. Cet outil peut donc tre lanc une fois par semaine, par exemple, et il indiquera au superviseur quels fichiers ont t manipuls, crass et ajouts.

Attaque FTP bounce


Description

Bounce signifie rebond. Cette attaque est une forme de spoofing (falsification) dadresse IP. Sa technique est en accord avec les RFC (voir note de bas de page n1), ce qui fait de tous les serveurs FTP une cible potentielle. La commande PORT (voir description du mode actif plus haut) permet au client non seulement de demander au serveur FTP douvrir une connexion sur un port de sa propre machine, mais aussi sur une autre machine en spcifiant une autre adresse IP. Donc, nimporte qui peut ouvrir des ports sur une machine qui nest pas la sienne. Ltablissement de cette connexion une autre machine pour des actions non-autorises est appel FTP bounce attack. Voici quelques exemples comment les hackers utilisent le FTP bounce.
Les possibilits de cette attaque

1. Scanner des ports. Un attaquant qui veut scanner les ports dune machine peut utiliser cette technique. Cest le serveur FTP qui scanne en fait les ports de la machine cible via la demande du hacker. Un avantage pour le hacker est que sa propre adresse IP napparat pas comme source du port scan. Lautre peut tre exploit si la machine cible fait confiance au serveur FTP et autorise lentre de la plupart (ou tous) les paquets IP venant de lui. Lutilitaire nmap permet de lancer un tel port scan (voir loption -b de nmap, page 63). 2. Contourner le filtrage de paquets Un attaquant peut contourner le filtrage de paquets en utilisant le Rebond FTP, par exemple pour tablir une connexion un serveur web interne qui serait normalement protg par un firewall, mais qui admet les connexions depuis le serveur FTP.

Page 53 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

3. Contourner les limitations dexportation Il y a une limitation dexportation si un site permet laccs des fichiers seulement pour des utilisateurs anonymes dune adresse IP donne, dun groupe dadresses IP (par exemple commenant par 193.168.74.) ou remplissant dautres critres, par exemple dont le nom est retrouv (DNS) et ayant lextension dun pays donn. Il est possible de contourner cette limitation dexportation si on trouve un serveur FTP auquel ces restrictions ne sappliquent pas possdant un rpertoire (au moins) dans lequel tous les utilisateurs peuvent aller crire et lire des fichiers

Le procd de cette attaque : La premire chose faire est dtablir une connexion de commande votre propre serveur FTP (ladresse IP relle et non pas localhost), douvrir un canal de donnes (commande PASV) et daccepter un fichier entrant (commande STOR <nom du fichier>). La commande PASV retourne votre adresse IP et le port sur lequel vous tes en coute. Maintenant, il est temps de se connecter anonymement au serveur FTP qui sert comme intermdiaire. On lui dit douvrir une connexion de commande avec le serveur qui maintient le fichiers que nous dsirons avoir, de lancer la commande PORT avec les valeurs retournes par PASV pour que lautre serveur tablisse une connexion de donnes avec nous. Finalement, la commande RETR <nom du fichier> est lance pour quil nous transfre le fichier demand.
Solutions possibles :

Ce qui pose rellement problme est la commande PORT, car elle donne la possibilit douvrir une connexion de donnes avec nimporte quelle adresse IP et sur nimporte quel port. 1. Software du serveur FTP La meilleure solution consiste assurer que votre serveur nest pas mme dtablir une connexion de donnes avec des adresses IP arbitraires. Il y a trois groupes de software FTP :

Ceux respectant strictement les fonctionnalits de la RFC : aucune restriction sur la commande PORT. (non recommand) Ceux qui suppriment strictement la spcification dune adresse IP autre que celle du vrai client dans lutilisation de la commande PORT. Exemple : wu-ftpd 2.4.x (recommand) Et ceux qui peuvent tre paramtrs et permettent les deux possibilits. Il faut faire attention quelle est la configuration par dfaut. (recommand si la suppression des fonctionnalits dangereuses de la commande PORT est active)

2. Configuration du serveur FTP Dabord, ladministrateur systme doit prendre en compte les risques quil peut courir sil admet lcriture dans des rpertoires FTP par des utilisateurs anonymes. Mme sil naccepte pas cela, il doit quand mme assurer la bonne configuration du serveur FTP (voir plus haut).

Page 54 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

3. Configuration du rseau Dans le cas dun grand rseau, il est recommand de placer un 2e firewall, appel Choke, entre les serveurs qui offrent des services publics (DMZ) et le rseau local (LAN). Si un serveur public est compromis, ce 2e coupe-feu assure alors la protection du rseau local. Des sites qui ont un serveur FTP qui ne fait aucune restriction sur lutilisation de la commande PORT devraient possder une frontire dans la forme dun coupe-feu entre ce serveur et leur rseau local priv, surtout si les machines du LAN utilisent des services qui se basent sur ladresse IP ou le nom de lhte pour faire lidentification. De tels services sont rlogin, rsh et NFS et ils ne devraient pas tre accessibles par lInternet et non plus par le serveur FTP.

Internet

Firewall 1 Serveur FTP Firewall 2 (Choke) LA N LAN (Local Area Network) protg davantage Serveur Web DMZ (DeMilitarized Zone) zone dmilitarise

Page 55 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

9. Prsentation des utilitaires et test du systme


netstat
Cette commande permet d'afficher beaucoup d'informations et de statistiques sur l'tat actuel du sous-systme rseau de Linux. Par dfaut, elle liste tous les sockets ouverts, donc toutes les connexions Internet actives et tous les sockets du domaine Unix. Exemple : > netstat
Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 166 0 deimos.infogest.cu:1031 electra.red.cert.o:http ESTABLISHED tcp 166 0 deimos.infogest.cu:1030 electra.red.cert.o:http ESTABLISHED tcp 165 0 deimos.infogest.cu:1033 electra.red.cert.o:http ESTABLISHED tcp 0 0 deimos.infogest.cu:1032 electra.red.cert.o:http ESTABLISHED Sockets du domaine UNIX actives(sans serveurs) Proto RefCpt Indicatrs Type Etat I-Node Chemin unix 8 [ ] DGRAM 758 /dev/log unix 4 [ ] STREAM CONNECTE 2036 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTE 2035 unix 3 [ ] STREAM CONNECTE 1533 /tmp/.ICE-unix/952 unix 3 [ ] STREAM CONNECTE 1532 ...

Avec l'option -r, vous pouvez visualser les tables de routage dans le mme format qu'avec la commande route -e. Ce qui est un peu trange est, que netstat -re (e pour extended) affiche la mme chose que la commande route sans arguments. L'option -i affiche une table des interfaces rseau. Utilisez -ie pour plus de clart, elle affiche la mme chose que la commande ifconfig. Dans lexemple ci-aprs, lo est donn comme paramtre supplmentaire. Ceci spcifie que netstat doit seulement lister les informations sur localhost. Exemple: netstat -ei lo
Table d'interfaces noyau lo Lien encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 Paquets Reus:4 erreurs:0 jets:0 dbordements:0 trames:0 Paquets transmis:4 erreurs:0 jets:0 dbordements:0 carrier:0 collisions:0 lg file transmission:0

L'option -M affiche les sessions ayant de l'IP-masquerade, donc ou votre adresse IP est cache pour l'extrieur par votre serveur. Les machines extrieures votre rseau ont donc l'impression que tous les paquets que vous mettez proviennent de votre serveur, car celui-ci remplace votre adresse IP mettrice par son adresse IP. Ceci est particulirement utile si votre rseau ne dispose que d'une seule adresse IP officielle ou pour mesure de scurit. Sur la machine du Centre Universitaire, lutilisation de cette option ne donne pas de rsultats vu que ce nest pas une machine qui masque ladresse IP dautres machines.

Page 56 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

L'option -n n'essaie pas de rsoudre le nom symbolique de l'hte, du port ou de l'utilisateur, mais affiche les adresses en format numrique. Exemple : > netstat n
Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 166 0 193.168.74.227:1031 192.88.209.14:80 ESTABLISHED tcp 166 0 193.168.74.227:1030 192.88.209.14:80 ESTABLISHED tcp 167 0 193.168.74.227:1033 192.88.209.14:80 ESTABLISHED tcp 0 402 193.168.74.227:1032 192.88.209.14:80 ESTABLISHED Sockets du domaine UNIX actives(sans serveurs) Proto RefCpt Indicatrs Type Etat I-Node Chemin unix 8 [ ] DGRAM 758 /dev/log unix 5 [ ] STREAM CONNECTE 2036 /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTE 2035 unix 3 [ ] STREAM CONNECTE 1533 /tmp/.ICE-unix/952 unix 3 [ ] STREAM CONNECTE 1532

L'option -p affiche le nom et le PID des processus qui utilisent les sockets. Exmple : > netstat -p
Connexions Internet actives (sans serveurs) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 deimos.infogest.cu:1031 electra.red.cert.o:http ESTABLISHED 1030/netscape-commu tcp 0 409 deimos.infogest.cu:1030 electra.red.cert.o:http ESTABLISHED 1030/netscape-commu tcp 0 406 deimos.infogest.cu:1033 electra.red.cert.o:http ESTABLISHED 1030/netscape-commu tcp 0 409 deimos.infogest.cu:1032 electra.red.cert.o:http ESTABLISHED 1030/netscape-commu Sockets du domaine UNIX actives(sans serveurs) Proto RefCpt Indicatrs Type Etat I-Node PID/Program name Chemin unix 8 [ ] DGRAM 758 521/syslogd /dev/log unix 4 [ ] STREAM CONNECTE 2036 888/X /tmp/.X11-unix/X0 unix 3 [ ] STREAM CONNECTE 2035 1030/netscape-commu unix 3 [ ] STREAM CONNECTE 1533 952/kdeinit: dcopse /tmp/.ICE-unix/952 unix 3 [ ] STREAM CONNECTE 1532 1000/kdeinit: konso

L'option -A suivi d'une famille d'adresses, comme inet pour Internet et unix pour les processus du systme affiche seulement les informations relatives cette famille. L'option -a affiche tous les ports. Par dfaut, les ports en tat LISTEN (qui attendent des informations venant de l'Internet) ne sont pas affichs. Il y a moyen d'afficher seulement les ports en tat LISTEN par l'option -l

Exemple: nestat -nap -A inet


Connexions Internet Proto Recv-Q Send-Q tcp 0 0 tcp 0 0 tcp 0 0 tcp 0 0 tcp 1 0 tcp 1 0 actives (serveurs et Adresse locale 0.0.0.0:6000 0.0.0.0:22 127.0.0.1:25 213.166.51.74:32935 213.166.51.74:32934 213.166.51.74:32933 tablies) Adresse distante 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 192.88.209.14:80 192.88.209.14:80 192.88.209.14:80 Etat LISTEN LISTEN LISTEN CLOSE_WAIT CLOSE_WAIT CLOSE_WAIT PID/Program name 688/X 509/sshd 550/sendmail: accep 1445/netscape-commu 1445/netscape-commu 1445/netscape-commu

ping
Cette commande envoie des paquets ICMP echo request une adresse IP donne comme argument et dduit le nombre de paquets ICMP echo reply qui arrivent partir des tables du noyau qui peuvent tre visualises avec netstat. Il est aussi possible de donner le nom

Page 57 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

symbolique de la machine cible en argument au lieu de l'adresse IP. La commande ping est essentiellement prvue pour voir si un hte est connect ou non. En fin d'excution, la commande affiche le pourcentage de paquets auxquels aucune rponse (ICMP echo reply) n'a t donne. L'option -c permet de spcifier le nombre de paquets qui sont transmis. Sinon, la commande envoie infiniment des 'paquets ping' et il faut alors l'arrter brutalement (avec CTRL + C, par exemple)

Exemple : ping -c 2 localhost


PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data. Warning: time of day goes back, taking countermeasures. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=299 usec 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=255 time=74 usec --- localhost.localdomain ping statistics --2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.074/0.186/0.299/0.113 ms

partir de lextrieur, il est impossible de nous pinger :il y aura 100% packet loss et un message derreur apparatra dans le fichier /var/log/messages de la machine firewall.

ifconfig
Cette commande affiche la configuration des cartes rseau, mais permet aussi de changer celles-ci. Exemple : voir nestat -ei lo Cette commande est utilise lors du boot pour configurer les interfaces rseau et ainsi rendre le systme oprationnel. Si vous remarquez qu'un intrus est entr dans votre systme, vous pouvez simplement dsactiver la carte rseau avec la commande ifconfig eth0 down. Pour activer de nouveau linterface ethernet et lui affecter une autre adresse IP : 193.168.74.222, nous crirons : ifconfig eth0 193.168.74.222 up Si linterface eth0 na pas encore t configur pralablement, il est ncessaire de spcifier le masque de sous-rseau et ladresse broadcast : ifconfig eth0 inet 193.168.74.227 netmask 255.255.255.0 broadcast 193.168.74.255 Loption inet indique ici que lon utilise un rseau Ethernet. La passerelle doit tre configure avec la commande route que nous verrons un peu plus loin.

traceroute
Cette commande prend un argument sous la forme d'une adresse IP ou le nom d'un hte qui spcifie la cible. Elle permet de dterminer la route prise par un paquet pour atteindre la cible sur internet. Cette commande met dabord un paquet avec le champ ttl (time to live, nombre de routeurs par lesquelles le paquet peut passer au maximum) mis 0. Ensuite, si

Page 58 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

l'adresse cible n'a pas encore t atteinte, il augmente le ttl de 1. Chaque fois qu'un routeur reoit un paquet dont le ttl vaut 0, il met un message d'erreur (ICMP time-exceeded) l'metteur du paquet. traceroute sait alors, par quels routeurs, le paquet est pass, car il reoit leur adresse IP avec chaque message d'erreur qu'il reoit. Exemples: 1> traceroute www.cert.org sans firewall
traceroute to electra.red.cert.org (192.88.209.14), 30 hops max, 38 byte packets 1 bs-rt1-et65.cu.lu (193.168.74.129) 0.382 ms 0.310 ms 0.299 ms 2 gate-e0.crpgl.lu (192.103.2.50) 1.288 ms 1.085 ms 2.146 ms 3 POP-Limpertsberg-ge5.restena.lu (158.64.16.17) 1.348 ms 1.157 ms 1.140 ms 4 bce1-ge100-24-v24.bce.restena.lu (158.64.16.210) 1.286 ms 1.051 ms 0.981 ms 5 restena.lu1.lu.geant.net (62.40.103.93) 1.427 ms 2.594 ms 1.182 ms 6 lu.fr1.fr.geant.net (62.40.96.85) 18.458 ms 17.554 ms 17.908 ms 7 fr.de1.de.geant.net (62.40.96.49) 26.612 ms 27.546 ms 26.033 ms 8 de1-1.de2.de.geant.net (62.40.96.130) 26.984 ms 26.284 ms 26.074 ms 9 abilene-gtren-gw.de2.de.geant.net (62.40.103.254) 107.297 ms 106.995 ms 108.115 ms 10 clev-nycm.abilene.ucaid.edu (198.32.8.29) 120.284 ms 120.635 ms 119.377 ms 11 abilene.psc.net (192.88.115.122) 122.696 ms 122.362 ms 123.475 ms 12 cert.psc.net (198.32.224.44) 123.748 ms 123.222 ms 123.718 ms 13 * * *

Avec firewall, cette commande donne les mmes rsultats ; elle affiche le chemin parcouru par un paquet pour arriver sa destination. Vu que le site www.cert.org interdit probablement les traceroute venant de lextrieur, cette commande ne sait dterminer le chemin jusqu la vrai cible, mais sarrte ladresse IP 198.32.224.44 qui est probablement un routeur reli directement avec le rseau local du CERT. Remarque : La premire fois que jai excut traceroute avec la prsence de mon firewall, jai eu les messages suivants :
traceroute to electra.red.cert.org (192.88.209.14), 30 hops max, 38 byte packets traceroute: sendto: Operation not permitted 1 traceroute: wrote electra.red.cert.org 38 chars, ret=-1 deimos.infogest.cu.lu (193.168.74.227) 0.231 mstraceroute: sendto: Operation not permitted traceroute: wrote electra.red.cert.org 38 chars, ret=-1 0.151 mstraceroute: sendto: Operation not permitted traceroute: wrote electra.red.cert.org 38 chars, ret=-1 0.123 ms

Jai alors revu mes rgles pour confirmer que jadmets lutilisation de traceroute partant de ma machine. La rgle suivante devrait laisser passer les traceroute sortants :
ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $TRACEROUTE_SRC_PORTS -d $ANYWHERE $TRACEROUTE_DEST_PORTS -j ACCEPT

Jai alors excut la commande encore une fois avec loption v (mode verbeux) pour voir si elle maffiche des rsultats plus dtaills. Mais comme par miracle, elle arrive cette fois-ci dterminer les routeurs par lesquels passerait un paquet. Enfin, je me suis rappel que Robert L. Ziegler dit dans son ouvrage Linux Firewalls que traceroute utilise souvent les ports contenus dans ces deux variables :
TRACEROUTE_SRC_PORTS="32769:65535" # Traceroute: ports d'expedition TRACEROUTE_DEST_PORTS="33434:33523" # Traceroute: ports de destination

Je suppose donc que traceroute avait utilis ce moment des ports diffrents. Si vous avez donc un jour un problme avec traceroute, essayez simplement encore une fois ou utilisez loption I qui envoie des paquets ICMP echo au lieu de paquets UDP.

Page 59 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Lutilisation de loption I fonctionne donc aussi avec mon firewall, car jaccepte les ping sortants.

nslookup
Cet utilitaire interroge un serveur DNS (serveur de noms) pour avoir des informations sur un domaine ou une machine. Exemple : > nslookup ldv.cu.lu
Server: Address: 193.168.74.130 193.168.74.130#53

ldv.cu.lu canonical name = leonardo-da-vinci.infogest.cu.lu. Name: leonardo-da-vinci.infogest.cu.lu Address: 193.168.74.130

whois
Cette commande fait une demande auprs d'un serveur whois et imprime les rsultats. Ceci est utile lorsque vous voulez connatre l'identit d'un intrus sur votre machine. Exemple : > whois cert
[whois.crsnic.net] Whois Server Version 1.3 ... CERT.ORG CERT.NET CERT.COM To single out one record, look it up with "xxx", where xxx is one of the of the records displayed above. If the records are the same, look them up with "=xxx" to receive a full display for each record. ...

Pour choisir un des domains proposes, je lance la commande > whois =cert.org
[whois.crsnic.net] Whois Server Version 1.3 ... Server Name: CERT.ORG IP Address: 192.88.209.5 Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Domain Name: CERT.ORG Registrar: NETWORK SOLUTIONS, INC. Whois Server: whois.networksolutions.com Referral URL: http://www.networksolutions.com Name Server: CERT.ORG Name Server: TICTAC.CERT.ORG Updated Date: 05-nov-2001 ... Registrant:

Page 60 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

CERT Coordination Center (CERT-DOM) Software Engineering Inst. Carnegie Mellon University Pittsburgh, PA 15213 Domain Name: CERT.ORG Administrative Contact, Technical Contact: CERT Coordination Center (CERT) Software Engineering Institute Carnegie Mellon University 4500 Fifth Avenue Pittsburgh, PA 15213 US +1 412 268-7090 Fax- +1 412 268-6989 cert@CERT.ORG

Record expires on 01-Jan-2003. Record created on 31-Dec-1991. Database last updated on 10-May-2002 07:51:21 EDT. Domain servers in listed order: CERT.ORG TICTAC.CERT.ORG 192.88.209.5 192.88.209.21

Cette commande donne donc un grand nombre dinformations sur une machine donne, entre autre les donnes sur la/les personne(s) de contact en cas de problme avec ce site.

route
Cette commande affiche ou manipule la table de routage IP du noyau (kernel).

D'abord quelques explications:


Un routeur est une machine ayant plusieurs cartes rseau dont chacune est relie un rseau diffrent qui permet de choisir le chemin que les paquets (plus prcisment les datagrammes) vont emprunter pour arriver leur destination. Les rseaux auquel le routeur est reli peuvent tre relis eux-mmes d'autres rseaux que le routeur ne connat pas.

Chemin des paquets

routeur

routeur

routeur

LAN

Hte Hte Si l'adresse IP de l'metteur fait partie du rseau duquel le datagramme provient, le routeur ne fait rien, car la machine vise aura en toute rigueur reu ce mme datagramme. Sinon, le routeur envoie le datagramme au rseau suivant. Pour le dterminer, il consulte sa table de routage, une table qui dfinit le chemin emprunter pour une adresse donne.

Page 61 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Si la table routage est construite manuellement par l'administrateur, on parle d'un routage statique (pour de petits rseaux). Si le routeur construit lui-mme la table de routage en fonction des informations qu'il reoit (par l'intermdiaire de protocoles de routage comme RIP et OSPF), on parle de routage dynamique. La table de routage est une table de correspondance entre l'adresse de la machine vise et le nud suivant auquel le routeur doit dlivrer le message. En ralit il suffit que le message soit dlivr sur le rseau qui contient la machine. Le routeur stocke donc seulement l'identificateur du rseau de l'adresse IP. La table de routage contient donc les colonnes "Adresse de destination", "Adresse du prochain routeur directement accessible" et "Interface qui est reli ce rseau". Si le destinataire appartient un rseau non rfrenc dans la table de routage, le routeur utilise une route par dfaut: la passerelle par dfaut.

La commande route:
Affichage

Par dfaut, elle affiche la table de routage :


Table de routage IP du noyau Destination Passerelle 193.168.74.0 * 127.0.0.0 * default bs-rt1-et65.cu. Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Indic U U UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 lo eth0

Destination est l'adresse IP de destination. Passerelle est l'adresse IP du prochain routeur. Si elle est indfinie, le caractre '*' est affich. Genmask est le masque de rseau pour le rseau destinataire. Si Genmask a la valeur 255.255.255.255, alors Destination dsigne un hte et si Genmask vaut 0.0.0.0 la route par dfaut (default) est utilise. Indic est un champ qui contient des indicateurs (flags). Des indicateurs sont, par exemple:

S: la route a t ajoute manuellement Iface est l'interface vers laquelle les paquets empruntant cette route seront envoys. L'option -n affiche les adresses numriques au lieu d'essayer de les rsoudre. L'option -e affiche la table dans le format de la commande netstat -r. -ee affiche toutes les informations des 2 formats d'affichage. Exemple: route -ne
Table de routage IP du noyau Destination Passerelle 193.168.74.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 193.168.74.129 Genmask 255.255.255.0 255.0.0.0 0.0.0.0 Indic U U UG MSS 40 40 40 Fentre irtt Iface 0 0 eth0 0 0 lo 0 0 eth0

U: up -> la route est active G: la route dsigne une passerelle, sinon c'est une route directe H: la route pointe vers un hte, sinon vers un rseau

Manipulation de la table de routage: route {add|del} [-net|-host] cible [autres options]

Page 62 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

-net exprime que la cible est un rseau, -host dit que c'est un hte. L'option add ajoute une route, del en supprime une. La cible est l'adresse IP ou le nom de l'hte ou du rseau de destination. Avec l'option netmask, on peut spcifier le masque rseau de la route emprunter. Avec l'option gw, on dit que tout paquet IP envoy cette adresse sera rout par la passerelle spcifie. L'option reject installe une route bloquante qui force l'chec d'une recherche. Si on ne veut pas que le noyau essaie de dterminer le priphrique par lequel les datagrammes doivent sortir, on peut le spcifier soi-mme avec l'option dev If. Exemples : Si nous voulons rejeter les paquets venant du rseau priv 10.x.x.x, nous crirons :
route add -net 10.0.0.0 netmask 255.0.0.0 reject

Pour spcifier la passerelle par dfaut, voici la syntaxe: route add default gw 193.168.74.129

Nmap Description
nmap est un outil de scurit qui permet de scanner des rseaux ou machines individuelles pour dterminer quels sont les htes connects (dans un rseau) et quels services ils offrent. Le rsultat de l'excution de nmap nous donne normalement une liste de ports intressants sur la machine scanne. Le rsultat comprend le numro du service, son nom, son tat et le protocole.
Exemple:

scanner localhost Par localhost est dsign l'interface loopback , qu'on a mme si on n'a pas de connexion rseau relle. Localhost correspond l'adresse IP 127.0.0.1; son nom et nickname peut tre dit dans Network Configuration du Control Panel.
[root@localhost /root]# nmap localhost Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1546 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 25/tcp open smtp 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

nmap teste quels services sont offerts par la machine cible, dans ce cas la machine dont est lanc nmap. Vu que mon firewall laisse passer tous les paquets IP dont l'adresse de l'expditeur est 127.0.0.1, tous les services actifs (dmons) sont affichs. Un service a toujours un numro entre 1 et 65535: le port. Le nom est dtermin, s'il en existe un, partir su fichier /etc/services qui comprend un grand nombre de numros de service avec leur nom symbolique.

Page 63 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

L'tat d'un service est soit open, filtered, unfiltered. - Open signifie que la machine cible acceptera des connexions sur ce port. - Filtered signifie qu'il y a un firewall ou autre obstacle qui empche nmap de dterminer si le port est ouvert ou non. - Unfiltered ou filtered veut dire que le port n'est pas probablement pas filtr par un firewall, mais que le service en question n'est pas prsent sur la machine. Vu que nmap donne la possibilit de scanner des rseaux entiers, la dernire ligne indique le nombre de machines qui ont t analyses. nmap est le scanneur de ports le plus souvent utilis par les hackers. Il est donc utile que nous utilisons le mme outil pour tester notre systme.

Options
Nmap [Type(s) de scan] [Options] <hte ou rseau #1 [#N]> <hte ou rseau #1 [#N]>

Nom de lhte Adresse IP de lhte Nom ou adresse IP de lhte avec masque (entre 0 et 32) 193.168.74.0/24 scanne le rseau de classe C, donc tous les IPs de 193.168.74.0 193.168.74.255 Adresse IP avec toiles : 193.168.74.* scanne ce mme rseau Autre notation : 193.168.74.0,1,2-255 scanne encore une fois le mme rseau.

Exemples : Voici un autre exemple dutilisation de nmap. Cette fois-ci, nmap est excut sur une autre machine du mme rseau local. Sur ma machine, jai dmarr le dmon du Secure Shell (par la commande sshd). Sans firewall, nmap 193.168.74.227 affiche:
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1547 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 26 seconds

Les 2 ports ouverts sont le port ssh et le port X11. ssh (Secure SHell) est un service qui donne un terminal virtuel distance. Pour des raisons de scurit, il doit remplacer les services moins srs comme telnet, rlogin et rsh qui permettent de faire la mme chose. X11 ou X-Windows est linterface graphique de Linux. En fait, javais dmarr linterface graphique cause de son confort dutilisation, mais un firewall ne doit pas ncessairement avoir une interface graphique, surtout si cest un firewall bastion qui ne sert qu filtrer des paquets. Le port 25 (smtp) nest pas ouvert, contrairement au test avec nmap sur loopback, car mon ordinateur nest pas destin offrir un service e-mail, comme sendmail, par exemple.

Page 64 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Remarque : pour toutes les options ci-aprs, nmap affiche chaque fois la mme chose si le firewall nest pas actif, sauf avec loption O qui essaie de dterminer quel systme dexploitation la machine cible utilise. Si le firewall est par contre actif, nmap 193.168.74.227 affiche:
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Note: Host seems down. If it is really up, but blocking our ping probes, try -P0 Nmap run completed -- 1 IP address (0 hosts up) scanned in 30 seconds

nmap croit que la machine scanne nest mme pas connecte Internet. La raison pour cela est quil envoie dabord un paquet ping pour voir si la machine attaque rpond. Si elle rpond, nmap est sr quelle est connecte et effectue son scan ; si elle ne rpond pas, nmap suppose quelle nest pas connecte et sarrte. Nmap nous conseille nanmoins dutiliser loption P0 pour omettre le premier paquet ping et scanner directement les ports. Comme notre firewall interdit tout le monde de nous pinger, sauf notre Internet Service Provider, nmap naffiche pas de rsultats pour tous les port-scans qui ne comportent pas loption -P0. Ce fait va certainement effaroucher beaucoup dattaquants potentiels, car ils saperoivent que notre machine est bien scurise. En fait, pas tous les firewalls bloquent les paquets ping, parce quils les estiment essentiels. Le fait de les bloquer montre aux hackers que notre machine est scurise de faon presque paranoaque. Cest la raison pour laquelle la plupart des exemples ci-dessous utilisent aussi loption P0. Sinon, nous recevions toujours des rsultats comme dans lexemple ci-dessus. Vrifions que nous pouvons quand-mme obtenir un terminal distance avec ssh partir de la machine de ltudiant Ferreira :
[ferreira@spa ferreira]$ ssh -l Serge 193.168.74.227 Serge@193.168.74.227's password: Last login: Thu Dec 13 10:00:14 2001 from deimos [Serge@Deimos Serge]$ ipchains -L ipchains: Permission denied [Serge@Deimos Serge]$ ls C++ Desktop FW linux new TP-C [Serge@Deimos Serge]$ exit Connection to 193.168.74.227 closed. [ferreira@spa ferreira]$

Loption l de la commande ssh permet de spcifier le nom dutilisateur. Si nous entrons comme nom dutilisateur root, un message apparat quon ne peut pas se connecter comme root, parce quon aurait trop de pouvoir. Le mot de passe est alors demand, mais il nest pas affich quand nous lentrons au clavier. Comme vous le voyez, il est impossible de lister les rgles ipchains comme utilisateur normal, dautres commandes fonctionnent quand-mme (exemple : ls).
Types de scan

-sT TCP connect() scan:

Page 65 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

nmap essaiera de faire l'appel systme connect sur les ports de la machine cible et affiche les rsultats de cette action. Excutons dappeler nmap avec les options sT et P0 : > nmap -sT -P0 193.168.74.227
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1034 ports scanned but not shown below are in state: filtered) Port State Service 22/tcp open ssh 23/tcp closed telnet ... closed ... 65301/tcp closed pcanywhere Nmap run completed -- 1 IP address (1 host up) scanned in 135 seconds

Ceci montre que le seul service TCP qui est accessible sur notre machine est ssh. Tous les autres ports sont filtered ou closed, ils ne sont donc pas accessibles de lextrieur. -sS TCP SYN scan: Ici, on n'ouvre pas une connexion TCP complte. Cette technique envoie un paquet SYN (paquet IP dont le flag SYN est mis), comme si on faisait une connexion normale et nmap attend la rponse. Si on reoit un paquet SYN/ACK, le port de la machine cible est ouvert (en coute). Si le paquet qu'on reoit a, par contre, le flag RST(qui est envoy par le kernel dans le cas que le port n'est pas ouvert), alors le port en question n'est pas en coute. Avec cette technique, l'utilisateur de la machine cible ne dtecte normalement pas que ses ports ont t scanns. Avec firewall, nmap affiche la mme chose quavec loption sT. De nouveau, seul le port 22 est ouvert. Le port 23 (telnet) nest pas filtr par notre firewall, mais le dmon telnetd na pas t dmarr sur la machine en question, car telnet est moins sr que ssh et offre les mmes services. -sF -sX -sN Stealth (scan de type mi-ouvert ) FIN, Xmas Tree et le mode NULL scan: Parfois l'option -sS n'est pas assez clandestine, car sur le serveur, il y a des programmes qui reprent ce type de scan sur quelques ports. Si le port st ferm, le serveur envoie encore une fois un RST, sinon, le port ne prend pas en compte le paquet en question et ne renvoie rien. - L'option -sF envoie des paquets avec le flag FIN. - L'option -sX envoie des paquets avec les flags FIN, URG et PUSH. - L'option -sN envoie des paquets sans flags mis. Ces types de scan ne fonctionnent pas avec des systmes Windows, puisque Microsoft ne respecte pas les conventions. Si une machine a alors des ports ouverts avec l'option -sS et non pas avec une de ces options-ci, on est sr d'avoir faire avec une machine Windows. Excution de : nmap -sF -P0 193.168.74.227
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 527 ports scanned but not shown below are in state: closed) Port State Service 1/tcp open tcpmux 2/tcp open compressnet

Page 66 sur 86

Gaspers Serge
... 21/tcp 24/tcp ... 1023/tcp 6000/tcp open open open open open open

2e anne du D.U.T. en Informatique


... ftp priv-mail ... unknown X11

Mmoire, version finale

Nmap run completed -- 1 IP address (1 host up) scanned in 97 seconds

Avec les options sX et sN, nous obtenons exactement les mmes rsultats, sauf quils prennent un peu moins de temps : 85 et 86 secondes. premire vue, ces rsultats sont trs effrayants, car le port 6000 et tous les ports de 1 1023, except les ports 22 et 23 sont ouverts ! En fait, des ports ouverts ignorent tout simplement des paquets FIN sil ny a pas de connexion ouverte avec la machine dont est mis le paquet FIN. Si un port nest pas accessible, le kernel renvoie normalement un paquet RST (reset) sil obtient un paquet FIN destin ce port. Nmap considre donc que tous les ports desquels il ne reoit pas de rponse sont ouverts. Mais nous avons configur notre firewall de faon ce quil ignore la plupart des paquets qui ne sont pas accepts, il ne renvoie donc pas de paquet RST si un port nest pas accessible. Dans notre cas, le kernel a renvoy un paquet RST quand les ports 22 et 23 ont t scanns. En fait, nous ouvrons ces ports par les rgles suivantes :
# telnet ipchains -A input -p tcp -s any/0 1024:65535 -d $IPADDR 23 -j ACCEPT # ssh ipchains -A input -p tcp -s any/0 1020:65535 -d $IPADDR 22 -j ACCEPT

Tous les autres paquets ont t refuss par la policy :


ipchains -P input DENY

-sP Ping scanning: Cette option est utilise si on veut seulement voir si un hte est connect ou non. Nmap envoie un paquet ICMP echo-request la machine cible. Si cette machine rpond, elle est prsente. Vu que certains sites bloquent des requtes de ce type, nmap envoie aussi (par dfaut) un paquet TCP avec le flag ACK mis en direction du port 80. Si la rponse est un paquet RST, la machine est connecte. Vu que notre firewall bloque tous les ICMP echo-request, sauf ceux qui viennent de notre ISP, lutilisation de sP ne donne aucun rsultat si le firewall est actif.
# ICMP ping: echo-request (type 8) et echo-reply (type 0) # seul notre ISP peut nous pinger ipchains -A input -i eth0 -p icmp -s $MY_ISP 8 -d $IPADDR -j ACCEPT ipchains -A output -i eth0 -p icmp -s $IPADDR 0 -d $MY_ISP -j ACCEPT

-sU UDP scan: Avec cette option, nmap scanne tous les ports UDP de la machine cible en envoyant un paquet

Page 67 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

UDP de 0 octets. Si la rponse est un message ICMP port unreachable , alors nous sommes srs que le port est ferm, sinon, nmap considre que le port est ouvert. Si le scanning UDP parat prendre parfois beaucoup de temps, il ne faut pas dsesprer, c'est normal. La plupart des OS (contrairement Windows) limitent la vitesse de transmission des messages destination unreachable . Linux limite le nombres de ces messages 80 toutes les 4 secondes avec 1/4 de seconde de pnalit si cela excde. Nmap tient compte de cette limite et ralentie son mission de paquets pour ne pas inonder la machine cible par des paquets qui seront ignors par l'hte. Vu que ce type de scan prend beaucoup de temps, je vais seulement scanner les ports UDP de 20 30, le port 139 (partage de rpertoires sous Windows) et les ports 6000 6060 : nmap -P0 -sU -v -p 20-30,139,6000-6060 193.168.74.227
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Host deimos.infogest.cu.lu (193.168.74.227) appears to be up ... good. Initiating UDP Scan against deimos.infogest.cu.lu (193.168.74.227) The UDP Scan took 96 seconds to scan 73 ports. Adding open port 6007/udp Adding open port 6020/udp Adding open port 22/udp .... Adding open port 6040/udp (no udp responses received -- assuming all ports filtered) All 73 scanned ports on deimos.infogest.cu.lu (193.168.74.227) are: filtered Nmap run completed -- 1 IP address (1 host up) scanned in 96 seconds

Aucun des ports scanns na mis une rponse. Cest ce quon pouvait attendre de notre firewall : ces ports sont tous filtrs. -sR RPC scan Les services bass sur RPC ne peuvent pas tre dmarrs par le dmon tpcd. C'est portmap qui contrle les accs et il se base sur les listes /etc/hosts.allow et /etc/hosts.deny. Un service RPC (exemple : NFS : Network File System, utilisation de systmes de fichiers communs par dautres machines du mme rseau) indiquera portmap sur quel port il attend des connexions. Un client demandera portmap le numro de port auquel il doit envoyer ses paquets. L'option -sR de nmap inonde les ports avec les commandes SunRPC NULL pour dcouvrir s'il y a ou non des ports derrire lesquels se cache un dmon RPC. S'il y en a, il essaie de dterminer le programme et sa version. Ainsi, on reoit les mmes informations qu'avec rpcinfo -p , mme si la machine est derrire un firewall. videmment, nous noffrons pas de service RPC, vu quils prsentent tous des problmes potentiels de scurit: nmap -sR -P0 193.168.74.227
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1034 ports scanned but not shown below are in state: filtered) Port State Service (RPC) 22/tcp closed ssh 23/tcp closed telnet 1024/tcp closed kdm ...

Page 68 sur 86

Gaspers Serge
65301/tcp

2e anne du D.U.T. en Informatique


closed pcanywhere

Mmoire, version finale

Nmap run completed -- 1 IP address (1 host up) scanned in 126 seconds

De nouveau, tous les ports sont dans ltat filtr ou les services correspondants ne sont tout simplement pas accessibles. -b <ftp relay host> FTP bounce attack: Avec FTP, il est possible de se connecter un serveur ftp (le <ftp relay host>) et de lui demander de transfrer un fichier n'importe o sur internet. Ceci peut tre exploit pour scanner des ports TCP qui sont gnralement bloqus depuis un serveur ftp proxy .Si le serveur ftp permet l'criture et la lecture dans un rpertoire, il vous est possible d'envoyer des donnes sur des ports trouvs ouverts. Cette technique a surtout un intrt si la machine scanne fait confiance au serveur ftp.
Options gnrales

-P0 Nessaie pas de pinger les htes avant de les scanner. Les rseaux qui n'acceptent pas les requtes ICMP echo peuvent ainsi aussi tre scanns. Si nous omettons cette option, nmap 193.168.74.227 affiche :
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Note: Host seems down. If it is really up, but blocking our ping probes, try -P0 Nmap run completed -- 1 IP address (0 hosts up) scanned in 30 seconds

Nous nobtenons donc pas de rsultats du tout ; nmap assume mme que la machine nest pas connecte. nmap -P0 193.168.74.227 affiche par contre :
Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1034 ports scanned but not shown below are in state: filtered) Port State Service 22/tcp open ssh 23/tcp closed telnet .... closed .... 65301/tcp closed pcanywhere Nmap run completed -- 1 IP address (1 host up) scanned in 128 seconds

Ceci montre que cette option est absolument essentielle du moins pour tester notre firewall. -PT Utilise la technique de ping TCP pour reprer les htes qui sont prsents. Au lieu d'envoyer des paquets ICMP echo, nous envoyons des paquets TCP ACK. Les htes prsents rpondront avec un RST. Le port en question est par dfaut le port 80. Pour spcifier un autre port destinataire, on peut utiliser -PT<ndePort>. Avec cette option, nous obtenons de nouveau les rsultats usuels : > nmap -PT -P0 193.168.74.227

Page 69 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1034 ports scanned but not shown below are in state: filtered) Port State Service 22/tcp closed ssh 23/tcp closed telnet 1024/tcp closed kdm ... 65301/tcp closed pcanywhere Nmap run completed -- 1 IP address (1 host up) scanned in 125 seconds -PS Utilisation de paquets TCP SYN. Les htes prsents rpondront par un RST ou un paquet TCP SYN/ACK. Le rsultat de lutilisation de cette option (et de la prochaine : -PI) sont les mmes que le rsultat prcdent. -PI Utilisation du vrai ping (requte ICMP echo). Cette option regarde quels machines du rseau sont connectes et cherche les adresses broadcast d'un sous-rseau du rseau cible. -PB (par dfaut) Utilisation de -PT et -PI en parallle. (Exemple : voir nmap P0 193.168.74.227) -O Cette option essaie de dterminer le type de systme que nous sommes en train de scanner en utilisant la technique de lauthentification par lempreinte TCP/IP. Sans firewall : Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on deimos.infogest.cu.lu (193.168.74.227): (The 1547 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 6000/tcp open X11 Remote operating system guess: Linux Kernel 2.4.0 - 2.4.9 (X86) Uptime 0.013 days (since Wed May 8 14:51:25 2002) Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds Avec firewall : ... Too many fingerprints match this host for me to give an accurate OS guess

Page 70 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Sans firewall, nmap dtecte correctement que nous utilisons une machine Linux avec un noyeau 2.4.* ; avec firewall, il narrive quand-mme pas dterminer notre systme dexploitation. Si un hacker connat le systme dexploitation de la machine quil veut attaquer, il peut ventuellement essayer dexploiter des failles relatifs au systme dexploitation connues. Il est donc trs important dinstaller toujours les patchs de scurit les plus rcents. -I Cette option active la fonction TCP reverse ident scanning et ne marche que si lhte en question fait fonctionner identd. En fait, le protocole ident permet de dtecter le nom de l'utilisateur qui fait fonctionner n'importe quel processus connect en utilisant TCP, mme si ce processus n'a pas initialis la connexion. Donc vous pouvez, de cette manire vous connecter sur le port 80 et utiliser identd pour trouver si ce serveur est lanc par le root ou non. Ceci ne peut tre fait uniquement que par une connexion complte l'hte distant (c'est dire: l'option de scan -sT). Comme les rsultats avec cette option ne sont pas des rsultats nouveaux, je ne les vais pas lister ici. (cf. option -PT) -f Force les scans par SYN, FIN, XMAS et NULL utiliser de petits fragments de paquets. La fragmentation de len-tte TCP rend plus compliqu aux filtreurs de paquets et aux dtecteurs dintrusion, de dtecter le scan de la machine cible. Daprs les pages man sur nmap, cette option pose des problmes sur certains Systmes dexploitation et avec certains programmes, comme par exemple quelques sniffers, mais je nai pas eu de problmes en utilisant cette option. Les rsultats taient les mmes avec ou sans cette option. -v Cest le mode verbeux (dtaill). Elle donne des renseignements sur ce qui est en train de se passer. (Exemple : voir option -sU) -oN <fichierDeLog> Cre un log du rsultat dans un fichier lisible humainement -oM <fichierDeLog> Cre un log du rsultat dans un fichier utilisable par un ordinateur. Largument - envoie le rsultat vers stdout. -iL <nomDuFichierEntrant> Prend le fichier en entre pour scanner tous les htes quil contient. Les htes sont spars dans le fichier par des espaces, tabulations ou retours chariots. -p <port champ> Cette option dit nmap de scanner les ports <port champ>. Exemple : -p 23,6000-6063 Par dfaut, il scanne tous les ports privilgis et les ports prsents dans le fichier services de nmap.

Page 71 sur 86

Gaspers Serge -F

2e anne du D.U.T. en Informatique

Mmoire, version finale

Scanne seulement lues ports contenus dans le fichier services livr avec nmap. -D <leurre1 [,leurre2] [,ME], > Effectue un scan avec leurres. La cible va croire quelle a t scanne par tous les IPs que vous spcifiez. Normalement, la cible devrait se rendre compte que cette technique a t utilise, mais elle ne sait pas quelle adresse IP est rellement celle qui la scann. ME signifie notre propre adresse. Nous devons lindiquer pour avoir les rsultats du scan. Si ME est omis, nmap placera notre IP alatoirement. Si on met ME en 6e position ou plus tard, beaucoup de dtecteurs de port-scan sont incapables de montrer notre adresse IP.

Page 72 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

10. Conclusion
Aprs avoir vrifi que les dispositifs de protections fonctionnent correctement et que nous navons pas obtenu de rsultats anormaux ou imprvisibles dans les tests, je vais maintenant prsenter dautres programmes de filtrage de paquets.

iptables
Commencons par iptables. Cest le successeur dipchains et il est implment dans les versions 2.4.x du kernel de Linux. Entre les diffrences par rapport ipchains, on peut par exemple citer les suivantes :

Le mot-cl DENY a t remplac par DROP Les rgles sur lordre des options sont plus stricts. Par exemple, les adresses source et destination doivent tre spcifies avant le protocole dans iptables. Une modification importante est quun paquet arrivant qui est destin une autre machine ne traverse plus les chanes input et output, mais seulement la chane forward, ce que je trouve dailleurs plus logique. Par rapport ipchains, iptables offre une nouvelle possibilit conceptuelle : stateful inspection, cest--dire que les paquets peuvent maintenant tre analyss en considrant les paquets antrieurs. Ainsi, on peut par exemple dterminer si un paquet FIN veut vraiement clturer une connexion qui a t ouverte pralablement ou si ce paquet fait partie dun FIN-scan quon peut facilement faire avec nmap (voir loption sF page 66)

ipfilter
Un autre programme de filtrage de paquets qui nest pas spcifique Linux, mais qui est beaucoup plus portable, sappelle ipfilter. Citons les diffrences majeures :

La syntaxe na rien voir avec celle dipchains. Voici lexemple dune rgle avec ipfilter qui accepte les paquets TCP entrants par le modem qui sont destins notre adresse IP et au port 80 et qui viennent de nimporte o:
pass in quick on tun0 proto tcp from any to 193.168.74.227/32 port = 80

Comme iptables, ipfilter peut aussi se souvenir des paquets antrieurs (si on ajoute keep state la fin dune rgle).

Exprience personnelle
Vu que ce projet a requis un important travail de recherche, jai pu approfondir mes connaissances dans plusieurs domaines, dont le systme Linux, les rseaux et bien sr la scurit et les firewalls. Avant cette anne scolaire, je ne connaissais gure le systme dexploitation Linux et je navais que quelques notions de base sur les rseaux. Je navais absolument aucune ide comment tablir un firewall, mais jtais (et je suis) intress par le sujet. Je devais donc mapprocher dun nouvel domaine dont je ne connaissais presque rien. Ce projet de fin dtudes ma apport beaucoup de nouvelles connaissances et une mentalit diffrente ; en effet, je suis maintenant beaucoup plus prudent quand je me connecte Internet quauparavant.

Page 73 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

Je crois que la plupart des gens ne sont pas conscient des problmes de scurit et des risquent quils courent en connectant le rseau de leur petite entreprise Internet. En tout cas, ce projet ma rendu conscient de ces risques et je crois que je naurai plus de difficults pour discuter avec dautres personnes sur lun ou lautre aspect concernant la scurit. Alors que ce projet de fin dtudes se termine ici, jespre toujours pouvoir rester jour en ce qui concerne les questions de scurit, surtout avec lintroduction du nouvel protocole Internet : IPV6.

Page 74 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ANNEXE A : Les srcipts


script principal
#!/bin/sh echo echo "Initialisation du firewall ..." # ------------------------------------------------------------------------------# -------------- INITIALISATION DU FIREWALL ------------------------------------# ------------------------------------------------------------------------------EXTERNAL_INTERFACE="eth0" LOOPBACK_INTERFACE="lo" IPADDR="193.168.74.227" ANYWHERE="any/0" MY_ISP="193.168.74.129" LOOPBACK="127.0.0.0/8" CLASS_A="10.0.0.0/8" CLASS_B="172.16.0.0/12" CLASS_C="192.168.0.0/16" CLASS_D_MULTICAST="224.0.0.0/4" CLASS_E_RESERVED_NET="240.0.0.0/5" BROADCAST_SRC="0.0.0.0" BROADCAST_DEST="255.255.255.255" PRIVPORTS="0:1023" UNPRIVPORTS="1024:65535" OPENWINDOWS_PORT="2000" XWINDOW_PORTS="6000:6063" SOCKS_PORT="1080" NFS_PORT="2049" NAMESERVER="193.168.74.130" SSH_PORTS="1020:1023" TRACEROUTE_SRC_PORTS="32769:65535" TRACEROUTE_DEST_PORTS="33434:33523" # effacer les anciennes regles ipchains -F # policies par defaut ipchains -P input DENY ipchains -P output REJECT ipchains -P forward REJECT # pas de restrictions pour loopback ipchains -A input -i $LOOPBACK_INTERFACE -j ACCEPT ipchains -A output -i $LOOPBACK_INTERFACE -j ACCEPT #lutter contre le TCP SYN flooding en activant les cookies SYN echo 1 >/proc/sys/net/ipv4/tcp_syncookies # Protection contre les adresses IP falsifiees # Activer Source Address Verification for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done # refuser les ICMP-Redirects for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f # # # # # # # # # # # # # # # # # # # # # # # interface connectee a internet loopback mon adresse IP tous les adresses IP adresse du ISP adresses loopback classe A: reseaux prives classe B: reseaux prives classe C: reseaux prives classe D: adresses multicast classe E: adresses reservees expediteur broadcast destinataire broadcast ports privilegies ports non privilegies (TCP) OpenWindows (TCP) X-Windows (TCP) SOCKS (TCP/UDP) NFS (TCP/UDP) DNS (TCP) SSH quatre connexions en parallele Traceroute: ports d'expedition Traceroute: ports de destination

Page 75 sur 86

Gaspers Serge
done

2e anne du D.U.T. en Informatique

Mmoire, version finale

# refuser les paquets routes par l'expediteur for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo 0 > $f done if [ -f /etc/rc.d/rc.firewall.blocked ]; then . /etc/rc.d/rc.firewall.blocked fi # refuser les paquets qui pretendent venir de notre propre adresse IP ipchains -A input -i $EXTERNAL_INTERFACE -s $IPADDR -j DENY -l # refuser paquets si une adresse appartient aux adresses ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_A -j ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_A -j ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_A -j ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_A -j # refuser paquets si une adresse appartient aux adresses ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_B -j ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_B -j ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_B -j ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_B -j # refuser paquets si une adresse appartient aux adresses ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_C -j ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_C -j ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_C -j ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_C -j reservees de la classe A DENY DENY DENY -l DENY -l reservees de la classe B DENY DENY DENY -l DENY -l reservees de la classe C DENY DENY DENY -l DENY -l

# refuser paquets av une adr expediteur qui est une adr loopback ipchains -A input -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY ipchains -A output -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DENY -l # refuser et enregistrer paquets broadcast fautifs ipchains -A input -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j DENY -l ipchains -A input -i $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j DENY -l # refuser paquets av adr expediteur de classe D multicast ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j DENY -l ipchains -A output -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j REJECT -l # empecher l'envoi de paquets multicast ipchains -A output -i $EXTERNAL_INTERFACE -d $CLASS_D_MULTICAST -j REJECT -l # interdire les paquets multicast, car je ne vais pas les utiliser ipchains -A input -i $EXTERNAL_INTERFACE -d $CLASS_D_MULTICAST -j REJECT -l # refuser les adr IP reservees de la classe E ipchains -A input -i $EXTERNAL_INTERFACE -s $CLASS_E_RESERVED_NET -j DENY -l # refuser les adr reservees par l'IANA # 0.*.*.*, 1.*.*.*, 2.*.*.*, 5.*.*.*, # 31.*.*.*, 37.*.*.*, 39.*.*.*, 41.*.*.*, ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE ipchains -A input -i $EXTERNAL_INTERFACE 7.*.*.*, 23.*.*.*, 27.*.*.* 42.*.*.*, 58-60.*.*.* -s 1.0.0.0/8 -j DENY -l -s 2.0.0.0/8 -j DENY -l -s 5.0.0.0/8 -j DENY -l -s 7.0.0.0/8 -j DENY -l -s 23.0.0.0/8 -j DENY -l -s 27.0.0.0/8 -j DENY -l -s 31.0.0.0/8 -j DENY -l

Page 76 sur 86

Gaspers Serge
ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A # 65-79 ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A # 80-96 ipchains -A # 96-111 ipchains -A # 112-126 ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A ipchains -A # 217-219 ipchains -A ipchains -A ipchains -A # 220-223 ipchains -A input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input input -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i

2e anne du D.U.T. en Informatique


$EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s 37.0.0.0/8 39.0.0.0/8 41.0.0.0/8 42.0.0.0/8 58.0.0.0/7 60.0.0.0/8 65.0.0.0/8 66.0.0.0/8 67.0.0.0/8 68.0.0.0/8 69.0.0.0/8 70.0.0.0/8 71.0.0.0/8 72.0.0.0/8 73.0.0.0/8 74.0.0.0/8 75.0.0.0/8 76.0.0.0/8 77.0.0.0/8 78.0.0.0/8 79.0.0.0/8 -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j

Mmoire, version finale


DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l

-i $EXTERNAL_INTERFACE -s -i $EXTERNAL_INTERFACE -s -i -i -i -i -i -i -i -i -i -i -i -i -i -i -i $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE $EXTERNAL_INTERFACE -s -s -s -s -s -s -s -s -s -s -s -s -s -s -s

80.0.0.0/4 -j DENY -l 96.0.0.0/8 -j DENY -l 112.0.0.0/8 113.0.0.0/8 114.0.0.0/8 115.0.0.0/8 116.0.0.0/8 117.0.0.0/8 118.0.0.0/8 119.0.0.0/8 120.0.0.0/8 121.0.0.0/8 122.0.0.0/8 123.0.0.0/8 124.0.0.0/8 125.0.0.0/8 126.0.0.0/8 -j -j -j -j -j -j -j -j -j -j -j -j -j -j -j DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY DENY -l -l -l -l -l -l -l -l -l -l -l -l -l -l -l

-i $EXTERNAL_INTERFACE -s 217.0.0.0/8 -j DENY -l -i $EXTERNAL_INTERFACE -s 218.0.0.0/8 -j DENY -l -i $EXTERNAL_INTERFACE -s 219.0.0.0/8 -j DENY -l -i $EXTERNAL_INTERFACE -s 220.0.0.0/6 -j DENY -l

# ------------------------------------------------------------------------------# -------------- FILTRER LES MESSAGES ICMP -------------------------------------# ------------------------------------------------------------------------------# ICMP source-quench (type 4) ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 4 ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 4 ACCEPT -d $IPADDR -j

-d $ANYWHERE -j

# ICMP parameter-problem (type 12) ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 12 -d $IPADDR ACCEPT

-j

Page 77 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale


12 -d $ANYWHERE -j

ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR ACCEPT

# ICMP destination unreachable (type 3) ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 3 -d $IPADDR -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 3 -d $MY_ISP -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR fragmentation-needed -d $ANYWHERE -j ACCEPT # ICMP time-exceeded (type 11) ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE 11 -d $IPADDR ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR 11 -d $MY_ISP ACCEPT # ICMP ping: echo-request (type 8) et echo-reply (type 0) # nous pouvons pinger tout le monde ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $ANYWHERE ACCEPT # seul notre ISP peut nous pinger ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -s $MY_ISP ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -s $IPADDR ACCEPT -j -j

8 -d $ANYWHERE -j 0 -d $IPADDR 8 -d $IPADDR 0 -d $MY_ISP -j -j -j

# smurf-attaques ipchains -A input -i $EXTERNAL_INTERFACE -p icmp -d $BROADCAST_DEST DENY -l ipchains -A output -i $EXTERNAL_INTERFACE -p icmp -d $BROADCAST_DEST REJECT l

-j -j

# ------------------------------------------------------------------------------# -------------- PROTEGER LES SERVICES UTILISANT DES PORTS FIXES NON PRIVILEGIES # ------------------------------------------------------------------------------# refuser la connexion a OpenWindows ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -s $IPADDR -d $ANYWHERE $OPENWINDOWS_PORT -j REJECT # refuser la connexion a un x-serveur ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -s $IPADDR -d $ANYWHERE $XWINDOW_PORTS -j REJECT # rejeter la connexion d'autrui a notre serveur ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y -d $IPADDR $XWINDOW_PORTS -j DENY -l # eliminer toutes les connexions a socks ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -s $IPADDR -d $ANYWHERE $SOCKS_PORT -j REJECT -l ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -y -d $IPADDR $SOCKS_PORT -j DENY -l # NFS ne ipchains DENY -l # cas du ipchains DENY -l devrait pas etre actif; s'il l'est quand meme, l'acces sera bloque -A input -i $EXTERNAL_INTERFACE -p udp -d $IPADDR $NFS_PORT -j mode TCP de NFS (qui est quand meme rare) -A input -i $EXTERNAL_INTERFACE -p tcp -y -d $IPADDR $NFS_PORT -j

Page 78 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -y -d $ANYWHERE $NFS_PORT -j DENY -l # ------------------------------------------------------------------------------# -------------- ADMETTRE LES SERVICES NECESSAIRES -----------------------------# ------------------------------------------------------------------------------# DNS ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $NAMESERVER 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT # cas rare ou les informations envoyes par le serveur DNS sont trop grandes pour un datagramme UDP ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $NAMESERVER 53 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $NAMESERVER 53 -d $IPADDR $UNPRIVPORTS -j ACCEPT # auth # accepter les demandes d'auth ipchains -A output -i $EXTERNAL_INTERFACE -p tcp $ANYWHERE 113 -j ACCEPT

-s $IPADDR $UNPRIVPORTS -d

ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 113 -d $IPADDR $UNPRIVPORTS -j ACCEPT # message d'erreur lors d'une demande auth venant de l'exterieur ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE -d $IPADDR 113 -j REJECT # ------------------------------------------------------------------------------# -------------- SERVICES TCP FREQUENTS ----------------------------------------# ------------------------------------------------------------------------------# telnet # il est conseiller de mettre ces rgles sous commentaires, vu que telnet ne # devrait pas tre utilis, utilisez plutt ssh # connexion a d'autres serveurs ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 23 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 23 -d $IPADDR $UNPRIVPORTS -j ACCEPT # connexion a cette machine ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR 23 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR 23 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT # ssh # acces a des sites externes par ssh ipchains -A output -i $EXTERNAL_INTERFACE -p tcp $ANYWHERE 22 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp $ANYWHERE 22 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp $SSH_PORTS -j ACCEPT # acces a ce serveur par des clients externes ipchains -A input -i $EXTERNAL_INTERFACE -p tcp $IPADDR 22 -j ACCEPT

-s $IPADDR $UNPRIVPORTS -d ! -y -s $ANYWHERE 22 -d $IPADDR -s $IPADDR $SSH_PORTS -d ! -y -s $ANYWHERE 22 -d $IPADDR -s $ANYWHERE $UNPRIVPORTS -d

Page 79 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR 22 -d $ANYWHERE $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $SSH_PORTS -d $IPADDR 22 -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR 22 -d $ANYWHERE $SSH_PORTS -j ACCEPT # ftp # activer les connexions de controle aux serveurs ftp ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 21 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 21 -d $IPADDR $UNPRIVPORTS -j ACCEPT # canaux de data pour le mode actif ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE 20 -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 20 -j ACCEPT # canaux de data pour le mode passif (nouveau): ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE $UNPRIVPORTS d $IPADDR $UNPRIVPORTS -j ACCEPT # http (www) # acces a des sites web comme client ipchains -A output -i $EXTERNAL_INTERFACE $ANYWHERE 80 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE $UNPRIVPORTS -j ACCEPT # https (ssl = Secure Socket Layer) ipchains -A output -i $EXTERNAL_INTERFACE $ANYWHERE 443 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE $UNPRIVPORTS -j ACCEPT

-p tcp -s $IPADDR $UNPRIVPORTS -d -p tcp ! -y -s $ANYWHERE 80 -d $IPADDR -p tcp -s $IPADDR $UNPRIVPORTS -d -p tcp ! -y -s $ANYWHERE 443 -d $IPADDR

# whois # acces a des serveurs whois ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 43 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 43 -d $IPADDR $UNPRIVPORTS -j ACCEPT # gopher # acces a des serveurs gopher ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 70 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 70 -d $IPADDR $UNPRIVPORTS -j ACCEPT # wais (=Wide Area Information Servers) ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 210 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 210 -d $IPADDR $UNPRIVPORTS -j ACCEPT #irc: communication comme client a des serveurs et a d'autres clients ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE 6667 -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE 6667 -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp -s $IPADDR $UNPRIVPORTS -d $ANYWHERE $UNPRIVPORTS -j ACCEPT

Page 80 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ipchains -A input -i $EXTERNAL_INTERFACE -p tcp ! -y -s $ANYWHERE $UNPRIVPORTS d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE $UNPRIVPORTS -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERNAL_INTERFACE -p tcp ! -y -s $IPADDR $UNPRIVPORTS -d $ANYWHERE $UNPRIVPORTS -j ACCEPT # ------------------------------------------------------------------------------# -------------- SERVICES UDP FREQUENTS ----------------------------------------# ------------------------------------------------------------------------------# traceroute # envoi traceroute ipchains -A output -i $EXTERNAL_INTERFACE -p udp -s $IPADDR $TRACEROUTE_SRC_PORTS -d $ANYWHERE $TRACEROUTE_DEST_PORTS -j ACCEPT # traceroute arrivant de mon ISP ipchains -A input -i $EXTERNAL_INTERFACE -p udp -s $MY_ISP $TRACEROUTE_SRC_PORTS -d $IPADDR $TRACEROUTE_DEST_PORTS -j ACCEPT #logger tous les paquets rejetes par la policy (en fait par la regle suivante) ipchains -A input -i $EXTERNAL_INTERFACE -j DENY -l echo "Fini." echo exit 0

Autres scripts utiles accept-all


Excutez ce script si vous voulez accepter tous les paquets.
#!/bin/sh ipchains -F ipchains -P input ACCEPT ipchains -P output ACCEPT ipchains -P forward ACCEPT

block-ip
Ajouter des rgles dans le fichier rc.firewall.blocked pour interdire les paquets arrivants de certaines addresses IP, avec lesquels vous avez eu de mauvaises expriences ou qui sont connus dappartenir des hackers malintentionns.
#!/bin/sh EXTERNAL_INTERFACE = "eth0" # creation de fichier qui contient les ip bloques s'il n'existe pas encore if [ ! -f /etc/rc.d/rc.firewall.blocked ]; then touch /etc/rc.d/rc.firewall.blocked fi # inserer une nouvelle regle au debut de la input chain ipchains -i input -i $EXTERNAL_INTERFACE -s $1 -j DENY # inserer une nouvelle regle a la fin du fichier des ip bloques echo ipchains -i input -i $EXTERNAL_INTERFACE -s $1 -j DENY >> /etc/rc.d/rc.firewall.blocked

Page 81 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

unblock-ip
Effacer une rgle temporairement (jusqu la prochaine excution du script firewall) qui vise interdire les paquets entrants de certaines adresses IP.
#!/bin/sh EXTERNAL_INTERFACE="eth0" ipchains -D input -i $EXTERNAL_INTERFACE -s $1 -j DENY

Page 82 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ANNEXE B : Ressources
Livres : Linux Firewalls
Auteur: Robert L. Ziegler Editeur : New Riders ISBN : 0-7357-0900-9

linux firewalls konzeption und implementierung fr kleine netzwerke und PCs


Traduction en allemand de luvre de Robert L. Ziegler Editeur : Markt+Technik Verlag ISBN : 3-8272-5849-9

Sites Internet (principaux):


www.cert.org Le site principal du CERT/CC qui publie tous les articles des diffrents CERTs www.surfnet.nl/innovatie/surf-ace/security/doc/skey.html description du programme S/Key ( one-time password) www.securiteam.com/securityreviews/2GUQBSASAA.html explication des one-time passwords en gnral www.geocities.com/SiliconValley/1947/Ftpbounc.htm bonne description de lattaque FTP bounce http://www.geocities.com/SiliconValley/1947/Tcpcont.htm notions de base sur le protocole TCP/IP www.redhat.com/docs/manuals/linux/RHL-6.2-Manual/ref-guide/s1-sysadmin-boot.html documentation de RedHat sur le dmarrage de la machine et les Runlevels http://www.dsinet.org/textfiles/faqs/alt-hacking-FAQ/19.html exemple du danger des mta-caractres dans les scripts CGI http://webservices.web.cern.ch/WebServices/AuthoringDoc/Scripting/insecure_cgis.htm les possibilits dexploitation de scripts CGI non scuriss http://www.slac.stanford.edu/slac/www/resource/how-to-use/cgi-rexx/cgi-security.html recommandations pour crire des scripts CGI plus scuriss http://www.linux-france.org/article/cel/alcove/firewall.html/index.html documentation gnrale assez complte des firewalls sous Linux en franais http://www.sans.org/top20.htm le top 20 des vulnrabilits pour diffrentes plate-formes

Page 83 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

http://newdata.box.sk/2000a/papers/audit.html recommandations pour les tests dun firewall http://www.sit.ulaval.ca/securite/doc/unix/problemes-de-configuration.html description des problmes frquents de configuration des systmes UNIX qui peuvent tre exploits http://www.securiteinfo.com trs bon site franais qui explique clairement les diffrentes techniques dattaque, mais dont les solutions proposes sont trs sommaires. http://www.rfc-editor.org/overview.html vous trouverez ici tous les Requets for Comments http://membres.lycos.fr/web2k site franais expliquant les notions de base des rseaux et de lInternet de faon ce que tout le monde puisse les comprendre. Le langage utilis est trs peu technique. http://www.commentcamarche.net documentation franaise sur pratiquement tous les domaines de linformatique. Jai consult surtout la description des protocoles Internet. http://www.nic.fr/guides/dns-intro/index.html fonctionnement du DNS http://cr.yp.to/syncookies.html description des SYN cookies http://www.guill.net/reseaux/Spoofing.html description et remdes du IP Spoofing

Pages Man et Howtos :


man IPCHAINS man NMAP man NETSTAT man SSHD(8) man IFCONFIG man TRACEROUTE

Linux IPCHAINS-HOWTO Linux IP Masquerade Mini-HOWTO

Page 84 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

ANNEXE C: Index
A
ACCEPT...................................................................26 ACK..........................................................................16 Adresse IP.................................................................11 anacron.....................................................................22 Application-Level Gateways.......................................8 Architecture des firewalls...........................................8 ARP..........................................................................13 IP Masquerading.......................................................28 IP Spoofing...............................................................43 ipchains...............................................................21, 30 ipfilter.......................................................................75 iptables................................................................21, 75 ISP............................................................................34

L
local..........................................................................22 localhost....................................................................12 loopback........................................................12, 33, 34

B
Black Hats..................................................................6 Blocage de comptes..................................................47 Buffer Overflow........................................................48

M
Masquage dIP..........................................................28 mta-caractre...........................................................49 mitraillage de courrier...............................................46 mot de passe..............................................................47 mountd......................................................................49 multicast...................................................................35

C
camouflage dIP........................................................29 CERT..........................................................................6 CGI...........................................................................49 chargen.....................................................................42 choke..........................................................................9 Circuit-Level Firewalls...............................................8 cookie SYN...............................................................42 couche Application...................................................11 couche Liaison..........................................................11 couche Rseau..........................................................11 couche Transport.......................................................11 Cracker.......................................................................6 crond.........................................................................22

N
netstat........................................................................58 network.....................................................................21 Nmap........................................................................65 nslookup...................................................................62

O
Open-Windows.........................................................36 output........................................................................26

D
dmon.......................................................................14 Denial of Service......................................................41 DENY.......................................................................26 DNS....................................................................22, 37

P
ping...........................................................................59 ping de la Mort..........................................................47 ping of death.............................................................47 pirate...........................................................................6 policy..................................................................26, 33 POP...........................................................................49 Port...........................................................................14 PSH...........................................................................16

E
echo..........................................................................42 Email Bombing.........................................................46

F
Fausses adresses........................................................34 filtrage de paquets.................................................7, 26 FIN............................................................................16 Firewall bastion..........................................................9 firewall hybride...........................................................8 firewall personnel.......................................................7 Firewall personnel.......................................................9 forward.....................................................................26 FTP...........................................................................51 FTP bounce...............................................................55

R
Rgles gnrales.......................................................33 REJECT....................................................................26 RFC..........................................................................28 routage des paquets par lexpditeur.........................34 route..........................................................................63 RST...........................................................................16 Runlevel-Manager....................................................18

S
S/KEY.......................................................................47 SafeWord..................................................................48 Secure ID..................................................................48 sendmail....................................................................22 smurf.........................................................................43 socket........................................................................15 Sous-rseaux IP........................................................12 Spamming.................................................................46 SSH...........................................................................38 sshd...........................................................................21 SYN..........................................................................16

H
HTTP........................................................................37

I
IANA........................................................................34 ICMP..................................................................13, 35 ICMP-redirects.........................................................33 ifconfig.....................................................................60 IMAP........................................................................49 inetd..........................................................................22 input..........................................................................26 Installation................................................................39 intrusion......................................................................6 IP 11, 12

T
table de routage.........................................................63 TCP.....................................................................15, 37 TCP SYN-Flooding..................................................41

Page 85 sur 86

Gaspers Serge

2e anne du D.U.T. en Informatique

Mmoire, version finale

TCP/IP......................................................................11 TFTP.........................................................................48 Three-Way Handshake..............................................17 traceroute..................................................................60 Traceroute.................................................................39

utilitaires...................................................................58

W
White Hats..................................................................6 whois........................................................................62 www.........................................................................37

U
UDP....................................................................15, 39 URG..........................................................................16

X
X-Windows...............................................................37 xinetd........................................................................22

Page 86 sur 86