Effectuer des analyses Nessus

Nessus est un outil d'analyse de sécurité utilisé pour détecter les failles de sécurité dans le matériel et les logiciels.

Ce document présente les étapes à suivre pour :

  • installer Nessus

  • effectuer des analyses Nessus ;

  • exporter les résultats d'analyse Nessus ;

1. Arrière-plan

Tenable Nessus est un outil tiers sous licence. Veuillez consulter les ressources suivantes pour en savoir plus sur Nessus :

2. Avant de commencer

  • Station de travail

    • Le programme d'amorçage (te-bf) ou un poste de travail opérateur équivalent accessible est requis pour héberger Nessus.
  • Accès obligatoire

    • Suivez IAM-R0005 :

      • Obtenez un rôle d'administrateur de cluster pour chaque cluster cible.
    • Suivez IAM-R0004 :

      • Générez le fichier KUBECONFIG pour chaque cluster cible.
  • Outils requis

    • kubectl
    • ssh-keygen
  • Logiciel

    • Vous devez disposer d'un programme d'installation Nessus compatible avec l'OS de votre poste de travail. Obtenez le programme d'installation sur https://www.tenable.com/downloads/nessus et transférez-le sur le poste de travail Nessus avant de continuer.
  • Licences

    • Un seul code d'activation de licence Tenable Nessus (Pro, Export ou Manager) est requis. Si vous ne disposez pas de code d'activation de licence, contactez le point de contact de votre équipe pour les licences tierces ou la nomenclature logicielle.

3. Installer Nessus

Cette section décrit la procédure d'installation de Nessus sur le poste de travail Nessus.

Si Nessus est déjà installé et activé, vous pouvez ignorer cette section.

Si Nessus n'est plus disponible (par exemple, s'il a été installé sur une machine qui n'existe plus), la licence utilisée pour activer l'instance précédente de Nessus doit être réinitialisée avant de continuer.

  1. Exportez le chemin d'accès au programme d'installation Nessus :

    NESSUS_INSTALLER=
    
  2. Installez Nessus avec dpkg :

    dpkg -i ${NESSUS_INSTALLER:?}
    
  3. Redémarrez Nessus et vérifiez qu'il s'exécute :

    sudo systemctl restart nessusd
    sudo systemctl status nessusd
    
  4. Obtenir le code de validation pour enregistrer Nessus hors connexion :

    /opt/nessus/sbin/nessuscli fetch --challenge
    
  5. Sur une machine connectée à Internet, accédez à la page d'activation hors connexion de Nessus : https://plugins.nessus.org/v2/offline.php.

  6. Copiez le code d'activation hors connexion et le code d'activation de la licence Nessus, puis collez-les sur la page d'activation hors connexion de Nessus et appuyez sur "Envoyer".

  7. La page d'activation hors connexion de Nessus doit désormais afficher une URL de plug-in Nessus et une licence produit. Vous aurez besoin de ces deux valeurs pour les étapes suivantes.

  8. Enregistrez l'URL du plug-in Nessus dans un endroit sûr pour pouvoir vous y référer ultérieurement, car vous en aurez besoin plus loin dans ce guide.

  9. Enregistrez la licence depuis la page d'activation hors connexion de Nessus sur le poste de travail Nessus dans un fichier nommé /opt/nessus/etc/nessus/nessus.license.

  10. Appliquez la licence à Nessus :

    /opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
    
  11. Créez un administrateur :

    Suivez les instructions de nessuscli adduser pour créer un utilisateur admin. Ces identifiants seront utilisés ultérieurement pour effectuer des analyses et télécharger les résultats. Veillez donc à les enregistrer dans un endroit sûr.

    /opt/nessus/sbin/nessuscli adduser
    
  12. Lorsque Nessus est en cours d'exécution, son interface utilisateur est accessible sur le port 8834. Dans le navigateur de votre choix, accédez à https://<nessus-workstation-ip>:8834 et connectez-vous en tant qu'utilisateur admin.

4. Mettre à jour les plug-ins Nessus

Les derniers plug-ins Nessus doivent être téléchargés et appliqués à Nessus avant d'exécuter des analyses pour s'assurer que les résultats sont pertinents et à jour. Les plug-ins Nessus doivent être obtenus directement auprès de Tenable à l'aide de l'URL du plug-in Nessus obtenue sur la page d'activation hors connexion de Nessus.

  1. Obtenez le bundle de plug-ins.

    Option 1 : Accédez à l'URL du plug-in Nessus à l'aide du navigateur de votre choix. Le bundle sera téléchargé automatiquement.

    Option 2 : Télécharger le bundle à l'aide de wget wget "${PLUGIN_URL:?}" -O plugin-updates.tar.gz

  2. Transférez le bundle de plug-ins vers le poste de travail Nessus et exportez l'emplacement du fichier :

    NESSUS_PLUGIN_BUNDLE=
    
  3. Appliquez les mises à jour du plug-in à Nessus :

    /opt/nessus/sbin/nessuscli update ${NESSUS_PLUGIN_BUNDLE:?}
    
  4. La compilation des mises à jour de plug-ins prend environ 30 minutes. Vous pouvez suivre les étapes suivantes pour créer des analyses pendant ce processus, mais attendez que les plug-ins aient fini de compiler avant de les exécuter.

5. Configurer les analyses Nessus

Des analyses doivent être créées pour chaque combinaison unique de classe cible et d'identifiant. Cette section explique comment créer l'analyse nécessaire à l'aide de l'interface utilisateur Nessus.

Avant de continuer, vérifiez que vous avez accès à l'interface utilisateur Nessus à l'adresse https://<nessus-workstation-ip>:8834 et connectez-vous en tant qu'utilisateur admin.

5.1. Collecter les CIDR de réseau

Les analyses Nessus sont créées pour analyser les CIDR de réseau externe et interne de l'environnement.

  1. Collectez les CIDR de réseau externe et interne pour le réseau de l'appliance cible (idéalement, ce réseau ne doit pas chevaucher un autre environnement voisin).

  2. Les plages d'adresses IP incluront probablement l'adresse IP du programme d'amorçage ou d'autres adresses IP qui ne doivent pas être analysées. Saisissez les commandes suivantes pour chaque adresse IP qui ne doit pas être analysée (adresse IP du programme d'amorçage, par exemple) :

    IGNORE_IP=
    IGNORE_IP_REASON=
    
    echo "# ${IGNORE_IP_REASON:?}" >> /opt/nessus/etc/nessus/nessusd.rules
    echo "reject ${IGNORE_IP:?}" >>  /opt/nessus/etc/nessus/nessusd.rules
    

5.2. Analyses de découverte d'hôtes

Les analyses de découverte du réseau ne sont pas authentifiées et sont destinées à balayer un réseau à la recherche de cibles et d'expositions réseau non sécurisées.

Cette analyse sera configurée pour analyser les CIDR de réseau externe et interne identifiés dans la section précédente.

Dans l'interface utilisateur Nessus :

  1. Créez une analyse de découverte d'hôte appelée host-discovery.
  2. Spécifiez les hôtes : les CIDR externes et internes.
  3. Enregistrer et lancer

5.3. Analyses de l'OS des nœuds

Les analyses de nœuds sont authentifiées et destinées à inspecter les systèmes d'exploitation critiques pour détecter les failles connues, les configurations non sécurisées et la conformité.

Parcourez cette section pour le cluster d'infrastructure de l'organisation :

  1. Exportez le fichier kubeconfig du cluster :

    KUBECONFIG=
    
  2. Répertoriez tous les nœuds du cluster :

    kubectl --kubeconfig=${KUBECONFIG:?} get nodes -o wide
    
  3. Notez la colonne qui affiche l'adresse IP des données pour chaque nœud. Avant de continuer, vérifiez que l'adresse IP des données est accessible depuis le poste de travail Nessus avec la commande ping.

    ping <node_data_ip>
    
  4. Dans l'interface utilisateur de Nessus, commencez à créer une "analyse avancée" nommée nodeos-compliance-<cluster_name>.

  5. Dans l'analyse avancée, remplissez le champ "Hôtes" avec une liste d'adresses IP de données de nœud séparées par une virgule, comme à l'étape 1.

  6. Suivez les instructions de l'annexe : Ajouter des identifiants SSH pour les nœuds de cluster pour ajouter des identifiants d'analyse.

  7. Accédez à l'onglet "Conformité", puis sélectionnez la dernière révision disponible de "DISA STIG Ubuntu 20.04 v1". Enregistrez la configuration de conformité telle quelle, sans modifier les valeurs par défaut.

  8. Enregistrez la configuration de l'analyse et lancez-la.

5.4. Faire une pause

Les analyses devraient prendre plus de 30 minutes. C'est le bon moment pour faire une pause ou faire autre chose jusqu'à ce qu'elles soient terminées.

6. Exporter les résultats de l'analyse

Cette section explique comment exporter les résultats d'analyse.

Pour chaque analyse terminée, téléchargez les résultats :

  1. Sélectionnez l'analyse terminée pour examiner ses résultats.

  2. Cliquez sur le bouton "Signaler" en haut à droite.

  3. Choisissez le format CSV pour le rapport et sélectionnez toutes les colonnes.

  4. Cliquez sur "Générer un rapport". Après un bref délai, le rapport devrait être téléchargé.

  5. (Facultatif) Si un rapport HTML est également requis, choisissez plutôt le format de rapport HTML et le modèle de rapport qui vous semble approprié. Le modèle de rapport recommandé est "Detailed Vulnerabilities By Plugin with Compliance/Remediation" (Vulnérabilités détaillées par plug-in avec conformité/correction).

7. Étapes suivantes

Les rapports CSV / HTML obtenus doivent être traités conformément aux processus de sécurité de votre environnement. En cas de doute, contactez un point de contact SecOps ou Conformité pour obtenir des instructions supplémentaires.

8. Annexe

8.1. Ajouter des identifiants SSH pour les nœuds de cluster

Cette section décrit la procédure à suivre pour obtenir un ensemble d'identifiants SSH permettant à Nessus d'analyser les nœuds d'un cluster cible.

  1. Exportez le fichier kubeconfig du cluster :

    KUBECONFIG=
    
  2. Lister les clés SSH du cluster

    kubectl --kubeconfig=${KUBECONFIG} get -A secret | grep ssh-key
    
  3. Identifiez l'espace de noms du secret "ssh-key" correspondant au cluster cible, puis exportez l'espace de noms :

    CLUSTER_NS=
    
  4. Créez un répertoire ssh Nessus :

    NESSUS_FOLDER=nessus
    mkdir -p ${NESSUS_FOLDER}/.ssh
    
  5. Exportez la paire de clés SSH vers le répertoire SSH de Nessus :

    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    
    kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa-cert\.pub }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  6. Corrigez les autorisations de la paire de clés :

    # fix permissions
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
    
  7. Convertissez la clé privée au format PEM avec une phrase secrète vide :

    ssh-keygen -p -m PEM -f ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
    

    Un résultat concluant doit ressembler à ceci :

    Key has comment 'root@te-bd-bootstrapper'
    Enter new passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved with the new passphrase.
    
  8. Transférez nessus-<cluster>-id_rsa et nessus-<cluster>-id_rsa-cert.pub vers le poste de travail utilisé pour accéder à l'interface utilisateur Nessus.

  9. Dans l'interface utilisateur de Nessus, accédez à l'onglet "Credentials" (Identifiants) des paramètres d'analyse.

  10. Créez un identifiant SSH et sélectionnez "certificat" comme méthode d'authentification.

  11. Fournissez les paramètres suivants pour la méthode d'authentification SSH par certificat :

    • Nom d'utilisateur : "root"

    • Certificat utilisateur : ajouter un fichier nessus-<cluster>-id_rsa-cert.pub

    • Clé privée : Ajouter un fichier nessus-<cluster>-id_rsa

  12. Enregistrez les paramètres SSH.

  13. Revenez à l'endroit où cette section a été référencée.