<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//FR"> <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <H1>Psionic Portsentry 1.1, le d�fenseur des ports</H1> <H4>ArticleCategory: [Choose a category for your article]</H4> System Administration <H4>AuthorImage:[Here we need a little image form you]</H4> <IMG src="../../common/images/Georges-Tarbouriech.jpg" alt= "[Photo of the Author]" height="124" width="115"> <H4>TranslationInfo:[Author and translation history]</H4> <P>original in en <A href="mailto:georges.t@linuxfocus.org">Georges Tarbouriech</A> </P> <P>en to fr<A href="mailto:georges.t@linuxfocus.org">Georges Tarbouriech</A> </P> <H4>AboutTheAuthor:[A small biography about the author]</H4> <P>Georges est un vieil utilisateur d'Unix. Il pense que la s�curit� informatique est l'un des grands d�fis de ce si�cle. <BR> </P> <H4>Abstract:[Here you write a little summary]</H4> <P> Psionic portsentry fait partie de la suite d'outils du projet Abacus (en plus de portsentry, la suite propose logcheck et hostsentry). C'est un IDS (Syst�me de D�tection d'Intrusion) destin� � la d�tection des scans de ports et � la d�fense active. Il fonctionne sous de nombreuses saveurs d'Unix y compris Mac OS X. La caract�ristique premi�re d'un IDS est d'informer l'administrateur r�seau sur les tentatives d'intrusion. Portsentry va plus loin puisqu'il est capable de r�agir � une attaque. La derni�re version (1.1) de cet outil g�nial est disponible sur <A href= "http://www.psionic.com">http://www.psionic.com</A>, et au fait, la version 1.0 fait maintenant partie de quelques distributions Linux principales (Debian, RedHat...).</P> <H4>ArticleIllustration:[This is the title picture for your article]</H4> <IMG src="../../common/images/illustration214.jpg" hspace="10" width="127" height="95" alt="[illustration]"> <H4>ArticleBody:[The article body]</H4> <H2>Pourquoi utiliser portsentry ?</H2> <P> Pendant la derni�re d�cennie, les r�seaux ont b�n�fici� d'une croissance � grande vitesse. Le but �tait de permettre la communication entre des machines fonctionnant sous diff�rents OS. Ainsi, les syst�mes de r�seau propri�taires se sont vus petit � petit remplac�s par TCP/IP. Internet a fait le reste ! Aujourd'hui, la plupart des r�seaux sont bas�s sur TCP/IP et TCP/IP est bas� sur les ports. En bref, les ports sont li�s � des programmes (clients ou serveurs). Le serveur est � l'�coute jusqu'� ce qu'un client le contacte afin d'�tablir une connexion. Les services (les programmes mentionn�s ci-dessus) sont assign�s � un port sp�cifique. Sur les syst�mes Unix, le sch�ma d'assignation se trouve dans le fichier /etc/services. Autrement dit, tout le monde sait quel port est d�di� � quel service. Si chacun le sait, les "crackers" le savent encore mieux ! Si nous consid�rons un port comme une porte, lorsqu'un port est ouvert (� l'�coute), c'est comme une porte non verrouill�e. Et comment entrez-vous dans une maison ? Normalement par la porte (� moins que vous ne pr�f�riez la fen�tre, chacun son truc !). Eh bien, les "chapeaux noirs" font de m�me pour p�n�trer dans votre ordinateur... <br> La premi�re chose � faire pour limiter les risques est de fermer le plus grand nombre de ports possible, c'est-�-dire d'arr�ter les services. Moins il y en a mieux c'est. Mais vous pouvez difficilement fermer tous les ports sur une machine en r�seau : elle ne pourrait plus communiquer, ce qui serait dommage ! <br> Comment limiter le nombre de services actifs ou comment fermer les ports n'entre pas dans le cadre de cet article. Vous trouverez une grande quantit� de litt�rature sur le sujet en visitant par exemple le <A href= "http://www.linuxdoc.org">Linux Documentation Project</A> ou en cherchant dans les num�ros de LinuxFocus (par exemple, <a href="../September2000/article166.shtml">Bastille Linux</a> ou bien <a href="../January2001/article180.shtml">Outils de s�curit�</a>). M�me chose pour ce qui concerne les diff�rentes mani�res de prot�ger une machine ou un r�seau. Sous Linux, consid�rez <A href= "http://www.bastille-linux.org">Bastille Linux</A> comme une n�cessit�. <br> Et c'est l� qu'arrive portsentry. Portsentry peut surveiller les ports et il est capable de les bloquer si vous le lui demandez. Il vous propose diff�rents modes d'op�ration, certains �tant sp�cifiques � quelques OS. En fait, quelques OS, signifie Linux. <br> Portsentry peut b�n�ficier du filtrage de paquet fourni par ipfwadm, ipchains ou iptables selon le noyau Linux que vous utilisez. C'est vrai pour d'autres saveurs d'Unix en utilisant diff�rents outils (nous y reviendrons). Nous y voici : la caract�ristique essentielle de portsentry est "l'auto-blocage". <br> Comment fait-il ? Allons-y ! </P> <H2>Comment installer portsentry ?</H2> <p> Portsentry se pr�sente sous la forme d'une tr�s petite archive. Apr�s extraction, vous obtenez le code source et plusieurs fichiers de configuration et README. Evidemment, il est recommand� de lire tout cela. Puisque nous parlons de s�curit�, n'oubliez pas de t�l�charger les fichiers PGP (signature et cl�). <br> Installer portsentry est �vident : make (votre syst�me) et make install. Mais avant de l'installer vous devez le pr�parer. En clair, vous devriez lire la documentation, modifier le fichier portsentry.conf pour le faire correspondre � vos besoins, et v�rifier le Makefile ainsi que le fichier portsentry_config.h. <br> Pour que portsentry soit le plus efficace possible, il vous faut au moins les TCPWrappers. Au moins, parce qu'il serait pr�f�rable de l'utiliser en parall�le � un outil de filtrage de paquet. Bien s�r, si vous utilisez Linux, vous avez d�j� tout sous la main. Qu'en est-il des autres Unices ? <br> Comme nous avons test� portsentry sur diff�rentes plate-formes, parlons de ce qu'ils r�clament. <br> Sous MAC OS X, c'est comme pour Linux : tout y est. Vous avez les TCPWrappers et ipfw (la version BSD). Il suffit donc de taper "make osx" et c'est tout fini. <br> Sous Solaris 2.6 (SPARC), vous n'avez pas TCPWrappers. Vous pouvez l'obtenir depuis <a href= "ftp://ftp.porcupine.org/pub/security">ftp://ftp.porcupine.org/pub/security</a>. Vous pouvez �galement essayer IPFilter disponible sur <a href= "ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz">ftp://coombs.anu.edu.au/pub/net/ip-filter/ip-fil3.4.9.tar.gz</a> (mais seulement si vous poss�dez le compilateur Solaris !!!). <br> Sous Irix 6.5, vous n'avez pas non plus TCPWrappers. Vous pouvez l'obtenir sous forme de paquetage � <a href= "http://freeware.sgi.com/index-by-alpha.html">http://freeware.sgi.com/index-by-alpha.html</a> Pour le filtrage de paquet vous avez ipfilterd, qui fait partie de la distribution Irix mais qui n'est pas install� par d�faut. <br> Enfin, � moins de trouver un vsnprintf() fonctionnel, vous ne pourrez pas installer portsentry sur NeXTSTEP... et je n'en ai trouv� aucun ! <br> Donc, encore une fois, vous devriez configurer portsentry avant de l'installer. Bon, c'est comme vous le sentez, mais ce serait peut-�tre mieux de comprendre sa philosophie avant toute autre chose... mais ce n'est qu'une question d'opinion ! </p> <H2>Comment fonctionne portsentry ?</H2> <p> Tr�s bien, merci ! <br> Plus s�rieusement, portsentry d�pend de fichiers de configuration. Le plus important est le fichier portsentry.conf. C'est l� que vous allez dire � portsentry comment r�agir face � l'adversit�. <br> Avant de vous pencher sur ce fichier, vous devez conna�tre les diff�rents modes d'op�ration et ce qu'ils provoquent. <br> Portsentry peut utiliser six modes diff�rents, selon l'option choisie au d�marrage. <br> - La premi�re option "-tcp" est le mode de base. Avec cette option, portsentry lie les ports TCP trouv�s dans le fichier de config dans la partie "port configuration". Il peut lier jusqu'� 64 ports. <br> - La seconde "-udp" fait la m�me chose que la pr�c�dente pour les ports UDP. <br> - La troisi�me est "-stcp", le "s" signifiant stealth (furtif). Cette option et les suivantes ne sont disponibles que sous Linux. Avec l'option "-stcp", portsentry utilise un "socket" pour surveiller les paquets en entr�e, autrement dit, les ports ne sont li�s � rien. <br> -La quatri�me "-sudp" fait la m�me chose que la pr�c�dente pour les ports UDP. <br> - Les cinqui�me et sixi�me sont "-atcp" et "-audp". Ce sont les options les plus efficaces (le "a" signifie avanc�). Avec ces options, portsentry �tablit une liste des ports � l'�coute, TCP et UDP si vous s�lectionnez les deux, et bloque l'h�te qui se connecte � ces ports, � moins qu'il ne figure dans le fichier portsentry.ignore. <br> Tout ceci est bien mieux expliqu� dans les fichiers README distribu�s avec portsentry. En cons�quence, nous n'allons pas r�inventer la roue en essayant de r��crire la documentation. La lecture de ces fichiers README est obligatoire (comme d'habitude, soyons un peu fascistes !). </p> <strong>Comment r�agit portsentry ?</strong> <p> Evidemment, portsentry peut g�n�rer des logs. Si vous faites partie de ces administrateurs qui ne lisent pas les logs (quelle honte !), vous pouvez utiliser logcheck en compl�ment de portsentry. De cette mani�re, portsentry envoie un courrier pour vous informer d'une tentative d'intrusion. <br> Il peut ajouter l'h�te cible dans le fichier /etc/hosts.deny, pour b�n�ficier des TCPWrappers. <br> L'h�te local est capable de router le trafic du r�seau vers un h�te mort. <br> Enfin, l'h�te local peut "jeter" les paquets via l'outil de filtrage de paquet. <br> Maintenant que vous en savez un peu plus sur la philosophie de portsentry, vous pouvez commencer � �crire votre fichier portsentry.conf. <br> - La premi�re partie du fichier concerne les ports. Ici, vous pouvez d�finir les ports � lier. Rappelez-vous, ceci est ignor� si vous utilisez les modes avanc�s sous Linux. Soyez prudents avec les ports que vous souhaitez lier (par exemple, ne liez pas le port 6000 si vous utilisez X). <br> - La partie suivante concerne les options de d�tection avanc�es. Par d�faut, tous les ports au-dessous de 1024 sont surveill�s, qu'il s'agisse de TCP ou d'UDP. Ici, vous pouvez exclure les ports que vous voulez ignorer. C'est tr�s important pour �viter les fausses alarmes et les "logging" �normes, particuli�rement si vous avez des machines Windos dans votre r�seau. Par exemple, attention au port 111 si portmap est utilis� et que les h�tes ne figurent pas dans le fichier portsentry.ignore. Bien s�r, ce serait un peu fou, puisque portmap signifie serveurs RPC tels que NFS, mais vous voici avertis. En clair, NFS n'est pas particuli�rement s�r sous Unix alors ne parlons pas des machines Windos. <br> Voici l'habituelle partie hors-sujet : lorsque j'�cris "Windos", ce n'est pas une faute de frappe; c'est juste pour insister sur le fait que Windows est un environnement au-dessus du DOS (D pour d�solant ?)... et �a fait un caract�re de moins � taper (quel fain�ant !). Pardon pour la digression. <br> - La partie "configuration files" concerne les fichiers utilis�s par portsentry dans un but d'historique ou pour d�finir les h�tes � ignorer. Si vous effectuez une installation par d�faut, ne changez rien ici. <br> - La partie "miscellaneous config" permet d'activer ou de d�sactiver les "lookups" de DNS. <br> - La partie "response options" est le coeur de la configuration. C'est l� que vous d�finissez la mani�re dont portsentry va r�agir. <br> D'abord, vous trouvez les "ignore options". Vous pouvez choisir de bloquer les scans, de ne pas les bloquer ou de lancer une commande externe. <br> Ensuite, dans la partie "dropping routes", vous indiquez � portsentry comment rediriger la route ou comment b�n�ficier de l'outil de filtrage de paquet pr�sent sur votre machine. Vous disposez de nombreux exemples pour de nombreuses plate-formes. Choisissez celui (seulement un) qui correspond � vos besoins. <br> - La partie TCPWrappers indique si vous voulez �crire dans le fichier /etc/hosts.deny. <br> - La partie "external commands" permet de d�finir une commande � lancer lorsqu'un h�te se connecte. <br> - La partie "scan trigger value" permet de choisir le temps de r�action. La valeur par d�faut, "0" est la plus imm�diate puisqu'elle envoie une alarme � la premi�re tentative de connexion. <br> - La derni�re partie permet d'afficher un message en cas de tentative d'intrusion. Ca ne fonctionne pas avec les modes "stealth". <br> Lorsque vous en avez termin� avec �a, c'est presque bon. Encore une fois, pour �viter les fausses alarmes et les "logging" gigantesques, v�rifiez le fichier portsentry.ignore. Vous pouvez y ajouter l'adresse de votre r�seau local avec les bits du netmask, ou l'adresse IP de quelques machines. <br> Ca y est ! Vous pouvez maintenant taper "make votresyst�me" et "make install". Le script d'installation fait tout le travail puisqu'il restreint les droits sur le r�pertoire et les fichiers. Maintenant vous n'avez plus qu'� lancer portsentry avec les options de votre choix. V�rifiez les logs pour voir ce qui s'est pass�. Si tout s'est bien d�roul�, portsentry a d�marr� et am�lior� la s�curit� de l'h�te. </p> <H2>Que se passe-t-il alors ?</H2> <p> En utilisant des outils tels que nmap, vous pouvez simuler un scan de ports sur votre h�te nouvellement s�curis�. (Plus sur nmap <a href="../July2001/article170.shtml">ici</a>). Voila la r�ponse que vous pouvez obtenir : <p><img src="../../common/images/article180/nmapg.jpg" alt="portsentry en fonction sur l'h�te scann�"></p> C'est-�-dire que votre machine ne fournit pas beaucoup d'information au pirate que vous �tes devenu ! <br> Habituellement, cette tentative aurait d� vous procurer la version de l'OS et les ports ouverts de l'h�te scann�. Ce type d'information est particuli�rement utile � un pirate puisqu'il sait alors mieux o� et comment attaquer. Avec portsentry en fonction avec une valeur de 0 pour temps de r�action instantan� en mode avanc�, le blocage est imm�diat. S'il avait �t� lanc� avec une valeur de 1 en mode normal, l'attaquant aurait obtenu la liste des ports ouverts et probablement le type de l'OS en service sur la machine. Mais alors, essayer de se connecter sur un port connu pour �tre ouvert aurait �chou�. Portsentry a bloqu� le port apr�s la premi�re tentative. Simple mais efficace ! <br> Donc, si vous utilisez seulement TCPWrappers, l'adresse IP de l'attaquant a �t� �crite dans le fichier /etc/hosts.deny. Si vous avez choisi de "jeter" la route en la redirigeant vers un h�te mort, portsentry est encore efficace mais ne prot�ge pas totalement des attaques UDP. <br> Si vous utilisez un outil de filtrage de paquet, l'h�te attaqu� redirige les paquets venant de l'attaquant vers cet outil. <br> Bien s�r, il s'agit du meilleur moyen de b�n�ficier de toute la puissance de portsentry. <br> Encore une fois, le mode avanc� sous Linux est l'id�al. Cela ne signifie pas que portsentry ne soit pas aussi bon sous d'autres OS, il est juste un peu moins efficace... enfin, pas vraiment ! <br> Pour mieux comprendre, v�rifiez les logs apr�s diff�rentes tentatives d'intrusion sur diff�rents OS utilisant portsentry sous diff�rents modes. Ca r�sume tout ! <br> Selon les modes utilis�s, les logs vont fournir quelques fausses alarmes. Pour am�liorer la qualit� de l'information, vous devrez travailler sur le fichier de config. apr�s une phase de test, vous devriez obtenir exactement ce que vous souhaitez. </p> <H2>Peut-on vivre sans portsentry ?</H2> <p> Absolument PAS ! Il existe des tas d'IDS, libres ou non. La plupart sont tr�s bons. Mentionnons par exemple le bien connu snort disponible depuis <a href= "http://www.snort.org">http://www.snort.org</a>. <br> Habituellement ces IDS sont passifs. C'est-�-dire qu'ils sont utilis�s pour informer sur les intrusions. Ils ont �t� con�us pour �a. Par exemple, snort est tr�s sophistiqu� puisqu'il repose sur des scripts de r�gles, vous permettant ainsi d'�crire les votres. Le site de snort propose d'ailleurs une base de donn�es de r�gles. Et au fait, si vous n'avez pas peur des logs � rallonge, vous pouvez utiliser portsentry et snort ensemble. Ce n'est pas si stupide ! <br> Toutefois, la force de portsentry est d'�tre un IDS actif. La fa�on dont il est capable de r�agir est � couper le souffle. Le combiner � un outil de filtrage de paquet en fait l'outil indispensable. Nous pourrions poser la question : portsentry est-il le compl�ment du filtrage de paquet ou le filtrage de paquet est-il un compl�ment de portsentry ? <br> De toutes fa�ons, nous pourrions ajouter des tas d'autres choses sur portsentry. Par exemple, vous devez �tre tr�s prudents avec la d�tection de scan UDP en mode avanc�. Lisez la doc (encore !) pour bien comprendre les probl�mes relatifs � UDP. Solaris peut �galement poser quelques probl�mes puisqu'il utilise des ports tr�s �lev�s autour de 32700 (soit pout TCP, soit pour UDP). Mais cet article n'est qu'un survol et en aucun cas une �tude compl�te de ce superbe logiciel. <br> La s�curit� informatique est une responsabilit�, et pas seulement pour les administrateurs syst�me. L'incroyable croissance d'Internet rend les choses encore plus d�licates. En clair, le danger d'intrusion est tous les jours plus grand. La communaut� du logiciel libre nous propose d'extraordinaires logiciels : portsentry est l'un d'eux. Ne les laissez pas de c�t� ! Mais rappelez-vous, ces outils ne font que r�duire le risque et ne fournissent en aucun cas un syst�me s�r � 100%. C'est une autre bonne raison de se pencher sur le domaine des outils de s�curit�. <br> Enfin, les gens de Psionic travaillent actuellement sur un produit commercial et nous disent "vous ne serez pas d��us". Attendons et voyons, alors ! <br> Dans l'intervalle, r�cup�rez portsentry 1.1, vous ne serez pas d��us non plus. Ils font un tr�s beau travail � Psionic. Au fait, hostsentry vaut �galement la peine d'�tre essay�... et utilis�. <br> Quand je vous dis que nous vivons une �poque formidable ! </p> <h2>R�f�rences</h2> <p> Les sites qui suivent sont des r�f�rences absolues lorsqu'il s'agit de s�curit�. De plus, ils vous enverront vers d'autres sites, ces derniers vous envoyant vers d'autres sites... Vous savez, les poup�es Russes ? Le seul probl�me, si vous voulez tout lire, c'est que vous ne vivrez pas assez longtemps !!! <br> <a href= "http://www.linuxsecurity.com">http://www.linuxsecurity.com</a> <br> <a href="http://www.sans.org">http://www.sans.org</a> <br> <a href="http://www.infosyssec.org">http://www.infosyssec.org</a> <br> <a href= "http://www.securityfocus.com">http://www.securityfocus.com</a> <br> <a href= "http://www.cs.purdue.edu/coast/hotlist/">http://www.cs.purdue.edu/coast/hotlist/</a> </p> <!-- vim: set sw=2 ts=2 et: --> </BODY> </HTML>