Auditer la sécurité de son réseau

Firewall avec ipchains Graver et MP3
Sécurité

Présentation

Avertissement

Sara
Présentation
Utilisation

Nmap
Présentation
Installation
Syntaxe
Quelques exemples

Nessus
Présentation
Installation
Utilisation

Présentation

Le but de cette page est de vous présenter  trois outils qui vous permettront de tester la sécurisation des machines de votre réseau, ils vous révéleront vos trous de sécurité et vous avertiront des problèmes potentiels, à partir de là libre à vous de "boucher" les trous en question et d'upgrader certains programmes présentant quelques déficiences de sécurité. Ces outils procèdent en scannant votre machine, en testant tous les ports ouverts notamment et en testant un grand nombre de trous de sécurité connus.
Les outils présentés sont SARA qui est dérivé du célèbre SATAN qui n'a pas été maintenu depuis un certain temps, nmap qui est un puissant "scanneur" et nessus basé entre autres sur nmap mais avec en plus une interface particulièrement conviviale. Des trois outils c'est le dernier que je juge le plus puissant et de surcroît facile d'utilisation.

AVERTISSEMENT

Je vous déconseille évidemment fortement de tenter de scanner une machine ne vous appartenant pas se trouvant sur le net, le scan sera considéré comme une attaque, vous vous exposez à des problèmes en proportion avec la machine visitée, mais bon je vous aurais prévenu.

Sara

Présentation

En 1995 est apparu un outil d'administration pour tester la sécurité d'un réseau, avec le nom évocateur de SATAN (Security Administrator Tool for Analyzing Networks). Il avait la particularité d'être Open Source, il est très vite devenu un standard et fut à la base d'une pléthore d'outils équivalents. Le problème est que maintenant SATAN commence fortement à dater, ça fait un paquet de temps qu'il n'a pas été remis à niveau, en d'autres termes, il est actuellement complètement dépassé. En conséquence une boîte (Advanced Research Corporation) commença le développement d'un outil similaire au goût du jour, ainsi naquit SARA (Security Auditor Research Assistant), comme SATAN, SARA est Open Source.
A noter qu'il existe une version commerciale de SARA, appelée SARA-PRO. A noter encore qu'un des auteurs de SARA est aussi à l'origine de SAINT, un autre SATAN-like.

Installation

Vous devez  récupérer l'archive sara-2_1_9_tar.gz à l'URL home.arc.com/sara/index.html. Après décompression, vous allez récupérer un répertoire sara-2.1.9.

gunzip sara-2_1_9_tar.gz
tar xvf sara-2_1_9_tar

Puis dans le répertoire ainsi obtenu, il suffit de taper:

make linux

Il va créer des exécutables sous ./sara-2.1.9/bin. L'exécutable de lancement de SARA se trouve directement sous ./sara-2.1.9, chez moi il n'avait pas les droits d'exécutions, j'ai du modifier ça.

chmod 744 ./sara-2.1.9/sara

NOTE: vous devez disposer de Perl 5 (ou supérieur).

Utilisation

En tant que root il suffit de taper

./sara-2.1.9/sara

NOTE: Si vous disposez de nmap (voir le chapitre suivant), vous pouvez rajouter l'option -n pour lui indiquer, le scan sera d'autant meilleur.

Et là surprise, c'est le browser par défaut qui se lance (netscape chez moi). Il y a une chose à modifier dans les Préférences de netscape pour que ça puisse marche,  aller dans le menu:
 
Edit -> Préférences -> Navigator -> Applications -> dans la liste choisir Perl Program -> puis en final Edit, modifiez les champs tels qu'indiqués sur le screenshot à droite.

Voilà maintenant dans le browser vous avez la page d'accueil de Sara avec le menu à gauche contenant les champs suivants:

Sara Home (cette page)
Data Management
Target Selection
Data analysis
Configuration Mgt
Documentation
Troubleshouting

A noter que la partie documentation (en html) est très bien fournie ainsi que la section troubleshouting se présentant sous forme de FAQ.

La première étape est de sélectionner la cible à analyser. on clique donc sur Target Selection, vous devez alors saisir:

Primary target selection: choix de la cible

Primary target host or network, e.g.  : la cible à analyser, par défaut la machine courante

Vous avez le choix entre:

Scan the target host only. :scanner uniquement la cible indiquée plus haut
Perform DOS attack on the target host only.: si c'est une machine sous windows, on peut faire des attaques particulières
Scan all hosts in the primary (i.e. the target's) subnet.: scanner tout le sous-réseau

Par défaut on scrute que l'host indiqué

Scanning level selection: niveau de scanning

Light: léger
Normal (may be detected even with minimal logging)
Heavy (error messages may appear on systems consoles)
Extreme (some unpatched services may fail)

Par défaut c'est un scanning heavy qui est choisi

Firewall Support: si la machine à scanner est derrière un firewall ou non

No Firewall Support: pas derrière un firewall
Firewall Support : derrière un firewall

Voilà maintenant on a un bouton start the scan, et c'est parti, là ça peut prendre un certain temps, voilà le résultat final sur la machine obelix.armoric.bz:

Data collection in progress...

18:58:16 bin/timeout 120 bin/fping obelix.armoric.bz
18:58:17 bin/timeout 20 bin/finger.sara obelix.armoric.bz
18:58:20 bin/timeout 20 bin/dns.sara obelix.armoric.bz
18:58:20 bin/timeout 20 bin/rpc.sara obelix.armoric.bz
18:58:21 bin/timeout 120 bin/tcpscan.sara 1-1525,1527-7099,7101-9999,12345,16600,20034,27665,31337,31785,65000 obelix.armoric.bz
18:58:36 bin/timeout 120 bin/hosttype.sara obelix.armoric.bz
18:58:48 bin/timeout 120 bin/udpscan.sara 1-1760,1763-2050,31335,31337,27444,32767-33500 obelix.armoric.bz
18:59:23 bin/timeout 30 bin/login.sara -u rewt -p satori obelix.armoric.bz
18:59:48 bin/timeout 120 bin/nfs-chk.sara -t 10 obelix.armoric.bz
18:59:49 bin/timeout 20 bin/sendmail.sara obelix.armoric.bz
18:59:51 bin/timeout 120 bin/relay.sara obelix.armoric.bz
18:59:52 bin/timeout 20 bin/http.sara http obelix.armoric.bz
18:59:55 bin/timeout 20 bin/statd.sara obelix.armoric.bz
18:59:55 bin/timeout 20 bin/sample.sara.ext http obelix.armoric.bz
18:59:55 bin/timeout 20 bin/smb.sara obelix.armoric.bz
19:00:15 bin/timeout 20 bin/pop3.sara obelix.armoric.bz
19:00:18 bin/timeout 30 bin/login.sara -u guest obelix.armoric.bz
19:00:42 bin/timeout 20 bin/showmount.sara obelix.armoric.bz
19:00:43 bin/timeout 20 bin/ypbind.sara obelix.armoric.bz
19:00:43 bin/timeout 30 bin/login.sara -u lp obelix.armoric.bz
19:01:08 bin/timeout 20 bin/dns-chk.sara obelix.armoric.bz
19:01:23 bin/timeout 20 bin/xhost.sara -d obelix.armoric.bz:0 obelix.armoric.bz
19:01:25 SARA run completed

Data collection completed (1 host(s) visited).

Si vous choisissez View primary target results,  vous obtiendrez un truc du style:

General host information:

            Host type: Linux 2.1.122
            NFS server
            NIS server
            NNTP (Usenet news) server
            POP server
           Telnet server
            WWW server
            X Windows server
            XDM (X login) server
            Subnet 192.168.13
            Scanning level: heavy
            Last scan: Fri Mar 3 19:01:23 2000

Vulnerability information:

            DNS may be vulnerable
            Check nntp for vulnerabilities
           SMTP may be a mail relay
           Do you want snmp on Internet
           rpc.statd is enabled and may be vulnerable

Vous constatez qu'il y a des liens un peu partout qui vous donne plus d'info.

Si par contre vous choisissez  "Sara Reporting and analysis", vous aurez alors le menu suivant:

Table of contents

Vulnerabilities

By Approximate Danger Level
By Type of Vulnerability
By Vulnerability Count

Host Information

By Class of Service
By System Type
By Internet Domain
By Subnet
By Host Name

Trust

Trusted Hosts
Trusting Hosts

Reporting

SARA Pro Reporter

Chaque catérogie étant un lien vers un autre page avec davantages de détails. Je ne vous les présenterai pas de manière exhaustive, car ça part vraiment dans tous les sens.

Nmap

Présentation

Nmap est un puissant outil qui permet de scanner les ports, il a pour but de tester la sécurisation des postes de vos réseau, vous devez vous en servir uniquement pour votre réseau, si vous tentez de scanner quelqu'un d'autres sur le réseau internet, sachez que ce sera considéré comme une attaque, c'est donc à vos risques et périls...

Installation

Vous pouvez trouver nmap sur le site www.insecure.org/nmap/index.html ou éventuellement sur des sites de téléchargement comme rufus.w3.org. Comme on peut le trouver au format RPM, l'installation est très simple sur une distrib type RedHat. Voici le package que j'ai récupéré nmap-2.12-1.i386.rpm, je l'ai installé en faisant :

rpm -ivh nmap-2.12-1.i386.rpm

L'exécutable nmap est installé par défaut dans /usr/local/bin

NOTE: Vous constaterez qu'il existe une version supérieure béta de nmap, mais je préfère travailler sur des versions stables.

Syntaxe

La syntaxe est classique:

nmap [options éventuelles] cible

Les options principales sont:

   -sT scanning des ports TCP ouverts, on ouvre une connexion sur tous les ports ouverts, toutes les connexion sont visibles sur la machine cible (dans les fichiers de log notamment),
   -sS scanning des ports TCP, on envoit un message SYN pour dire qu'on va ouvrir une connexion TCP puis on attend la réponse, après réponse on sait que le port est ouvert, l'avantage de cette option est que l'action n'est pas logué par la cible,
   -sF,-sX,-sN Stealth FIN, Xmas, ou Null scan (marche que sous UNIX) scan des ports plus discrets (voir man nmap pour plus de détails)
   -sP équivalent à ping, pour voir si la cible est "alive", ne fait pas de scan,
   -sU scanning des ports UDP ouverts (plutôt lent),
   -b <ftp_relay_host> ftp "bounce attack" port scan, en gros ça exploite un trou de sécurité sur certain proxy, je vous en dirais pas plus (voir le man).

D'autres options intéressantes (liste non exhaustive):

   -O permet de connaître sur quel OS tourne la cible (fingerprinting en anglais),
   -p <range> syntaxe pour avoir un ensemble de ports à scanner, exemple :
        -p 23 on va regarder que le port 23
         -p 20-30,63000- va scanner les ports de 20 à 30 et supérieur à 63000 (jusqu'à 65535 en fait)
         par défaut il scrute uniquement de 1 à 1024 plus les ports se trouvant dans /etc/services,
   -F  scan rapide, scanne uniquement les ports contenus dans  /etc/services,
   -I permet d'avoir plus d'info sur les ports TCP ouverts, notamment le proprio,
   -o <logfile> log le résultat dans le fichier <logfile>,
   -v Verbose, mode verbeux (recommandé),
   -h help, pour avoir la liste complète des options,
   -V pour avoir uniquement le numéro de version, pas la peine de rentrer de cible,
   -e <devicename>, avec ça on peut spécifier une interface particulière pour envoyer les paquets (eth0,ppp0,etc.).

Maintenant la cible peut être identifié par son nom sur internet ou son adresse IP. On peut désigner un ensemble d'adresse aussi, ou des sous-masques de réseau particulier. Par exemple  domaine.org/24 ou 192.88.209.5/24, 192.88.209.0-255 ou bien encore '128.88.209.*'.

Quelques exemples

L'utilisation la plus simple est celle-ci:

nmap -v cible

Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
No scantype specified, assuming vanilla tcp connect() scan. Use -sP if you reall
y don't want to portscan (and just want to see what hosts are up).
Host cible  (192.168.13.10) appears to be up ... good.
Initiating TCP connect() scan against cible (192.168.13.10)
Adding TCP port 25 (state Open).
Adding TCP port 113 (state Open).
Adding TCP port 619 (state Open).
Adding TCP port 21 (state Open).
Adding TCP port 1024 (state Open).
Adding TCP port 6000 (state Open).
Adding TCP port 110 (state Open).
Adding TCP port 98 (state Open).
Adding TCP port 23 (state Open).
The TCP connect scan took 3 seconds to scan 1483 ports.
Interesting ports on cible (192.168.13.10):
Port    State       Protocol  Service
21      open        tcp        ftp
23      open        tcp        telnet
25      open        tcp        smtp
98      open        tcp        linuxconf
110     open        tcp        pop-3
111     open        tcp        sunrpc
113     open        tcp        auth
515     open        tcp        printer
619     open        tcp        unknown
1024    open        tcp        unknown
6000    open        tcp        X11

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

La commande suivante va permettre de scanner tous les ports TCP réservés :

nmap -sS -O cible
 
Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on cible (192.168.13.11):
Port    State       Protocol  Service
21      open        tcp        ftp
23      open        tcp        telnet
25      open        tcp        smtp
98      open        tcp        linuxconf
110     open        tcp        pop-3
111     open        tcp        sunrpc
113     open        tcp        auth
515     open        tcp        printer
619     open        tcp        unknown
1024    open        tcp        unknown
6000    open        tcp        X11

TCP Sequence Prediction: Class=random positive increments
                         Difficulty=4054800 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2

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

Maintenant on va tester si sshd, DNS, pop3d, imapd (ports respectifs 22, 53, 110 et 143) tournent sur le système et si le port 4564 est utilisé:

nmap -sX -p 22,53,110,143,4564 cible

Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on cible (192.168.13.11):
Port    State       Protocol  Service
53      open        tcp        domain
110     open        tcp        pop-3

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

On constate qu'il n'y a que le DNS (domain) et un serveur POP3 qui marchent sur la machine.

Nessus

Présentation

Nessus est un outil qui permet de tester la sécurisation des postes de votre réseau, il se base en autres sur nmap, mais en plus de tester vos ports, il va scruter les composants logiciels de votre machine, pour déterminer les trous de sécurité et vous avertir sur certaines faiblesses.
Nessus est constitué d'une partie serveur et cliente, les deux peuvent très bien fonctionner sur la même machine.

Installation

Tout d'abord vous devez vous procurez les packages de nessus que vous trouverez à l'URL suivante www.nessus.org, vous constaterez qu'il existe des miroirs un peu partout, ne vous méprenez pas le miroir en France n'est pas forcément le plus rapide, personnellement j'ai téléchargé les packages sur le miroir en Finlande à l'URL www.fi.nessus.org. Voici la liste des packages à récupérer:

nessus-plugins-0_99_5_1-1_i386.rpm (contenant la liste des points de sécurité à vérifier)
nessus-0_99_5_1-1_i386.rpm (contenant le serveur nessusd)
nessus-client-0_99_5_1-1_i386.rpm (contenant le client nessus)

A noter aussi que vous avez besoin d'installer aussi le package nmap (voir chapitre précédent). L'installation est on ne peut plus classique, on commence d'abord par installer nmap, puis nessus, nessus-plugins et enfin nessus-client, avec les commandes:

rpm -ivh nessus-plugins-0_99_5_1-1_i386.rpm
rpm -ivh nessus-0_99_5_1-1_i386.rpm
rpm -ivh nessus-client-0_99_5_1-1_i386.rpm

A noter qu'à l'install du serveur nessusd on a les commentaires suivants:

[root@tavel nessus]# rpm -ivh nessus-0_99_5_1-1_i386.rpm
nessus                      ##################################################
 

nessusd is now ready to run !!

You must at first launch, create an initial user account.
To do that, you must be super-user and enter :

nessusd -P user,password

ie: nessusd -P root,myownpwd

PS: if you upgrade from previous nessus release
    remove your nessus key with :
    rm -f ~/.nessus*

Le serveur nessusd vous indique qu'il faut qu'il faut créer un utilisateur autorisé à utiliser nessus, root me semble un bon choix. La commande à taper est:

nessusd -P root,mot-de-passe-en-clair
Generating primes: ........q............pg

Vous noterez que le mot de passe est en clair.

Utilisation

A présent nous pouvons lancer le serveur par la commande:

nessusd -D

Ca y est le serveur est lancé, la seule signe de son activité est qu'il apparaît dans la liste des process:

NOTE: L'installation RPM fait que nessusd sera lancé à chaque boot de la machine pour éviter cela supprimer les liens suivants

cd /etc/rc.d
rm -f ./rc0.d/K15nessusd   ./rc1.d/K15nessusd    ./rc2.d/K15nessusd   ./rc3.d/S85nessusd  ./rc5.d/S85nessusd    ./rc6.d/K15nessusd   ./rc4.d/S85nessusd

ps -A | grep nessus

pour le client nessus, il suffit de taper nessus, quand on le lance la première fois, voici le resultat de la commande:

[root@tavel nessus]# nessus
Generating primes: ...q........pg

   To protect your private key just generated, enter your personal
   pass phrase, now.  Keep that pass phrase secret.  And each time
   when you restart nessus, re-enter that pass phrase when you are
   asked, for.  This prevents anybody else from logging in to the
   nessus server using your account.

   The drawback of a pass phrase  is that it will prevent you from being
   able to use nessus(1) in a cron job or in a quiet script.
   If you do not want to use a pass phrase, enter a blank one.

   To change or remove the pass phrase, later on read in the manual
   page nessus(1) about the -C option.

New pass phrase:
Repeat         :

Comme vous pouvez le lire en anglais, en plus du mot de passe, vous devez saisir une phrase password (éventuellement limité à un mot), elle sera demandée à chaque lancement du client nessus (en plus du mot de passe). Deux conséquences à cette saisie, elle empêchera que quelqu'un d'autre, connaissant votre mot de passe, utilise nessus et par ailleurs empêche qu'on puisse lancer nessus dans un script ou dans une tâche programmée (avec cron). On peut éventuellement changer la phrase (man nessus option -C).

NOTE: A la saisie de la phrase, rien n'apparaît, même pas des *.
 
 
La fenêtre suivante (à droite) apparaît, vous devez saisir le nom de la machine où tourne le serveur, si la machine et le client tourne sur la même machine, vous pouvez laisser localhost. Laissez le port par défaut, c'est celui utilisé par nessusd.
Vous devez au niveau du champ login saisir l'utilisateur nessus que vous avez créé auparavant.  Sur le site de nessus, vous pouvez trouver d'autres plugins au gré de la découverte de nouveaux trous de sécurité, on vous explique aussi comment les installer, ou éventuellement carrément en créer d'autres tout seul dans son coin.
Maintenant vous pouvez vous connecter au serveur en appuyant sur le bouton Log in. A la première connexion, vous aurez sans doute un message et puis rien du tout, réessayer une deuxième, on vous demande alors le mot de passe. Vous voyez alors que le champ du bouton Log in se change en Log out, c'est bon vous êtes connectés.
Une fois connectée dans le champ plugins, vous verrez la liste des points à vérifier (liste du haut), la liste du bas contenant les détails du point sélectionné dans celle du haut, vous pouvez éventuellement invalider certains points à vérifier. A noter que vous avez des infos bulles fort riches quand vous passez la souris sur un champ. Par défaut tout est sélectionné.
Dans l'onglet Prefs, vous pouvez saisir d'autres informations, notamment un nom d'utilisateur valide et son mot de passe si votre machine est aussi serveur POP.
Dans l'onglet Scan options, vous avez encore d'autres options pour la vérification, je n'y ai pas touché.
Dans l'onglet User, vous devez indiquer l'adresse email de la personne destinataire du rapport (root@locahost par défaut).

Dans l'onglet Targer Selection, vous devez indiquer la machine cible dont on va auditer la sécurité en rentrant son adresse IP, éventuellement si vous voulez auditer toutes les machines du réseau 192.168.13.X, saisissez comme dans le screenshot 192.168.13.0/24.
Voilà, on peut lancer maintenant le scan en appuyant sur le bouton "Start the scan", une fenêtre apparaît avec une barre d'avancament. Le scan peut être relativement long, ça dépend évidemment de la puissance de votre machine, du coup soyez patient et ne l'interrompez pas même s'il parait bloqué.
Une fois le scan terminé, une fenêtre "Report" apparaît avec le détail des trous de sécurité et des warnings, vous pouvez éventuellement sauvegarder le rapport au format désiré (html, txt, latex, ....) (bouton du milieu en bas).

Retour haut de la page