Installer et utiliser OpenVAS sous CentOS

Logo OpenVASOpenVAS (Vulnerability Assessment Scanner) est un outil qui permet d’effectuer un audit de sécurité d’une machine ou d’un réseau entier. Dans le monde de l’open source, OpenVAS est sans doute le logiciel phare dans la catégorie des scanners de vulnérabilité. C’est un fork libre de Nessus, publié sous licence GPL jusqu’à la version 2.2, et qui est devenu propriétaire lors de son passage à la version 3.0. L’application est officiellement supportée par le BSI (Bundesamt für Sicherheit in der Informationstechnik, l’agence fédérale allemande chargée de la sécurité des technologies de l’information et de la communication).

OpenVAS n’est pas très bien documenté, hormis une série de tutos en ligne qui relaient des informations parfois un peu fantaisistes. Je me suis donc familiarisé avec les documents disponibles, j’ai expérimenté pas mal, j’ai pris des notes, et j’ai décidé de rédiger ma propre documentation.

L’outil OpenVAS est un framework (comprendre “usine à gaz”), et son installation n’est pas tout à fait triviale. Sur une configuration récente, il faut compter près de trois quarts d’heure pour disposer d’une installation fonctionnelle. En revanche, une fois qu’OpenVAS est en place, sa prise en main est extrêmement simple.

OpenVAS

Quel dépôt tiers choisir ?

Pour Red Hat Enterprise Linux et CentOS, OpenVAS est fourni par deux dépôts de paquets tiers concurrents.

La plupart des tutos en ligne font référence au dépôt tiers Atomicorp, fournissant un seul paquet openvas qui contient tout ce qu’il faut. Curieusement,  la documentation officielle sur le site de l’éditeur renvoie même vers un de ces tutos.

Pour ma part, je préfère m’en tenir au dépôt EPEL, qui fournit des paquets de qualité pour Red Hat Enterprise Linux et CentOS, et que j’utilise sur mes serveurs aussi bien que sur mes postes de travail. Les paquets EPEL fournissent une série de paquets pour OpenVAS, étant donné qu’il s’agit là d’un véritable framework avec une série de composants.

  • openvas-scanner
  • openvas-libraries
  • openvas-manager
  • openvas-cli
  • openvas-gsa

OpenVAS Scanner

La pièce centrale d’OpenVAS, c’est OpenVAS Scanner. Je vais donc l’installer en premier.

# yum install openvas-scanner

D’après la documentation officielle, ce paquet contient un script shell openvas-check-setup qui permet de vérifier l’état de l’installation d’OpenVAS. À partir de là, je vais adopter une démarche quelque peu originale pour installer et configurer OpenVAS. Je vais me servir des messages d’erreur et autres avertissements du script openvas-check-setup pour compléter la mosaïque pas à pas.

Création du certificat SSL

Une première invocation du script me renvoie ceci.

# openvas-check-setup 
...
Checking OpenVAS Scanner ... 
OK: OpenVAS Scanner is present in version 5.0.6.
ERROR: No CA certificate file of OpenVAS Scanner found.
FIX: Run 'openvas-mkcert'.

Je génère le certificat SSL comme le script me le suggère. J’opte pour une validité de dix ans pour être tranquille.

# openvas-mkcert
...
CA certificate life time in days [1460]: 3650
Server certificate life time in days [365]: 3650
Your country (two letter code) [DE]: FR
Your state or province name [none]: Gard
Your location (e.g. town) [Berlin]: Montpezat
Your organization [OpenVAS Users United]: Microlinux

Le serveur Redis

Redis (Remote Dictionary Server) est un système de gestion de bases de données clé/valeur. Il fait partie de la famille des bases NoSQL et vise la performance. Et notre système OpenVAS a visiblement besoin d’un serveur Redis pour fonctionner correctement.

# openvas-check-setup
...
ERROR: No redis-server installation found.
FIX: You should install redis-server for improved scalability and 
     ability to trace/debug the KB

On va donc installer Redis.

# yum install redis

Éditer /etc/redis.conf et spécifier un emplacement approprié pour le fichier socket, aux alentours de la ligne 100.

# Unix socket.
#
# Specify the path for the Unix socket that will be used to listen 
# for incoming connections. There is no default, so Redis will not 
# listen on a unix socket when not specified.
#
unixsocket /run/redis/redis.sock

Ensuite, éditer /etc/openvas/openvassd.conf et ajouter une ligne pour spécifier l’emplacement de la Knowledge Base.

# KB test replay :
kb_dont_replay_scanners = no
kb_dont_replay_info_gathering = no
kb_dont_replay_attacks = no
kb_dont_replay_denials = no
kb_max_age = 864000
kb_location = /run/redis/redis.sock
#--- end of the KB section

Activer et démarrer Redis.

# systemctl enable redis
# systemctl start redis
# systemctl status redis

Récupérer les tests de vulnérabilité

OpenVAS se sert d’une base de près de 50.000 tests de vulnérabilité, nommée NVT (Network Vulnerability Tests). Pour l’instant nous ne disposons pas de cette base.

# openvas-check-setup
...
ERROR: The NVT collection is very small.
FIX: Run a synchronization script like openvas-nvt-sync 
     or greenbone-nvt-sync.

Nous allons utiliser la commande openvas-nvt-sync pour récupérer les NVT.

# openvas-nvt-sync
...
zabbix_web_detect.nasl.asc
znc_detect.nasl
znc_detect.nasl.asc
zone_alarm_local_dos.nasl
zone_alarm_local_dos.nasl.asc
[i] Download complete
[i] Checking dir: ok
[i] Checking MD5 checksum: ok

OpenVAS Manager

Le prochain élément du framework, c’est OpenVAS Manager, le service qui contrôle OpenVAS Scanner via le protocole OTP (OpenVAS Transfer Protocol). Cette pièce nous manque pour l’instant.

# openvas-check-setup
...
ERROR: No OpenVAS Manager (openvasmd) found.
FIX: Please install OpenVAS Manager.

Il faut donc installer le paquet correspondant.

# yum install openvas-manager

Générer le certificat SSL client

OpenVAS Manager a besoin d’un certificat SSL client pour se connecter.

# openvas-check-setup
...
ERROR: No client certificate file of OpenVAS Manager found.
FIX: Run 'openvas-mkcert-client -n -i'

Ici, nous allons dévier quelque peu de la procédure suggérée. L’option -n exécute le script en mode non-interactif en acceptant les valeurs par défaut. Nous allons nous contenter de l’option -i qui se charge d’installer le certificat, et là aussi, nous allons générer un certificat SSL valable pour dix ans.

# openvas-mkcert-client -i
Client certificates life time in days [365]: 3650
Your country (two letter code) [DE]: FR
Your state or province name [none]: Gard
Your location (e.g. town) [Berlin]: Montpezat
Your organization [none]: Microlinux
Your organizational unit [none]:
e-Mail []: info@microlinux.fr

Construire la base de données

Pour l’instant, OpenVAS Manager ne dispose pas de base de données.

# openvas-check-setup
...
ERROR: No OpenVAS Manager database found. 
       (Tried: /var/lib/openvas/mgr/tasks.db)
FIX: Run 'openvasmd --rebuild' while OpenVAS Scanner is running.

Dans un premier temps, on va activer et démarrer OpenVAS Scanner.

# systemctl enable openvas-scanner
# systemctl start openvas-scanner
# systemctl status openvas-scanner

Ensuite, on va construire la base de données. L’option --progress ne nous dit pas grand-chose sur l’avancement des opérations, mais au moins, la petite animation qui s’excite progressivement suggère que ça mouline sous le capot. Étant donné qu’il y a plus de 50.000 entrées à traiter, l’opération peut durer un petit moment. Même sur une machine rapide, on a largement le temps d’aller boire un café.

# openvasmd --rebuild --progress
Rebuilding NVT cache... \

Créer un utilisateur

La prochaine étape consiste à créer un utilisateur qui puisse se connecter à OpenVAS Manager.

# openvas-check-setup
...
ERROR: No users found. You need to create at least one user 
       to log in.
It is recommended to have at least one user with role Admin.
FIX: create a user by running 'openvasmd --create-user=<name>
     --role=Admin && 
     openvasmd --user=<user> --new-password=<password>'

Attention au mot de passe qui s’affiche en clair dans le terminal.

# openvasmd --create-user=microlinux --role=Admin
User created with password 'd6edadcd-ce9e-45cf-bb3c-4382b6d6e071'.
# openvasmd --user=microlinux --new-password=*********

Récupérer la base SCAP

La prochaine étape consiste à récupérer la base SCAP (Security Content Automation Protocol).

# openvas-check-setup
...
ERROR: No OpenVAS SCAP database found. 
(Tried: /var/lib/openvas/scap-data/scap.db)
FIX: Run a SCAP synchronization script like openvas-scapdata-sync 
     or greenbone-scapdata-sync.

La commande openvas-scapdata-sync nous permet de récupérer la base. Cette opération peut durer une bonne vingtaine de minutes.

# openvas-scapdata-sync
[i] This script synchronizes a SCAP data directory with the 
    OpenVAS one.
...
[i] Updating CVSS scores and CVE counts for CPEs
[i] Updating CVSS scores for OVAL definitions
[i] Updating placeholder CPEs

Récupérer la base CERT

La troisième et dernière base de données nécessaire pour le bon fonctionnement d’OpenVAS, c’est la base CERT.

# openvas-check-setup 
...
ERROR: No OpenVAS CERT database found. 
       (Tried: /var/lib/openvas/cert-data/cert.db)
FIX: Run a CERT synchronization script like openvas-certdata-sync 
     or greenbone-certdata-sync.

De manière similaire, c’est la commande openvas-certdata-sync qui nous permet de récupérer cette base.

# openvas-certdata-sync
[i] This script synchronizes a CERT advisory directory with the 
    OpenVAS one.
...
[i] Updating Max CVSS for CERT-Bund
[i] Updating Max CVSS for DFN-CERT

Greenbone Security Assistant

Le troisième composant du framework, c’est le Greenbone Security Assistant.

# openvas-check-setup
...
ERROR: No Greenbone Security Assistant (gsad) found.
FIX: Please install Greenbone Security Assistant.

Installer le paquet correspondant.

# yum install openvas-gsa

OpenVAS CLI

Enfin, le quatrième et dernier composant du framework, c’est OpenVAS CLI.

# openvas-check-setup
...
ERROR: No OpenVAS CLI (omp) found.
FIX: Please install OpenVAS CLI.

Là aussi, il suffit d’installer le paquet correspondant.

# yum install openvas-cli

Activer et démarrer les services

Le service openvas-scanner est déjà activé et lancé, mais il nous manque encore les deux autres.

# openvas-check-setup
...
ERROR: OpenVAS Manager is NOT running!
FIX: Start OpenVAS Manager (openvasmd).
ERROR: Greenbone Security Assistant is NOT running!
FIX: Start Greenbone Security Assistant (gsad).

Activer et démarrer OpenVAS Manager.

# systemctl enable openvas-manager
# systemctl start openvas-manager
# systemctl status openvas-manager

Procéder de même avec le Greenbone Security Assistant.

# systemctl enable openvas-gsa
# systemctl start openvas-gsa
# systemctl status openvas-gsa

Installer les outils tiers

OpenVAS utilise une série d’outils tiers, qui ne sont pas fournis par une installation par défaut.

# openvas-check-setup
...
WARNING: Could not find pdflatex binary, the PDF report format will 
         not work.
SUGGEST: Install pdflatex.
...
WARNING: Could not find alien binary, LSC credential package 
         generation for DEB based targets will not work.
SUGGEST: Install alien.
WARNING: Could not find makensis binary, LSC credential package 
         generation for Microsoft Windows targets will not work.
SUGGEST: Install nsis.

Installer les paquets manquants comme ceci.

# yum install texlive-latex-bin-bin alien mingw32-nsis

Note: la génération de PDF échoue toujours, malgré l’installation de pdflatex. L’erreur PDF generation failed, most likely due to missing LaTeX packages est dûe au paquet manquant texlive-collection-latexextra, qui n’est pour l’instant pas disponible pour CentOS 7.

Premier essai avec l’assistant

La dernière invocation du script openvas-check-setup nous a certes encore affiché quelques avertissements, mais aucune erreur et rien de prohibitif. Le moment est venu de faire un premier test.

# openvas-check-setup
...
It seems like your OpenVAS-8 installation is OK.

Dans la configuration par défaut, le Greenbone Security Assistant écoute sur le port 9443. Étant donné que j’ai installé le serveur et le client sur la même machine, je dois me connecter à https://localhost:9443. L’avertissement sur la connexion non sécurisée est tout à fait normal, vu que j’utilise un certificat SSL auto-signé. Je clique sur Avancé.

OpenVAS

Je clique sur Ajouter une exception.

OpenVAS

Et enfin, je confirme l’exception de sécurité de façon permanente.

OpenVAS

La fenêtre de connexion du Greenbone Security Assistant s’affiche. Je fournis l’identifiant et le mot de passe définis lors de l’installation.

OpenVAS

La prise en main du Greenbone Security Assistant est extrêmement simple. Le champ Quick Start permet de saisir l’adresse IP ou le nom d’hôte d’une machine à scanner. Il peut s’agir d’une machine publique ou d’un poste dans le réseau local. Il est tout à fait possible de scanner plusieurs machines en même temps. Un simple clic sur le lien correspondant à une machine nous amène au rapport de vulnérabilité.

OpenVAS

Voici comment se présente le rapport de sécurité d’une machine. Les vulnérabilités sont classées par ordre de sévérité, et un clic sur chaque lien fournit les détails de la faille en question ainsi que la solution pour y remédier.

OpenVAS

La correction des failles de sécurité trouvées par OpenVAS fera l’objet d’une série d’articles détaillés.

 

Ce contenu a été publié dans CentOS, Documentation Microlinux, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *