Nessus: another brick in the (security) wall, nur ein weiterer Stein in der (Sicherheits-)Mauer

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image form you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

Original in en Georges Tarbouriech 

en to de Hubert Kaißer


AboutTheAuthor:[A small biography about the author]

Georges benutzt Unix schon seit langem. Seiner Meinung nach ist Computersicherheit eine der großen Herausforderungen dieses Jahrhunderts.

Abstract:[Here you write a little summary]

Nessus ist ein freier Security Scanner, den man von http://www.nessus.org/ herunterladen kann. Renaud Deraison hat das Projekt initiiert und er pflegt es. Zur Zeit der Erstellung dieses Artikels ist die stabile Version 1.09 und die experimentelle 1.14. Die Software ist unter der GPL lizenziert und viele Leute tragen zu dem Projekt, speziell zu den Plugins, bei... während einige andere Leute von Nessus profitieren ohne den Namen überhaupt zu erwähnen (mehr davon am Ende dieses Artikels). Nessus arbeitet auf vielen Unixvarianten als Client und als Server und auf Win32 als Client. Lassen Sie uns dieses großartige Werkzeug betrachten.

ArticleIllustration:[This is the title picture for your article]

[illustration]

ArticleBody:[The article body]

Nessus runterladen und installieren

Unter http://www.nessus.org/ ist diese großartige Software erhältlich. Da Nessus als Client für win32 erhältlich ist, ist die Betrachtung der Posixversion in diesem Artikel naheliegend.
Um Nessus zu benutzen, braucht man mindestens nmap und Gtk (Gimp Toolkit). Von der Nessus Webseite führen Links dort hin. Aber da man Nessus auf der Kommandozeile benutzen kann, ist Gtk nicht unbedingt notwendig.
Man kann Nessus auf drei verschiedene Arten bekommen: die gute, die schlechte und die häßliche.
Die gute ist der normale Weg, das heißt, man lädt die Archive von der nächstgelegenen FTP-Site. Es gibt vier Archive: die Nessus-Bibliotheken, die NASL-Bibliotheken, den Nessus-Kern und die Nessus-Plugins. Einmal ausgepackt, erstellt und installiert man sie wie gewohnt: ./configure, make, make install, in der Reihenfolge der obigen Archive. Wenn eine frühere Version auf dem Rechner installiert ist, muß diese zuerst entfernt werden. Um dies zu erreichen, hält nessus ein Deinstallationsscript bereit, welches nach dem ersten "./configure" ausgeführt werden muß, es ist das Script welches im Nessus-Bibliotheken Verzeichnis steht. Das Script ist vor dem ersten "make" auszuführen. Das gleiche ist bei allen vorhandenen Paketen zu tun (außer das Ausführen des uninstall-Scripts) und man ist fertig.
Der schlechte Weg besteht darin, ein runterladbares Script namens nessus-installer.sh auszuführen. Dann wird "sh nessus-installer.sh" das Paket automatisch installieren. Die vier Pakete müssen nicht getrennt installiert weden. Es ist jetzt nur ein eigenes Paket.
Der häßliche Weg: sobald man lynx auf dem Rechner installiert hat und man mit dem Internet verbunden ist, muß man nur "lynx -source http://install.nessus.org | sh" tippen und das wars. Man darf NICHT root sein, um dies zu tun.
Offenbar ist der empfohlene Weg der "gute" Weg,... wenn man nessus herunterlädt ist Sicherheit von Wichtigkeit! Wenn wir schon von Wichtigem reden: man sollte nicht vergessen die MD5 Checksums runterzuladen.
Nessus beinhaltet verschiedene Utilities (nasl, eine Scriptsprache, nessus-adduser, nessus-build...). Alle Utilities haben ihre eigene Manpage für den Client und für den Server. Mehr Dokumentation gibt es in der Distribution (README, INSTALL,...) oder auf der Nessus-Webseite.

Nessus konfigurieren und ausführen

Um das Vorgehen zu illustrieren, hier einige Beispiele mit der Nessus X11-Version, jene mit Gtk.

Der nessusd-Server

Um Nessus zu starten, muß man offensichtlich den Serverdaemon nessusd starten. Wenn man den Daemon zum ersten Mal startet, muß man den Benutzernamen und das Paßwort angeben, indem man den nessus-adduser-Befehl benutzt. Wenn das Nessus-Bibliothekenpaket mit der Option "--enable-cipher" kompiliert wurde (empfohlen, um nicht zu sagen zwingend!), wird ein Private Key generiert. Dieser Key kann mit einem Passwort geschützt werden. Viele Optionen sind verfügbar, wenn man den Server startet und man findet alle in der Manpage von Nessus.
Davon ausgehend, kann man die Benutzerdatenbank und die entsprechenden Regeln erzeugen. Das heißt, wer den Serverdaemon ausführen darf, was er scannen darf (einen Rechner, ein Netzwerk...). Die Regeln folgen der Form "accept" oder "deny", gefolgt von einer Netzwerk-IP-Adresse mit ihrer Netmask.
Zum Beispiel erlaubt accept 192.168.1.0/24 dem Benutzer, das ganze 192.168.1er-Netzwerk auszutesten.
Es ist ebenso möglich, einen einzigen Benutzer zu definieren, der überhaupt keine Regeln hat. Wenn man mehreren Benutzern erlauben will nessusd auszuführen, muß man sehr vorsichtig sein, was man ihnen erlauben will. Man kann schließlich nicht jeden alles im Netzwerk machen lassen.
Nicht zuletzt ist nessusd auf eine Konfigurationsdatei angewiesen, die man (gewöhnlich) in /usr/local/etc/nessus/nessusd.conf findet. Diese Datei kann man von Hand ändern, sobald man weiß, was man tut.

Der nessus-Client

Man kann den nessus-Client starten, um sich mit einem nessusd-Server zu verbinden. Um den Client auszuführen, reicht es, "nessus &" in einer Shell einzugeben. Das öffnet das Nessus-Setup-Fenster, nachdem es das oben erwähnte Passwort abfragt. Dieses Fenster stellt sieben Tabs zur Verfügung.
Das erste Tab heißt "nessusd host". Von da kann man zum nessusd-Rechner verbinden, indem man auf den "Log in"-Knopf klickt. Natürlich unter der Voraussetzung, daß man sich als dieser Benutzer einloggen darf, in anderen Worten, daß der Benutzername in der Benutzerdatenbank vorhanden ist.

nessusd host


Das zweite Tab betrifft die Plugins. Dort aktiviert oder deaktiviert man die benutzten Plugins, die während der Scan benutzt werden. Zum Beispiel kann man die gefährlichen Plugins deaktivieren (jene, die einen Rechner zum Absturz bringen können!). Wenn man auf ein Plugin klickt, zeigt der untere Teil des Fensters einige Informationen über dieses Plugin.

plugins plugin detail


Das dritte Tab ermöglicht die Einstellungen für das Plugin vorzunehmen. Das betrifft ping, TCP, FTP... Hier kann man sehr gut abstimmen wie man Nessus benutzen will, um den Zielrechner, die Zielrechner oder das Zielnetzwerk zu scannen.

preferences


Das vierte Tab erlaubt die Definition der Scanoptionen und den benutzten Portscanner. Üblicherweise ist dies nmap. >Hier mehr über nmap<.

scan options


Das fünfte Tab ist zum Einstellen des Ziels des Scans. Im Zielfeld kann man den Namen eines Rechners, die Namen verschiedener Rechner, getrennt durch Kommas, eine oder mehrere IPs, wiederum getrennt durch Kommas oder eine Netzwerkadresse mit ihrer Netzmaske angeben (zum Beispiel 192.168.1.0/24). Es gibt auch ein Kästchen, um einen DNS-Zonentransfer durchzuführen. Das heißt, wenn man zu einem DNS-Server verbindet, wird nessus versuchen eine Liste der Rechner in dieser Domain zu bekommen.

target selection


Das sechste Tab erlaubt es dem Benutzer sein Passwort zu ändern, seinen Private Key zu löschen oder Regeln hinzuzufügen.

user


Nicht zuletzt öffnet das siebente Tab das Creditsfenster, welches auch die Versionsnummer enthält. Das sind alle Informationen, die man haben muß, wenn man Nessus für ein anderes Projekt nutzen will... Nun, es sollte so sein!

credits


Es gibt ein achtes Tab, wenn man Nessus mit der Konfigurationsoption "--enable-save-kb" kompiliert. kb steht für "Knowledge Base". Dies ist eine experimentelle Eigenschaft, die es erlaubt die Ergebnisse eines früheren Tests zu nutzen. Diese Eigenschaft wird in Nessus 1.1.0 voreingestellt sein. Mehr über kb auf www.nessus.org/doc/kb_saving.html.
Nachdem man jedes Tab "besucht" hat, kann man das "Biest" von der Leine lassen. Es genügt den "Start the scan"-Knopf zu klicken. Was passiert dann?

Nessus bei der Arbeit

Wenn man den Scan startet, öffnet nessus ein Fenster, um den Scanstatus anzuzeigen. Zum Beispiel, man testet ein ganzes Netzwerk 192.168.1.0/24. Acht Rechner werden gleichzeitig angezeigt, die zeigen welches Plugin für welchen Rechner benutzt wird, neben einer Fortschrittsanzeige. Hier sieht man wie es aussieht:

scan status


Wie man sieht, kann der ganze Test jederzeit gestoppt werden.
Offensichtlich wird der Test eine recht lange Zeit dauern, wenn man ein ganzes Netzwerk mit vielen Rechnern scant. Es wird von den Betriebssystemen, der Netzwerkgeschwindigkeit, den Rechneraufgaben (mehr oder weniger offene Ports), der Anzahl der aktiven Plugins usw., abhängen.
Man kann auch auf zwei andere Arten testen: abgelöste Scans oder differentielle Scans. Dies setzt voraus, daß man Nessus mit der oben erwähnten Konfigurationsoption "--enable-save-kb" kompiliert. Die abgelösten Scans erlauben Tests im Hintergrund zu laufen, während die differentiellen Scans, wie der Name sagt, nur die Unterschiede zwischen zwei Scans zeigen.
Man findet viel mehr Informationen über diese Eigenschaften auf Nessus Dokumentation (www.nessus.org/doc).
Das wichtigste sind die Ergebnisse, die man am Ende des Scans erhält. Eins der großartigsten Eigenschaften von Nessus ist, wie es Berichte bereitstellt.

report


Diese Berichte sind ziemlich detailliert und schlagen oft eine Lösung für die entdeckten Schwachstellen vor. Sie sind sogar wirklich zuverlässig. Wenn eine gefundene Schwachstelle keine echte ist, sagt nessus, daß es ein falscher Treffer sein kann. Dies kann zum Beispiel mit gepatchten Versionen einiger Daemons passieren: Eine kürzlich korrigierte Schwachstelle kann als potentielles Risiko erkannt werden. Aber für solche Fälle werden Plugins schnell aktualisiert.
Ein weiterer kleiner Fehler mag aus nmap (2.53) resultieren, wenn es die Betriebssystemversion identifiziert. Aber dies ist wirklich kaum interessant. Mir persönlich macht es nichts, wenn Unbekannt 4.0 mit SP6a als Unbekannt 4.0 mit SP5 erkannt wird oder wenn der Linuxkernel 2.2.19 als 2.2.14 ermittelt wird. Ich werde mich auch nicht darüber beschweren, wenn "exotische" Betriebssysteme wie AmigaOS oder BeOS als Drucker oder Router identifiziert werden. Ich kann mir nicht vorstellen, Fyodor (nmaps Autor) eine Email zu schicken, um ihm zu sagen: Wer benutzt heute noch solche Betriebssysteme in einem Netzwerk? Was AmigaOS angeht würde ich sagen 5 Leute... auf der ganzen Welt :-(
Einige andere Betriebssysteme werden auch nicht perfekt erkannt, aber sie sind oft ziemlich "neu" oder nicht wirklich verbreitet. Dies trifft auf MaxOS X oder QNX zu. Aber ist es auch nicht so wichtig und dies kann schon in der neuen 2.54 Betaversion von nmap gelöst sein (und, so nebenbei, diese neue Version stellt eine MacOS X-Portierung zur Verfügung).
Jedenfalls, der Hauptpunkt ist, daß Nessus Unmengen an Informationen bereitstellt, um die Rechnerangriffspunkte oder die Schwächen des lokalen Netzwerks zu korrigieren.
Diese Berichte können als Text, NSR, HTML, HTML mit Tortengraphik gespeichert werden... und erlauben so den Vergleich von zwei Scans. Es mag augenfällig scheinen, aber der Zustand eines Netzwerks zu einer gegebenen Zeit kann recht verschieden zu dem 30 Minuten später sein. Warum? Ein Netzwerk lebt! Dies ist eins der Hauptgründe, warum es nicht so einfach ist, ein Netzwerk zu sichern: Dinge ändern sich die ganze Zeit. Wenn Sie sich über die Notwendigkeit der Benutzung von Werkzeugen wie nessus und nmap wundern, ist das die Antwort.
Wenn man neugierig ist, wie Nessus arbeitet, muß man die Systemlogs durchschauen oder, wenn man snort benutzt, die snort-Logs. Ein weiterer Ort um Informationen zu finden ist /usr/local/var/nessus.
Von nun an wird man wahrscheinlich einiges zu tun haben, um die Schwächen von vielen Maschinen im Netzwerk zu verringern. Umso mehr man jeden Rechner absichert, umso besser. Um bei dieser großen Aufgabe zu helfen, sind nessus (und genauso nmap) die Werkzeuge, ohne die man nicht leben kann.

Plugins

Plugins sind das "Herz" von nessus. Sie sind die Sicherheitstests, sie sind die Testprogramme, um einen gegebenen Angriffspunkt zu entdecken. NASL (Nessus Attack Scripting Language) ist die empfohlene Sprache, um Sicherheitstests zu schreiben. Man findet einiges über NASL unter der URL: http://www.nessus.org/doc/nasl.html.
Ebenso ist dies der Ort, an dem man die richtigen Informationen findet, wenn man zum nessus-Projekt beitragen will. Zum Zeitpunkt der Erstellung des Artikels gibt es 756 Plugins in der nessus-Datenbank!
Es gibt fast 20 Pluginkategorien: Backdoors, Denial of Service, Erlangen von root von einem anderen Rechner... Wie bereits erwähnt, informiert jedes Plugin über Berichte. Es sagt aus, was falsch ist und was man tun sollte, um das Problem zu berichtigen.
Man kann nicht über die Plugins schreiben, ohne CVE (Common Vulnerabilities and Exposures) zu erwähnen. Es gibt eine riesige Informationsdatenbank auf http://cve.mitre.org. Dort findet man alles über bekannte Sicherheitslücken. Dies ist ein anderer großartiger Ort, um Wissen zu teilen. Solch eine Webseite ist die unbedingte Referenz, die man sich anschauen muß.
Natürlich gibt es viel mehr über die nessus-Plugins zu sagen, aber ein Buch wäre nicht genug. Ein guter Ansatz, um zu verstehen, wie sie funktionieren, wie sie geschrieben werden, ist, sie im Verzeichnis /usr/local/lib/nessus/plugins zu lesen. Nochmals ein Danke an Renaud Deraison und die Mitwirkenden für diese großartige Arbeit.

Und nun zu etwas völlig anderem!

Auch wenn dieser Titel ein bißchen wie Monty Python klingt, ist da leider kein Humor enthalten. Die drei oder vier Leute, die meine Artikel lesen, kennen meine gewohnten Off-Topic Sätze: dieses Mal ist es ein ganzer Abschnitt! Es ist wirklich Off-Topic, es ist eine andere Geschichte. Packen wir es an.
Da ich recht interessiert an Computersicherheit bin, besuche ich oft die dem Thema gewidmeten Webseiten. Sei es, um über neue Schwachstellen zu lernen oder um neue Sicherheitswerkzeuge zu entdecken. Zufällig fand ich ein paar Produkte, die auf Online-Scandiensten basieren. Tatsächlich nennen sie sich selbst (zumindest zur Zeit) ASP (Application Service Provider). Wenn man ein bißchen weiter klickt, entdeckt man schnell, daß das Werkzeug hinter dem Dienst Nessus ist. So weit, so gut. Aber, wenn man versucht, ausführliche Informationen zu finden, findet man nirgends das Wort "nessus". Das verletzt mich dann zutiefst!
Viele Leute, die für die Free Software Community arbeiten, tun dies ohne Bezahlung und nicht für ihren Lebensunterhalt. Die einzige Bezahlung, die sie bekommen, nennt man: Wertschätzung. Nessus wird unter der GPL veröffentlicht. Das heißt, jeder kann das Produkt benutzen, es ändern, es anpassen... solange der ursprüngliche Autor erwähnt wird bzw. die ursprünglichen Autoren erwähnt werden. Natürlich sagt die Lizenz noch mehr aus. Wenn Sie die GPL nicht kennen, können sie sie hier nachschauen.
Für mich sieht es wie Diebstahl aus. Ich meine, daß ich nicht einmal eine Lizenz brauche, um die Arbeit anderer Leute wertzuschätzen. Ich habe sehr viel Respekt für diese Leute, die (fast immer) umsonst arbeiten und es mit einer Gemeinschaft teilen. Sie verdienen Anerkennung von dieser Gemeinschaft. Dies stimmt besonders, wenn jemand versucht, Geld mit der Arbeit von jemand anderem zu verdienen. Man kann das Respekt, Anerkennung nennen, es ist nicht wirklich wichtig. Fakt ist, diese Worte scheinen ihre Bedeutung verloren zu haben. Sicher könnte man sagen, daß die GPL die Ursache eines solchen Verhaltens ist. Bei ASP wird es nicht als Verkaufen der Software erachtet. Je nach Land mag die GPL keine rechtliche Wirkung haben.
Eine Lösung könnte sein, daß die Benutzer eines solchen ASP den Namen des Scanprogramms anfordern, das die Arbeit macht. Die gegebene Antwort wird wenigstens zeigen, ob die Leute, die den Dienst anbieten "ehrlich" sind. Wenn sie nicht antworten oder wenn sie sagen, daß sie das Programm "erfunden" hätten (welches als Nessus erkannt wurde) benutzen Sie es einfach nicht! Installieren Sie stattdessen (das echte) Nessus. Es wird sowieso sicherer sein.
Aber nochmals: brauchen wir eine Lizenz, um "Danke" zu sagen zu Leuten, die eine wirklich große und großartige Arbeit geleistet haben? Und, nebenbei, Renaud Deraison hat nicht vor, die nessus-Lizenz zu ändern: nessus will weiter unter der GPL bleiben.
Entschuldigung für diese lange Abschweifung, aber ich glaube, dies mußte gesagt werden.

Nun ist es vorbei!

Trotz des letzten Abschnitts sollte man sich von diesem Artikel vor allem an die hohe Qualität von Nessus erinnern. Es ist eine recht eindrucksvolle Software. Wenn man es in Verbindung mit nmap benutzt, wird es ein Muss, wenn Sicherheit ein Anliegen ist. Es ist ein sehr verläßliches Werkzeug, daß jeden Tag verbessert wird. Danke an Renaud und seine Freunde für ihre dauernden Aktualisierungen der Plugins.
Heutzutage kann ein Systemadministrator nicht ohne nessus und nmap arbeiten. Diese Werkzeuge sind in der Lage, Schwachstellen zu finden, die man schon behoben glaubte. Dies stimmt für die meisten Betriebssysteme in Ihrem Netzwerk. Und wenn sie wissen, daß einige Betriebssysteme löchrig wie Siebe sind, dann erlaubt nessus Ihnen, sich ein bischen zu entspannen.
Nessus kann auch verstehen helfen wie ein Netzwerk (oder ein Rechner) kompromittiert werden kann.
Wenn Sie die zur Verfügung gestellten Berichte aufmerksam durchlesen und sie mit einbeziehen und die richtigen Korrekturen machen, werden Sie die Sicherheit Ihres Netzwerks (oder Rechners) um einiges verbessern. Und wieder sagte ich "verbessern": Ihr Netzwerk wird nicht 100% sicher sein, nur weil sie nessus laufen lassen. Der Weg zur Sicherheit ist sehr lang und wir sind sehr weit vom Ende entfernt.
Nochmals ein Danke an die Free Software Community für die großartige Arbeit, die sie für die Sicherheit leistet.
Was die netten Leute betrifft, die versuchen, Geld mit der Arbeit dieser Mitglieder der Free Software Community zu machen, möchte ich etwas hinzufügen. "Danke" zu sagen ist keine Schande. Ehrlich zu sein ist nicht so schrecklich, oder? Wenn sich dieses Verhalten ausweitet, besteht das Risiko darin, daß es das Ende der Community oder einen großen Wechsel der Lizenzierung (und wahrscheinlich immer mehr Patente!) bedeutet. In beiden Fällen werden Sie auf sich alleine gestellt sein und die Situation wird für sie härter werden. Und leider werden wir nicht mehr freie Software nutzen können. Das bedeutet nicht, daß sie in der Lage sein werden Ihre zu verkaufen. Denken Sie darüber nach!
Leben wir nicht in einer großartigen Zeit?