Wie eine automatische Diensteerkennung gelingt

© Scott Rothstein, 123RF

Schatzsuche

Mangelt es an Information über die eigene Infrastruktur, sind Fehlinvestitionen und andere Schwierigkeiten die Folge. Die automatische Erkennung aller Hosts und Dienste ist dabei scheinbar der Königsweg – aber bewährt sie sich auch in der Praxis?
KVM etabliert sich als Standardlösung zur Virtualisierung unter Linux. Der ADMIN-Schwerpunkt hilft beim Bau virtueller Linux-Maschinen, stellt das ... (mehr)

Das Stichwort Autodiscovery klingt vielversprechend und die Erwartungen sind hoch: Auf Knopfdruck soll sich ein Rechner im Netz alles Nötige zusammensuchen und daraus die Konfiguration des Monitoringsystems basteln. Das muss anschließend im Falle eines Falles nur noch alarmieren. Dieses Szenario taugt allerdings bestenfalls für ein optimistisches Vertriebsversprechen. Die Praxis sieht anders aus.

Nagios und Icinga haben beide keinen Autodiscovery-Prozess. Wer so etwas dennoch haben will, der kann sich vieler nützlicher Tools bedienen, die diese Funktion nachbilden. Wie das geht, das beschreibt dieser Beitrag.

Auch wenn häufig keine Configuration Management Database (CMDB) oder ähnliche Werkzeuge zur Verwaltung der Configuration Items vorhanden sind, stehen doch andere Informationsquellen zur Verfügung. Das können Listen von Serverhardware, DHCP- und DNS-Einträge oder auch Bestandsinformationen aus einem Active Directory sein. Häufig verwalten auch Tools der Hersteller bestimmte Hardware. Diese Informationen lassen sich oft leicht exportieren. So kann man die Daten von Cisco Works beispielsweise via CLI-Tool exportieren oder auch direkt auf die darunter liegende Datenbank via JDBC zugreifen.

Die Konfiguration von Nagios beziehungsweise Icinga lässt sich von Haus aus in verschiedene Dateien und Unterordner aufteilen. So lassen sich beispielsweise in einem Verzeichnis manuell gepflegte Konfigurationsdateien speichern, ein anderes kann generierte Konfigurationen aufnehmen. Gerade hier sind Konfigurationsdateien ein sehr flexibles Mittel.

Automatische Überwachung

Gibt es noch gar keine oder nur unzureichende Informationen über die zu überwachende Umgebung, ist ein Autodiscovery der Infrastruktur ein gängiger Weg für eine erste Bestandsaufnahme. Nahezu alle Autodiscovery-Werkzeuge arbeiten nach dem gleichen Muster: Der Admin gibt einen IP-Bereich vor, dessen Adressen dann gescannt werden, um offene Ports zu finden und so die dort laufenden Dienste zu identifizieren. Gerade im Netz- und Hardwarebereich liefern darüber hinaus SNMP-Abfragen oft detailreiche Informationen über Komponenten und deren Zustand.

NMap einsetzen

NMap [1] steht für Network Mapper und ist das Tool der Wahl für das Scannen von Netzbereichen. Neben reinen Portscans versucht es mit OS-Fingerprinting auch die entsprechende Betriebssystemplattform zu identifizieren. Einen simplen Portscan auf ein Beispielsystem bewerkstelligt der folgende Befehl: »nmap -v -A www.haribo.de« .

Die gekürzte Ausgabe dieses Befehls zeigt Listing 1 . Zu sehen sind die offenen Standardports wie FTP, SSH, HTTP und MySQL. Eines der leistungsfähigsten Merkmale von NMap ist die NMap Scripting Engine (NSE) [2] . Sie ermöglicht die Basisfunktionen von NMap mit kleinen Lua-Snippets zu erweitern, um mehr Details über bestimmte Dienste herauszufinden. Für eine Vielzahl von Applikationen und Protokollen gibt es bereits in Kategorien unterteilte fertige Skripte im Online-Archiv von NMap [3] . So ist für den Alltagsgebrauch schon alles an Bord. Mit der Verwendung der Snippets können vorhandene Dienste sowohl auf freigegebene Featuresets aber auch auf ihre Sicherheit untersucht werden.

Listing 1

NMap-Aufruf

 

Anschließend gilt es, die gewonnenen Erkenntnisse ins Nagios- oder Icinga-Format zu verwandeln, was mit dem ebenfalls bereits vorhandenen Skript »nmap2nagios-ng« [4] ein Kinderspiel ist.

Hat man also zuerst eine bestimmte Range gescannt (zum Beispiel mit »nmap -sS -O -oX mynet.xml 10.10.0.0/24« ), und sind die gewonnenen Ergebnisse in »mynet.xml« gelandet, lässt sich aus der XML-Datei so eine valide Nagios-/Icinga-Konfiguration generieren:

./nmap2nagios-ng.pl -i -e -r mynet.xml -o hostconfig.cfg

Die verwendeten Standardeinstellungen für Thresholds, Kontaktgruppen, Hostgruppen und so weiter können vorher in der entsprechenden »conf« -Datei angepasst werden. Templates für neue Services können ebenfalls in der Config-Datei hinterlegt werden, um dem Perl-Script neue Template-Zuordnungen beizubringen. Zum Schluss muss »hostconfig.cfg« dann lediglich noch in das richtige Verzeichnis kopiert werden, und los geht's.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023