[LinuxFocus-icon]
Sommaire  |  Carte  |  Index  |  Recherche

Nouvelles | Archives | Liens | A propos
Ce document est disponible en: English  Castellano  Deutsch  Francais  Portugues  Russian  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
par Georges Tarbouriech
<georges.t(at)linuxfocus.org>

L´auteur:

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.



Traduit en Français par:
Georges Tarbouriech <georges.t(at)linuxfocus.org>

Sommaire:

 

Nessus : une autre brique dans le mur (de la sécurité)

[illustration]

Résumé:

Nessus est un scanner de sécurité libre, disponible depuis http://www.nessus.org. Renaud Deraison est le créateur et le mainteneur du projet. Au moment de cet article, la version stable est la 1.09 et la version expérimentale la 1.14. Le logiciel est publié sous GPL et de nombreuses personnes contribuent au projet, particulièrement pour ce qui concerne les plugins... pendant que d'autres profitent du travail de nessus sans même en mentionner le nom (plus d'information sur ce sujet à la fin de l'article). Nessus fonctionne sous de nombreuses saveurs d'Unix en tant que client et serveur et sous Win32 en tant que client. Regardons de plus près ce fabuleux outil.



 

Obtenir et installer nessus

En allant sur http://www.nessus.org, vous pouvez télécharger ce superbe logiciel. Un client nessus étant disponible pour Win32, précisons que nous parlerons ici de la version Posix, bien évidemment.
Pour utiliser nessus, il vous faut nmap et Gtk (le Gimp Toolkit). Le site de nessus propose des liens vers ces derniers. Cela dit, vous pouvez utiliser nessus à partir de la ligne de commande, par conséquent Gtk n'est pas obligatoire.
Vous pouvez récupérer nessus de trois manières différentes : la bonne, la mauvaise et la pire.
La bonne, c'est le standard. En clair, vous téléchargez les archives à partir du site ftp le plus proche de chez vous. Vous disposez de quatre archives : les bibliothèques nessus, les bibliothèques nasl, le programme nessus proprement dit et les plugins. Une fois décompactées, vous les compilez et les installez comme d'habitude : ./configure, make, make install, dans l'ordre des archives citées au-dessus. Si une précédente version de nessus est installée sur votre machine, vous devez la supprimer. Nessus vous propose un script de désinstallation devant être lancé après le premier "./configure", soit celui des bibliothèques nessus. Exécutez ce script avant de taper "make". Faites la même chose pour chaque paquetage (sauf exécuter le script de désinstallation, bien sûr) et c'est fini.
La mauvaise méthode consiste à exécuter un script téléchargeable nommé nessus-installer.sh. Taper "sh nessus-installer.sh" installera automatiquement le paquetage. Les quatre paquetages sont devenus un seul.
La pire : si lynx est installé sur votre machine et si vous êtes connecté à Internet, tapez simplement "lynx -source http://install.nessus.org | sh" et c'est tout. Vous ne devez PAS être root pour ce faire.
De toute évidence, la méthode recommandée est la "bonne"... Enfin, puisque vous téléchargez nessus, nous supposons que vous vous sentez concernés par la sécurité ! Et puisque nous parlons de sécurité, n'oubliez pas de télécharger le checksum MD5.
Nessus fournit différents utilitaires (nasl, un langage de script, nessus-adduser, nessus-build...). Chaque utilitaire possède sa page de manuel, de même pour les programmes client et serveur. De la documentation supplémentaire est disponible dans la distribution (README, INSTALL...) et sur le site de nessus.

 

Configurer et exécuter nessus

Pour rendre les choses plus faciles à comprendre, nous nous servirons d'exemples de la version X11 de nessus, autrement dit, celle utilisant Gtk.

Le serveur nessusd

Pour démarrer nessus, vous devez, bien évidemment, lancer le démon serveur, soit nessusd. Lorsque vous l'exécutez pour la première fois, vous devez déclarer un nom d'utilisateur et un mot de passe en utilisant la commande nessus-adduser. Si le paquetage des bibliothèques nessus a été compilé avec l'option "--enable-cipher" (recommandé, pour ne pas dire obligatoire !), une clé privée est générée. Cette clé peut être protégée par une passphrase. De nombreuses options existent pour lancer le serveur et vous trouverez tout dans la page de manuel de nessusd.
De là, vous créez la base de données des utilisateurs et les règles correspondantes. Autrement dit, qui est autorisé à exécuter le démon serveur, qui a le droit de scanner (une machine, un réseau...). Les règles sont de la forme "accept" ou "deny" suivi de l'adresse IP du réseau et de son netmask.
Par exemple : accept 192.168.1.0/24, permet à l'utilisateur de scanner l'ensemble du réseau 192.168.1.
Il est aussi possible de définir un seul utilisateur sans règles du tout. Si vous souhaitez autoriser plusieurs utilisateurs à lancer nessusd, soyez très prudents sur ce que vous leur permettez de faire. Vous ne pouvez pas autoriser n'importe quoi à n'importe qui sur votre réseau, n'est-il pas ?
Enfin, nessusd dépend d'un fichier de configuration situé (normalement) dans /usr/local/etc/nessus/nessusd.conf. Vous pouvez le modifier manuellement si vous savez ce que vous faites.

Le client nessus

Vous pouvez maintenant démarrer le client nessus pour vous connecter sur le serveur nessusd. Pour lancer le client, il suffit de taper "nessus &" dans un shell. Ceci ouvre la fenêtre de configuration de nessus après vous avoir demandé la passphrase mentionnée plus haut. Cette fenêtre propose sept onglets.
Le premier onglet se nomme "nessusd host". Depuis ce panneau, vous pouvez vous connecter sur l'hôte nessusd en cliquant sur le bouton "Log in". Bien sûr, cela suppose que vous êtes autorisé à vous connecter sous ce nom d'utilisateur, en d'autres termes, que votre nom d'utilisateur est bien déclaré dans la base de données.

nessusd host


Le deuxième onglet concerne les plugins. Vous y sélectionnez (ou désélectionnez) les plugins à utiliser pendant le scan. Par exemple, vous pouvez désactiver les plugins dangereux (ceux susceptibles de "planter" une machine !). Cliquer sur un plugin dans la partie inférieure du panneau affiche des informations le concernant.

plugins plugin detail


Le troisième onglet définit les préférences des plugins. Cela concerne ping, TCP, FTP... C'est là que vous affinez les réglages sur la façon d'utiliser nessus pour scanner l'hôte(s) ou le réseau cible.

preferences


Le quatrième onglet permet de définir les options de scan et le scanner de port à utiliser. Normalement, il s'agit de nmap. Plus sur nmap ici.

scan options


Dans le cinquième onglet vous fournissez à nessus la cible à scanner. Dans le champ "target" vous écrivez le nom d'un ou plusieurs hôtes, séparés par des virgules, une ou plusieurs adresses IP, toujours séparées par des virgules, ou une adresse de réseau avec son netmask (par exemple 192.168.1.0/24). Vous disposez aussi d'une case à cocher pour effectuer un transfert de zone DNS. Autrement dit, si vous vous connectez à un serveur DNS, nessus essaiera de récupérer la liste des hôtes dans ce domaine.

target selection


Le sixième onglet permet à l'utilisateur de changer sa passphrase, d'effacer sa clé privée ou d'ajouter des règles.

user


Enfin, le septième onglet ouvre le panneau de crédits qui contient également des informations sur la version. C'est-à-dire, toute information à fournir lorsqu'on utilise nessus dans un projet externe... Enfin, c'est comme cela que ce devrait être !

credits


Il est possible d'avoir un huitième onglet si nessus a été compilé avec l'option de configuration "--enable-save-kb". Kb signifie "knowledge base" (base de connaissance). C'est une fonctionnalité expérimentale permettant d'utiliser les résultats d'un test précédent. Cette fonctionnalité sera intégrée par défaut dans la version 1.1.0 de nessus. Vous en saurez plus sur kb à kb_saving.
Après avoir "visité" chaque onglet, vous pouvez lancer la "bête". Il suffit de cliquer sur le bouton "Start the scan". Que se passe-t-il alors ?

 

Nessus au travail

Lorsque vous démarrez le scan, nessus ouvre une fenêtre affichant le status dudit scan. Imaginons par exemple, que vous testiez le réseau 192.168.1.0/24 dans son intégralité. Huit machines (hôtes) seront affichées en même temps, et vous pourrez voir chaque plugin utilisé pour chaque machine ainsi qu'une jauge de progression. Voici à quoi ça ressemble :

scan status


Comme vous pouvez le voir, le test peut être arrêté n'importe quand, en cliquant sur le bouton "Stop the whole test".
De toute évidence, si vous scannez un réseau entier comprenant de nombreux hôtes, le test peut durer un certain temps. Ca dépendra des OS, de la vitesse du réseau, du rôle des machines (plus ou moins de ports ouverts), du nombre de plugins actifs, etc.
Vous pouvez aussi tester de deux autres manières : les scans dissociés ou les scans différentiels. Cela suppose que nessus a été compilé avec l'option de configuration "--enable-save-kb", mentionnée ci-dessus. Les scans dissociés permettent d'effectuer les tests en tâche de fond alors que les scans différentiels, comme leur nom l'indique, montrent seulement les différences entre deux scans.
Vous trouverez plus ample information sur ces fonctionnalités en visitant la documentation nessus.
L'essentiel, c'est le résultat obtenu à la fin du scan. L'une des meilleures caractéristiques de nessus concerne sa manière d'établir des rapports.

report


Ces rapports sont plutôt détaillés et proposent souvent une solution à la vulnérabilité découverte. Encore mieux, ils sont très fiables. Si une vulnérabilité est "douteuse", nessus précise qu'il peut s'agir d'une fausse alerte. Ceci peut se produire, par exemple, avec des versions corrigées de certains démons : une vulnérabilité récemment corrigée peut apparaître comme un risque potentiel. Toutefois, pour ces cas précis, les plugins sont rapidement mis à jour.
Un autre genre de petite erreur peut venir de nmap (2.53) dans l'identification de la version de l'OS. Mais c'est vraiment de peu d'intérêt. Personnellement, ça ne me dérange pas que NonTerminé 4.0 avec SP6a soit reconnu comme NonTerminé 4.0 avec SP5, ou si le noyau Linux 2.2.19 est identifié comme 2.2.14. Je ne vais pas me plaindre non plus, de ce que des OS "exotiques" tels que AmigaOS ou BeOS soient détectés comme des imprimantes ou des routeurs. Je ne me vois pas envoyer un courrier à fyodor (l'auteur de nmap) pour lui dire un truc pareil : qui utilise ce genre d'OS sur un réseau aujourd'hui ? Concernant AmigaOS, je dirais bien 5 personnes... dans le monde :-(
Quelques autres OS ne sont pas non plus parfaitement identifiés, mais il s'agit souvent de produits plutôt récents ou peu utilisés. Ca se vérifie pour MacOS X ou QNX. Mais encore une fois, ce n'est pas si important et le problème est sans doute déjà résolu dans la nouvelle version beta 2.54 de nmap (et, d'ailleurs, cette nouvelle version propose un port pour MacOS X).
De toutes façons, ce qu'il faut retenir c'est que nessus vous fournit des tonnes d'informations permettant de corriger les vulnérabilités ou faiblesses des machines de votre réseau local.
Ces rapports peuvent être sauvegardés en tant que texte, NSR, HTML, HTML avec graphiques... permettant ainsi de comparer entre deux scans. Ca peut paraître évident, mais l'état d'un réseau à un moment donné peut être totalement différent de ce qu'il sera 30 minutes plus tard. Pourquoi ? C'est vivant un réseau ! C'est l'une des principales raisons pour lesquelles la sécurisation d'un réseau n'est pas si simple : tout change tout le temps. Si vous vous demandiez pourquoi utiliser des outils tels que nessus ou nmap, voici la réponse.
Si vous êtes curieux de la manière dont fonctionne nessus, épluchez les logs ou, si vous utilisez snort, regardez les logs de snort. Vous trouverez aussi des informations dans /usr/local/var/nessus.
A partir de là, vous aurez certainement du travail pour réduire les faiblesses de nombreuses machines de votre réseau. Plus vous renforcerez la sécurité de chaque hôte, mieux ce sera. Pour vous aider dans ce travail de longue haleine, nessus (et nmap avec lui) sont les outils indispensables.

 

Plugins

Les plugins sont le "coeur" de nessus. Ce sont des tests de sécurité, autrement dit, un moyen de découvrir une vulnérabilité donnée. NASL (Nessus Attack Scripting Language) est le langage recommandé pour écrire des tests de sécurité. Vous trouverez tout sur NASL en visitant l'URL : NASL.
En conséquence, si vous souhaitez contribuer au projet nessus en écrivant des plugins, c'est là que vous trouverez l'information ad hoc (comme... non, je ne la ferai pas, j'aurais honte... quoique !). Au moment de cet article, il y a 756 plugins dans la base de données !
Il y a presque 20 familles de plugins : les backdoors, les dénis de service, les accès root distants... Comme déjà précisé, chaque plugin fournit des informations. Il vous dit ce qui ne va pas et propose des solutions pour corriger le(s) problème.
Nous ne pouvons pas parler des plugins sans mentionner CVE (Common Vulnerabilities and Exposures). C'est une énorme base de données disponible à http://cve.mitre.org. Vous y trouverez tout sur les risques de sécurité connus. Un autre lieu incontournable pour le partage des connaissances. Un tel site est la référence absolue à visiter.
Bien sûr, il y aurait des tas de choses à dire sur les plugins mais un livre n'y suffirait pas. Un bon moyen de comprendre leur fonctionnement, comment ils sont écrits, consiste à les lire dans le répertoire /usr/local/lib/nessus/plugins. Encore une fois, merci à Renaud Deraison et aux contributeurs pour ce superbe travail.

 

Et maintenant, quelque chose de complètement différent !

Même si ce titre évoque Monty Python, il n'y a malheureusement aucun humour là-dedans. Les trois ou quatre personnes qui lisent mes articles connaissent mes phrases hors-sujet : cette fois-ci, c'est un paragraphe entier ! Est-ce vraiment hors-sujet, c'est une autre histoire. Allons-y.
Comme je m'intéresse à la sécurité informatique, je visite souvent les sites dédiés. Ce peut être pour découvrir de nouvelles vulnérabilités ou pour découvrir de nouveaux outils de sécurité. Par hasard, j'ai découvert quelques produits basés sur des sevices de scan en ligne. En fait, ils se nomment eux-mêmes (au moins pour l'instant) ASP (Application Service Provider). Si vous allez un peu plus loin, vous découvrez rapidement que le moteur derrière le service n'est autre que nessus. Jusque là, ça va. Par contre, si vous essayez de trouver une information explicite, vous ne trouverez même pas le mot "nessus". C'est là que je ne marche plus et que j'ai vraiment envie de me fâcher !
La plupart des gens travaillant pour la communauté du logiciel libre font ça gratuitement et non pour vivre. Le seul salaire qu'ils perçoivent se nomme : crédit (pas au sens bancaire !). Nessus est distribué sous GPL. En clair, tout le monde peut utiliser le produit, le modifier, l'adapter... tant que l'auteur(s) original est cité. Bien sûr, cette licence en dit beaucoup plus. Si vous ne la connaissez pas, jetez un oeil .
Pour moi, cela ressemble à du vol. Je n'ai même pas besoin d'une licence pour créditer le travail d'autres personnes. J'ai beaucoup de respect pour ces gens qui travaillent gratuitement (presque toujours) et qui partagent avec une communauté (sans doute mon côté soixante-huitard attardé). Ils méritent réellement la reconnaissance de cette communauté. C'est encore plus vrai, lorsque certains essaient de gagner de l'argent à partir du travail de quelqu'un d'autre. Appelez ça respect, reconnaissance, ça n'a aucune importance. Le fait est que ces mots semblent avoir perdu leur signification. Bien sûr, nous pourrions accuser la GPL d'être responsable de ce comportement. Mais, avec l'ASP, vous n'êtes pas considérés comme vendant le logiciel. De plus, selon le pays concerné, la GPL peut n'avoir aucune valeur légale.
Un début de solution au problème serait que les utilisateurs de tels ASP demandent le nom du moteur de scan effectuant réellement le travail. La réponse permettrait au moins de savoir si les gens proposant le service sont "honnêtes". S'ils ne répondent pas ou s'ils vous disent qu'ils ont "inventé" le moteur (dans lequel vous avez reconnu nessus), n'utilisez pas le service ! Installez plutôt nessus (le vrai), de toute manière ce sera plus sûr.
Encore une fois, avons-nous besoin d'une licence pour dire "merci" à des gens ayant accompli un travail formidable et souvent énorme ? Au fait, Renaud Deraison ne veut pas changer de licence : nessus restera GPL.
Pardon pour cette longue digression, mais je crois que ce devait être dit.

 

C'est tout fini !

Malgré ce dernier paragraphe, ce qui est à retenir de cet article c'est le degré de qualité de nessus. C'est un logiciel vraiment impressionant. Utilisé avec nmap, il devient incontournable lorsque la sécurité est une priorité. C'est un outil très fiable qui évolue en permanence. Merci à Renaud et à ses pairs pour leur mise à jour constante des plugins.
Aujourd'hui, un administrateur peut difficilement travailler sans nessus et nmap. Ces outils sont capables de découvrir des vulnérabilités dont vous pensiez vous être débarrassés. Ca se vérifie pour la plupart des OS présents dans votre réseau. Et lorsque vous savez que certains OS sont des passoires, nessus vous permet de respirer un peu.
Encore mieux, nessus peut vous aider à comprendre la manière dont un réseau (ou un machine) peut être compromis.
Si vous lisez attentivement les rapports produits, les prenez en compte et apportez les corrections adaptées, vous améliorerez considérablement la sécurité de votre réseau (ou machine). J'ai bien dit "améliorerez" : votre réseau ne sera pas sécurisé à 100% simplement parce que vous utilisez nessus. La route vers la sécurité est très longue et nous sommes loin d'en voir le bout.
Encore une fois, merci à la communauté du logiciel libre pour son énorme travail sur la sécurité.
Concernant les charmantes personnes qui essaient de faire de l'argent à partir du travail des membres de la communauté du logiciel libre, je souhaiterais ajouter quelque chose. Dire "merci" n'a rien de honteux. Est-ce si épouvantable d'être honnête ? Si ce type de comportement se répand, le risque est soit la fin de la dite communauté soit un gros changement dans les licences (et probablement, de plus en plus de brevets !). Dans les deux cas, vous vous débrouillerez seuls et les choses deviendront beaucoup plus compliquées pour vous. Et malheureusement, nous n'aurons plus la possibilité d'utiliser du logiciel libre. Cela ne signifie en rien que vous aurez l'opportunité de vendre votre produit. Pensez-y !
Quand je vous dis que nous vivons une époque formidable !  

Discussion sur cet article

Chaque article possède sa page de discussion. Vous pouvez y soumettre un commentaire ou lire ceux d´autres lecteurs:
 page de discussion 

Site Web maintenu par l´équipe d´édition LinuxFocus
© Georges Tarbouriech, FDL
LinuxFocus.org

Cliquez ici pour signaler une erreur ou envoyer un commentaire à Linuxfocus
Translation information:
en --> -- : Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> fr: Georges Tarbouriech <georges.t(at)linuxfocus.org>

2001-10-26, generated by lfparser version 2.18