Nessus-Scans durchführen

Nessus ist ein Sicherheitsscanner, mit dem Sicherheitslücken in Hardware und Software erkannt werden.

In diesem Dokument werden die Schritte zum Ausführen der folgenden Aufgaben beschrieben:

  • Nessus installieren

  • Nessus-Scans durchführen

  • Nessus-Scanergebnisse exportieren

1. Hintergrund

Tenable Nessus ist ein lizenziertes Drittanbietertool. Weitere Informationen zu Nessus finden Sie in den folgenden Ressourcen:

2. Hinweise

  • Workstation

    • Für das Hosting von Nessus ist der Bootstrapper (te-bf) oder eine gleichwertige Workstation mit Bedienerzugriff erforderlich.
  • Zugriff erforderlich

    • Folgen Sie IAM-R0005:

      • Weisen Sie sich für jeden Zielcluster eine Clusteradministratorrolle zu.
    • Folgen Sie IAM-R0004:

      • Generieren Sie die KUBECONFIG für jeden Zielcluster.
  • Erforderliche Tools

    • kubectl
    • ssh-keygen
  • Software

    • Sie benötigen ein mit dem Betriebssystem Ihrer Workstation kompatibles Nessus-Installationsprogramm. Laden Sie das Installationsprogramm von https://www.tenable.com/downloads/nessus herunter und übertragen Sie es auf die Nessus-Workstation, bevor Sie fortfahren.
  • Lizenzierung

    • Ein einzelner Aktivierungscode für eine Tenable Nessus-Lizenz (Pro, Export oder Manager) ist erforderlich. Wenn Sie keinen Lizenzaktivierungscode haben, wenden Sie sich an den POC Ihres Teams für Drittanbieterlizenzen / Software-Stückliste.

3. Nessus installieren

In diesem Abschnitt wird beschrieben, wie Sie Nessus auf der Nessus-Workstation installieren.

Wenn Nessus bereits installiert und aktiviert ist, kann dieser Abschnitt übersprungen werden.

Wenn Nessus nicht mehr verfügbar ist (z. B. weil es auf einem Computer installiert wurde, der nicht mehr vorhanden ist), muss die Lizenz, mit der die vorherige Instanz von Nessus aktiviert wurde, zurückgesetzt werden, bevor Sie fortfahren können.

  1. Exportieren Sie den Pfad zum Nessus-Installationsprogramm:

    NESSUS_INSTALLER=
    
  2. Nessus mit dpkg installieren:

    dpkg -i ${NESSUS_INSTALLER:?}
    
  3. Starten Sie Nessus neu und prüfen Sie, ob es ausgeführt wird:

    sudo systemctl restart nessusd
    sudo systemctl status nessusd
    
  4. Challenge-Code zum Registrieren von Nessus offline abrufen:

    /opt/nessus/sbin/nessuscli fetch --challenge
    
  5. Rufen Sie auf einem mit dem Internet verbundenen Computer die Nessus-Seite zur Offline-Aktivierung https://plugins.nessus.org/v2/offline.php auf.

  6. Kopieren Sie den Nessus-Offline-Aktivierungscode und den Nessus-Lizenzaktivierungscode auf die Nessus-Offline-Aktivierungsseite und klicken Sie auf „Senden“.

  7. Auf der Seite für die Nessus-Offlineaktivierung sollten jetzt eine Nessus-Plug-in-URL und eine Produktlizenz angezeigt werden. Beide Werte werden für die nächsten Schritte benötigt.

  8. Speichern Sie die Nessus-Plug-in-URL an einem sicheren Ort, da Sie sie später in dieser Anleitung benötigen.

  9. Speichern Sie die Lizenz von der Nessus-Seite für die Offlineaktivierung auf der Nessus-Workstation in einer Datei mit dem Namen /opt/nessus/etc/nessus/nessus.license.

  10. Wenden Sie die Lizenz auf Nessus an:

    /opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
    
  11. Administrator erstellen:

    Folgen Sie der Anleitung von nessuscli adduser, um einen admin-Nutzer zu erstellen. Diese Anmeldedaten werden später zum Ausführen von Scans und zum Herunterladen von Ergebnissen verwendet. Speichern Sie sie daher an einem sicheren Ort.

    /opt/nessus/sbin/nessuscli adduser
    
  12. Während Nessus ausgeführt wird, ist die Benutzeroberfläche über Port 8834 zugänglich. Rufen Sie in Ihrem bevorzugten Browser https://<nessus-workstation-ip>:8834 auf und melden Sie sich als admin-Nutzer an.

4. Nessus-Plug-ins aktualisieren

Die neuesten Nessus-Plug-ins müssen heruntergeladen und auf Nessus angewendet werden, bevor Scans ausgeführt werden, damit die Scanergebnisse relevant und aktuell sind. Die Nessus-Plug-ins müssen direkt von Tenable über die Nessus-Plug-in-URL bezogen werden, die Sie auf der Nessus-Seite für die Offlineaktivierung erhalten.

  1. Plug-in-Bundle abrufen

    Option 1: Rufen Sie die Nessus-Plugin-URL in Ihrem bevorzugten Browser auf. Das Bundle wird automatisch heruntergeladen.

    Option 2: Bundle mit wget herunterladen wget "${PLUGIN_URL:?}" -O plugin-updates.tar.gz

  2. Übertragen Sie das Plug-in-Bundle auf die Nessus-Workstation und exportieren Sie den Speicherort der Datei:

    NESSUS_PLUGIN_BUNDLE=
    
  3. Wenden Sie die Plug-in-Updates auf Nessus an:

    /opt/nessus/sbin/nessuscli update ${NESSUS_PLUGIN_BUNDLE:?}
    
  4. Es dauert etwa 30 Minuten, bis die Kompilierung von Plugin-Updates abgeschlossen ist. Sie können mit den nächsten Schritten zum Erstellen von Scans fortfahren, während dies geschieht. Führen Sie die Scans jedoch erst aus, wenn die Kompilierung der Plug-ins abgeschlossen ist.

5. Nessus-Scans konfigurieren

Scans müssen für jede eindeutige Kombination aus Zielklasse und Anmeldedaten erstellt werden. In diesem Abschnitt wird beschrieben, wie Sie den erforderlichen Scan über die Nessus-Benutzeroberfläche erstellen.

Bevor Sie fortfahren, bestätigen Sie den Zugriff auf die Nessus-Benutzeroberfläche unter https://<nessus-workstation-ip>:8834 und melden Sie sich als admin-Nutzer an.

5.1 Netzwerk-CIDRs erfassen

Nessus-Scans werden erstellt, um die externen und internen Netzwerk-CIDRs für die Umgebung zu scannen.

  1. Erfassen Sie die externen und internen Netzwerk-CIDRs für das Ziel-Appliance-Netzwerk. Idealerweise überschneidet sich dieses Netzwerk nicht mit einer anderen benachbarten Umgebung.

  2. Die IP-Bereiche enthalten wahrscheinlich die Bootstrapper-IP oder andere IPs, die nicht gescannt werden sollten. Geben Sie die folgenden Befehle für jede IP-Adresse ein, die nicht gescannt werden soll (z. B. die Bootstrapper-IP):

    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 Host-Erkennungsscans

Netzwerkermittlungsscans sind nicht authentifiziert und sollen ein Netzwerk nach Zielen und unsicheren Netzwerkexpositionen durchsuchen.

Dieser Scan wird so konfiguriert, dass die im vorherigen Abschnitt angegebenen externen und internen Netzwerk-CIDRs gescannt werden.

In der Nessus-Benutzeroberfläche:

  1. Erstellen Sie einen Host-Erkennungsscan mit dem Namen host-discovery.
  2. Hosts angeben: sowohl externe als auch interne CIDRs
  3. Speichern und starten

5.3 Betriebssystem-Scans für Knoten

Knoten-Scans werden authentifiziert und sollen kritische Betriebssysteme auf bekannte Sicherheitslücken, unsichere Konfigurationen und Compliance prüfen.

Gehen Sie diesen Abschnitt für den Infrastrukturcluster der Organisation durch:

  1. Exportieren Sie die kubeconfig-Datei des Clusters:

    KUBECONFIG=
    
  2. Alle Clusterknoten auflisten:

    kubectl --kubeconfig=${KUBECONFIG:?} get nodes -o wide
    
  3. Sehen Sie sich die Spalte an, in der die Daten-IP für jeden Knoten angezeigt wird. Prüfen Sie noch einmal, ob die Daten-IP von der Nessus-Workstation aus mit „ping“ erreichbar ist, bevor Sie fortfahren.

    ping <node_data_ip>
    
  4. Erstellen Sie in der Nessus-Benutzeroberfläche einen „Advanced scan“ (Erweiterter Scan) mit dem Namen nodeos-compliance-<cluster_name>.

  5. Füllen Sie im erweiterten Scan das Feld „Hosts“ mit einer durch Kommas getrennten Liste aller Knoten-Daten-IPs aus Schritt 1 aus.

  6. Folgen Sie der Anleitung unter Anhang: SSH-Anmeldedaten für Clusterknoten hinzufügen, um Scan-Anmeldedaten hinzuzufügen.

  7. Rufen Sie den Tab „Compliance“ auf und wählen Sie die neueste verfügbare Version von „DISA STIG Ubuntu 20.04 v1“ aus. Speichern Sie die Compliance-Konfiguration unverändert, ohne die Standardwerte zu ändern.

  8. Speichern Sie die Scankonfiguration und starten Sie den Scan.

5.4. Pause machen

Die Scans sollten mindestens 30 Minuten dauern. Jetzt ist ein guter Zeitpunkt, eine Pause einzulegen oder etwas anderes zu tun, bis die Vorgänge abgeschlossen sind.

6. Scanergebnisse exportieren

In diesem Abschnitt wird beschrieben, wie Sie Scanergebnisse exportieren.

Laden Sie für jeden abgeschlossenen Scan die Ergebnisse herunter:

  1. Wählen Sie den abgeschlossenen Scan aus, um die Ergebnisse zu prüfen.

  2. Klicken Sie rechts oben auf die Schaltfläche „Bericht“.

  3. Wählen Sie das Berichtsformat „CSV“ aus und wählen Sie alle Spalten aus.

  4. Klicken Sie auf „Bericht erstellen“. Nach kurzer Zeit sollte der Bericht heruntergeladen werden.

  5. Optional: Wenn auch ein HTML-Bericht erforderlich ist, wählen Sie stattdessen das Berichtsformat „HTML“ und eine geeignete Berichtsvorlage aus. Die empfohlene Berichtsvorlage ist „Detailed Vulnerabilities By Plugin with Compliance/Remediation“ (Detaillierte Sicherheitslücken nach Plug-in mit Compliance/Abhilfemaßnahmen).

7. Nächste Schritte

Die resultierenden CSV-/HTML-Berichte müssen gemäß den Sicherheitsprozessen Ihrer Umgebung verarbeitet werden. Wenden Sie sich im Zweifelsfall an einen SecOps- oder Compliance-POC, um weitere Informationen zu erhalten.

8. Anhang

8.1 SSH-Anmeldedaten für Clusterknoten hinzufügen

In diesem Abschnitt wird beschrieben, wie Sie SSH-Anmeldedaten für Nessus erhalten, damit die Knoten eines Zielclusters gescannt werden können.

  1. Exportieren Sie die kubeconfig-Datei des Clusters:

    KUBECONFIG=
    
  2. SSH-Schlüssel für Cluster auflisten

    kubectl --kubeconfig=${KUBECONFIG} get -A secret | grep ssh-key
    
  3. Ermitteln Sie den Namespace des Secrets „ssh-key“, das dem Zielcluster entspricht, und exportieren Sie den Namespace:

    CLUSTER_NS=
    
  4. Erstellen Sie ein Nessus-SSH-Verzeichnis:

    NESSUS_FOLDER=nessus
    mkdir -p ${NESSUS_FOLDER}/.ssh
    
  5. Exportieren Sie das SSH-Schlüsselpaar in das SSH-Verzeichnis von 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. Berechtigungen des Schlüsselpaars korrigieren:

    # 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. Konvertieren Sie den privaten Schlüssel mit einer leeren Passphrase in das PEM-Format:

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

    Eine erfolgreiche Ausgabe sollte in etwa so aussehen:

    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. Übertragen Sie nessus-<cluster>-id_rsa und nessus-<cluster>-id_rsa-cert.pub auf die Workstation, die für den Zugriff auf die Nessus-Benutzeroberfläche verwendet wird.

  9. Rufen Sie in der Nessus-Benutzeroberfläche den Tab „Scan Settings“ (Scaneinstellungen) auf.

  10. Erstellen Sie neue SSH-Anmeldedaten und wählen Sie „Zertifikat“ als Authentifizierungsmethode aus.

  11. Geben Sie die folgenden Einstellungen für die SSH-Zertifikatsauthentifizierungsmethode an:

    • Nutzername: „root“

    • Nutzerzertifikat: Datei hinzufügen nessus-<cluster>-id_rsa-cert.pub

    • Privater Schlüssel: Datei nessus-<cluster>-id_rsa hinzufügen

  12. Speichern Sie die SSH-Einstellungen.

  13. Kehren Sie zu der Stelle zurück, an der auf diesen Abschnitt verwiesen wurde.