We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Zero-cost security monitoring

00:00

Formal Metadata

Title
Zero-cost security monitoring
Subtitle
with Icinga
Title of Series
Part Number
23
Number of Parts
59
Author
License
CC Attribution - NonCommercial 2.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language
Production PlaceSankt Augustin

Content Metadata

Subject Area
Genre
Abstract
Open source monitoring solutions like Icinga cover most of the network administrators monitoring needs. These systems are highly customisable with various add-ons and plugins proven in years of application. In this talk we share a selection ideas for monitoring security relevant activity and events with Icinga. This includes reminding on outstanding maintenance operations, detecting anomalous activity, monitoring (and control) of brute force attacks running, and most certainly the security of Web, DNS, Email and DHCP-services in general. Given an existing Icinga monitoring system (like we documented in our 'Nagios/Icinga Kochbuch' recently published by O'Reilly) and not the resources to setup a proper security monitoring solution (like it is unfortunately under normal circumstances the case); why not at least improve network security by adding few more plugins? Following the presentation there will be a discussion were we will encourage interested individuals to propose (or even contribute) security relevant checks missing. The most interesting contributions might get implemented, documented and published. Resulting plugins will be made freely available.
SoftwareInverter (logic gate)Machine learningList of anatomical isthmiAlgorithmNagiosXMLUMLComputer animationLecture/Conference
Inverter (logic gate)Integrated development environmentSlide ruleComputer animation
Inverter (logic gate)Integrated development environmentExpert systemInternetdienstInformationPopulation <Informatik>Numerisches GitterSimilarity (geometry)Intrusion detection systemCorrelation and dependenceComputer animationLecture/Conference
TwitterWeb pageEmailFirewall (computing)Computer animation
Integrated development environmentNumerisches GitterEnergiePlug-in (computing)Physical quantityBlock (periodic table)InternetdienstSoftware bugStudent's t-testBackupNagiosSwitch <Kommunikationstechnik>Lecture/Conference
Server (computing)Graph (mathematics)InternetdienstSwitch <Kommunikationstechnik>Series (mathematics)CalculationOutline of industrial organizationComputer animation
Server (computing)InternetdienstGraph (mathematics)WEBUpdateQuery languageIntegrated development environmentServer (computing)InternetComputer hardwareFirmwareCalculationInternetdienstEigenvalues and eigenvectorsSoftware testingWINDOWS <Programm>Systems <München>HTTPDirection (geometry)NagiosSwitch <Kommunikationstechnik>Ubuntu <Programm>Debian GNU/LINUXLecture/Conference
Client (computing)Plug-in (computing)Integrated development environmentMusical ensembleComputer animation
Client (computing)Drum memoryNagiosParameter (computer programming)WINDOWS <Programm>Plug-in (computing)InternetdienstClient (computing)Amsterdam Ordnance DatumPatch (Unix)SSHBeam (structure)EnergieLocal ringRemote Access ServicePublic key certificateLecture/Conference
String (computer science)LINUXAlgorithmEncryptionPolymorphism (materials science)Flow control (data)Computer animation
String (computer science)LINUXACIDCodeSNMPPlug-in (computing)Configuration spaceLecture/Conference
Plug-in (computing)Query languageElectronic visual displayOnline chatSource code
Set (mathematics)String (computer science)ACCESS <Programm>String (computer science)CalculationIP addressEncryptionConstraint (mathematics)Scripting languageMusical ensembleSNMPBus (computing)ZugriffLecture/Conference
Agent <Informatik>MetreComputer animation
Maxima and minimaServer (computing)CalculationPlug-in (computing)EnergieLecture/Conference
makeACCESS <Programm>Limit (category theory)Configuration spaceZugriffPatch (Unix)MittelungsverfahrenServer (computing)CodeEnergieComputer animation
Configuration spacemakeACCESS <Programm>Limit (category theory)Parameter (computer programming)EnergieLINUXWeb pagePlug-in (computing)Electronic visual displaySpecial markAliasingLecture/Conference
Service (economics)BefehlsprozessorForceUNIXWINDOWS <Programm>Systems <München>Musical ensembleHigh availabilityUDP <Protokoll>Git <Software>InternetdienstNagiosComputer animation
ATESBefehlsprozessorRAMService (economics)Particle detectorDOSPasswordLoginGraph (mathematics)UpdateExploit (computer security)Process (computing)DatabaseStructural loadInternetdienstHard disk driveIntegrated development environmentMusical ensembleChecklistDirection (geometry)WINDOWS <Programm>Red HatThresholding (image processing)Lecture/Conference
Particle detectorPasswordLoginGraph (mathematics)DOSBlock (periodic table)World of WarcraftPasswordDatabaseZahlDenial-of-service attackServer (computing)Scripting languageMusical ensembleStructural loadCryptanalysisIP addressNumberSet (mathematics)Block (periodic table)Computer animationLecture/Conference
Server (computing)WEBString (computer science)WebsitePattern languageWeb pageProcess (computing)WebsitePolymorphism (materials science)Computer animation
Server (computing)WEBPattern languageInternetdienstService (economics)EmailGraph (mathematics)Dynamic Host Configuration ProtocolVersion <Informatik>FirmwareARPRouter (computing)Version <Informatik>EmailDirection (geometry)InternetdienstIntegrated development environmentGenerating functionUpdateTable (information)Programmer (hardware)Apache <Programm>Electronic mailing listRAPiD <Programm>Vulnerability (computing)Electronic visual displayPlug-in (computing)Switch <Kommunikationstechnik>IP addressPublic key certificateInternetWeb pageServer (computing)NagiosStructural loadBackdoor (computing)Angular resolutionCalculationWEBSupremumPort scannerLecture/Conference
Configuration spaceVersion <Informatik>FirmwareARPRouter (computing)ZahlMultitier architectureSwitch <Kommunikationstechnik>LAMP <Programmpaket>Router (computing)Computer animation
Version <Informatik>Router (computing)ARPIntegrated development environmentWeb pageElectronic mailing listLogarithmPlug-in (computing)Switch <Kommunikationstechnik>IMPACT <Programmierumgebung>Mainframe computerLaptopBlock (periodic table)Electronic visual displayLecture/Conference
OutlookConfiguration spacePlug-in (computing)Point of saleFeedbackNagiosPrint <4->Computer animation
OutlookLecture/ConferenceComputer animation
Transcript: German(auto-generated)
Okay, also mein Name ist Ralf Staudermeyer, ich bin No Aircon. Dieser Vortrag ist jetzt auf dem B-Markt zu sehen.
Zero cost security monitoring. Das Platonim No Aircon kommt von, ich habe zwei Jahre in Fiji unterrichtet an der University of South Pacific und ich hatte keinen Aircon-Dish, deswegen No Aircon vor die Frage. Also Fiji ist Südpazifik, ist in den Tropen.
Ja, ich bin Autor des Navior Singer Kochbuches bzw. Mitautor. Ich mache eigentlich Forschung im Bereich Intrusion Detection und nutze dafür maschinelle Lernalgorithmen. Und ich habe fünf Jahre im öffentlichen Dienst gearbeitet als Netzwerkadministrator,
quasi als Brückenzeit, um meine Promotion damals zu finanzieren. Und habe mich da sehr viel mit Nagios auseinandergesetzt und habe meine Erfahrung halt in einem Buch zusammengepackt. Eine Baustelle, die ich nie richtig abgeschlossen habe,
ist das Security Monitoring. Da ging es ein bisschen, ich werde mal hier einfach mal weitergehen. Genau, ich fange mal so an, worum es in diesem Vortrag nicht geht, das ist immer irgendwie so eine Erwartungshaltung, die ich dann am Ende nicht erfüllen kann. Also in diesem Vortrag geht es nicht darum,
dass dieser Vortrag euer Netz nicht sicher machen. Ach so, ganz kurz, soll ich den Vortrag für Deutsch auf Englisch halten? Spricht jemand nicht Deutsch? Anyone here who is not speaking German? So I can give this talk in English as well, but if it's not necessary, I can give it in German.
Sorry? Okay. So the slides are in English, but I will give the talk in German now. Is that okay?
Okay, also es geht in dem Vortrag nicht darum, euer Netz wird nicht sicherer sein nach dem Vortrag, euer Monitoringsystem wird nicht sicherer sein und das ist jetzt keine Lösung, die ich für irgendwas anbiete. Ich gebe hier Ideen und würde ganz gern von euch auch ein paar Ideen zurückbekommen.
Die Ideen, die ich hier vorstelle, helfen euch dabei, euer Monitoringsystem so zu erweitern, dass ihr die Möglichkeit habt, sicherheitsrelevante Vorfälle zu entdecken. Und zwar das Gleiche, was ich mit einem Intrusion Detection System mache,
wo ich Eigenschaften eines Netzes, einen Lernalgorithmus, damit trainiere und der probiert, eine Korrelation beispielsweise zwischen Netzwerkverkehr und einem bestimmten Angriffstyp herzustellen. Das Gleiche, wir sind dazu als Menschen auch fähig, dazu müssen wir die Daten, also die Information,
aber visualisieren und ich habe ein paar Sachen rausgesucht, die eigentlich auch zu einem normalen Monitoring dazu gehören, die es, wenn man es visuell darstellt, hatte man als Netzwerkadministrator eine bessere Chance zu erkennen, wenn man ein Problem hat, nicht nur ein Netzwerkproblem oder dass ein Dienst ausfällt, sondern vielleicht auch ein Sicherheitsproblem,
wo man sich dann Experten ranholen kann und sagen, schau dir das mal genau an, ich habe hier ein Problem, ich weiß aber nicht genau, was das ist. Ich gebe Ideen und es gibt viele, viele Lücken hier und über einige bin ich mir bewusst, da kann ich einen separaten Vortrag überhalten,
andere weiß ich vielleicht nicht, ich würde darum bitten, mir Feedback zu geben über E-Mail oder über die Webseite zum Buch oder über Twitter oder Diaspora, die Kontakte stehen hier und da würde ich mich freuen, wenn ich ein bisschen Rückmeldung bekomme.
Ich fange immer ganz gerne an mit einer Geschichte, also wie gesagt, ich habe als Wissenschaftler einen Ausflug quasi in eine Funktionsstelle gemacht, da war dann mal selber Netzwerkadministrator, habe ein großes Netz gebaut, eine Umstellung von
einem alten ATM-Netz auf eine 10 Gigabit Architektur mit einem 200 Gigabit Core und größere Infrastruktur, viele Gebäude, 1,5 Millionen Euro. Und da war damals die Anforderung, ja Sicherheit, Firewall, alles total wichtig, machen sie mal.
Und da war der Budget von 300.000 Euro, um das Verhältnis zu sehen und am Ende, nachdem die Infrastruktur fertig war, war das Budget 100.000, 30.000 und am Ende war die Anforderung, kriegen sie das nicht irgendwie auch so hin. Und so kam dann halt die Idee mit dem Zero-Cost-Security-Monitoring, da war jetzt zumindest ein Nagios oder später ein Singer-System am Laufen
und die Idee war, naja, wenn wir schon Studenten haben, die sich das angucken können, die ganzen tollen Grafen, dann können wir das vielleicht so aufbauen, dass der Student irgendwie versteht, was in unserem Netz normalerweise los ist,
was in unseren Dienst normalerweise los ist, und auch wenn Anomalien entstehen, die nicht darauf hinweisen, dass der Dienst nicht mehr funktioniert, sondern darauf hinweisen, dass dieser Dienst anderweitige Probleme hat, dann können die damit identifiziert werden. Das ist die Idee, wurde nie zu Ende mit limitiert, ich bin dann irgendwann weitergezogen, aber die Idee bleibt halt.
So, Open-Source-Security-Monitoring, ich nehme an, dass alle von euch irgendeine Art von Monitoring-System benutzen, also Nagios, die Singer oder eins dieser zahlreichen Forks, ist das richtig? Wer benutzt denn hier kein Monitoring-System? Okay, schön.
Also, im Endeffekt, Nagios selber und auch die Forks irgendwie, die haben sich bewiesen in einem relativ langen Zeitraum, es gibt eine große Nutzergemeinschaft, es gibt unendlich viele Plugins, einige, die man benutzen kann, andere, die man nicht benutzen sollte,
und ein Singer- oder Nagios-System lässt sich sehr, sehr stark den Bedürfnissen anpassen, die man an eine bestimmte Umgebung hat.
Und, ja, das Grafen ist möglich und es lässt sich auch ein bisschen eye-candy mit sowas wie Nagios irgendwie zusammenbauen, was dann bestimmten Bedürfnissen auch irgendwie mehr gerecht wird. Also, es gibt eine Grundannahme, die ich gerne auch vorher definieren würde. Man muss wissen, man ist nicht in der Lage, das eigene System oder das Netz, das man betreut, sicher zu bekommen.
Das wird immer unsicher sein. Aber was wir halt machen können, wir können Aspekte beobachten, die auf ein Problem hinweisen. Das heißt, wir können ja Redundanzen einbauen, wenn wir Switcher haben und ein Switch wird ausfallen, dass der andere Switch aktiv wird.
Wenn wir nicht überwachen, dass der Backup-Switch jetzt aktiv ist, dann werden wir wieder erst das Problem mitkriegen, wenn dann beide unten sind und leider das Backup-Gerät im Storage irgendwie auch schon genutzt wurde. Wenn wir das nicht überwachen, haben wir das Problem trotzdem.
Selbst wenn wir Redundanzen haben und beim Security ist es genauso, ein System mag nicht gehackt sein oder zusammenbrechen. Es gibt da einen Prozess, der da hinführt und da können wir frühzeitig irgendwie Hinweise nach Hinweisen suchen.
Also, um früh zu erkennen, wenn irgendwas schief läuft. Ganz wichtig sind historische Daten. Zum einen ganz wichtig, wenn man Monitoring-System betreibt, wirklich auch grafen, was irgendwie geht. Und ganz, ganz wichtig, Lockdaten wegfahren. Das heißt, alle Geräte, die man immer wacht,
die Lockdaten auf zentralen Lockserver, in Verbindung mit den Performance-Daten, sind Lockdaten super hilfreich. Gut, als Resultat hätte ich ganz gerne oder ich habe ja die ersten Vorschläge damit. Ich habe etwa 30 mögliche Szenarien, die man monitoren kann, die ich der Meinung bin,
dass sie helfen, um Sicherheitsprobleme zu identifizieren. Ich habe das auf zehn Sachen reduziert, neben Standardchecks, die man sowieso machen sollte. Das fasse ich gleich auch noch mal zusammen.
Also, ich glaube, ich brauche euch nicht erklären, wie man so ein Monitoring-System aufbaut, wenn ihr das sowieso alles schon hattet. Die relevanten Punkte sind dann vielleicht noch... Wer fährt ein größeres Netz ohne Management-Netz? Also kein Out-of-Band-Netz.
Okay, Out-of-Band, ja. Also, ein Produktionsnetz mit in einem Bereich 20, 30 Rechner,
nicht visualisiert, sondern tatsächlich eine Reihe von separaten Kissen, eine Switch-Infrastruktur, würde ich sagen, von mindestens drei, vier Switchen und einem etwas stärkeren, möglichst redundanten Chor. Das ist, was ich schon so Richtung größeres Netz gehen würde. Was ich mit Out-of-Band meine, ist, da gibt es zwei Möglichkeiten.
Entweder, wenn ich es mir nicht leisten kann, dann mache ich ein separates VLAN, was nicht geroutet wird, wo ich den Management-Verkehr durchleite. Das heißt, wenn ich zum Beispiel einen Switch irgendwie konfigurieren will, dann sollte ich es vielleicht nicht über mein normales Nutzernetz machen. Gerade, wenn einige Leute meinen, immer noch zu Tellnetten.
Und dieses Out-Band-Netz, also idealerweise separater Switch, billiger HP-Switch oder so etwas, und da einfach separates Management drüber fahren. Und dann kann man im Endeffekt das Monitoring auch über dieses Out-Band-Netz fahren,
abgesehen von Avability-Checks. Also natürlich, wenn ich prüfen möchte, ob ein bestimmter Dienst oder bestimmter Rechner für den Nutzer erreichbar ist, dann brauche ich das nicht über das Managementnetz machen. Das ist keine gute Idee. Aber durchaus irgendwie alles, was geht, alle Abfragen,
die nicht unbedingt nutzerseitig durchgeführt werden und über das Out-Band-Management zu machen. Dann auf jeden Fall neben Avability auch irgendwie Standard-Checks. Ich habe die auch gleich nochmal zusammengeführt. Performance-Daten hatte ich schon erwähnt. Ach genau, und Security-Updates.
Wer Security-Updates automatisiert einfährt auf seinen Systemen, wie z.B. unter Debian mit unattended upgrades oder Ubuntu oder halt unter Windows mein ich auch, wer es unbedingt benutzen muss. Es ist relativ einfach zu prüfen, ob so ein Check durchgelaufen ist
oder einfach auch mal zu prüfen, braucht das System jetzt eine Reboot. So ein Check ist ganz einfach, würde ich wirklich zu raten, das zu machen. Wer automatisiert Updates macht, Sicherheitsupdates aber nie prüft, ob die tatsächlich durchlaufen, ist ein Problem. Das gilt übrigens auch für Firmwares von irgendwelchen Switchen.
Ganz einfach eine Blacklist haben, gucken, gibt es irgendwelche sicherheitsrelevanten Vorfälle, was eine bestimmte Firmware angeht und einfach automatisch im Netz durchprobieren, ob ich nicht gerade irgendeine Firmware drauf habe, als Primary oder Secondary, die ich gar nicht am Laufen haben will.
Und dann, dass man automatischen Alarm bekommt und dann halt irgendwie die Firmware entsprechend abdecken kann. Ganz wichtig, wenn man zwei Images hat, würde ich sehr empfehlen, immer ein stabiles zu haben und ein Test-Image, das Test-Image mit den neuen Features, wenn das abschmiert, dass automatisch ins stabile Image gebootet wird.
So, wenn man Monitoring-Server betreibt, gerade wenn es ein Nagios-basiertes System ist, das ist nicht für Sicherheit gebaut worden. Nagios lässt sich ziemlich schnell angreifen,
so auch die Nagios-Derivate, sofern sie nicht irgendwie neu gecoded wurden. Ich würde sehr empfehlen, einen eigenen Monitoring-Server zu fahren, also eigene Hardware, das muss ja keine besonders aufwendige Hardware sein, darauf zu achten, dass der Nagios-oder-Singer-Prozess nicht als root läuft
und dass das System nicht über HTTP erreichbar ist, sondern nur HTTPS. Man kann viele andere Probleme auch angehen, aber ich würde es auf die drei Sachen, mit drei Sachen kann man sich gut merken, diese drei Sachen meines Erachtens sind am wichtigsten, dass man mal guckt, ob man das entsprechend umgesetzt hat.
Und natürlich idealerweise ist das System nur übers Management erreichbar, übers Management-Netz, aber das ist ja nicht immer umsetzbar. Andere Sicherheitsprobleme, klar, das hatte ich schon erwähnt,
so wert wie möglich Plugins out of Band irgendwie fahren, das geht mit den Erreichbarkeitschecks nicht. Ich würde dazu anraten, keine Binary-Plugins zu nehmen, außer man hat es selber kompiliert, natürlich Binary ist wesentlich schneller, als wenn man irgendein Skript hat, aber ich meine,
wer würde auf irgendeinem Produktiv-Server irgendein Binary ausführen? Und genau das passiert, irgendwie, die Leute laden sich irgendwie bei Monitoring-Plugins, irgendwelche Binaries, mal gucken, funktioniert das? Das ist sicher nicht irgendwie eine gute Idee.
Deswegen Plugins angucken, wenn es ein Skript ist, kann man es lesen, wenn es halt C-Code ist, was man halt kompilieren kann, was ein bisschen flotter ist, zumindest mal reinschauen oder zumindest einen Kollegen fragen, ob der das nachvollziehen kann, was da in dem Plugin gemacht wird. Remote Execution, also Plugins, die lokal ausgeführt werden müssen,
wo also nicht ein externer Dienst, sondern ein interner Dienst geprüft wird, wo das Csinga-System das lokale Plugin triggern muss, da würde ich zwei Zugriffsmechanismen auf ihn nahelegen, einmal über SNMPv3, ja, unter Windows geht es nicht,
ja, SNMP-Depression unter Windows 2012, aber zumindest, wenn man mit dem Unix-System oder einem anderen anständigen System umgehen muss, dann sollte SNMPv3 möglich sein und dann check SNMP, ich zeige später noch, wie man Plugins damit ausführen kann,
das ist relativ einfach. Und das Gleiche geht auch mit SSH, ein Schlüsselbilden, was mit einem Kommando verknüpft ist, wo die Parameter mit drin sind und dann einfach eine Verbindung zum Zielserver aufbauen, wo dann nur genau mit der einen SSH-Verbindung das eine Kommando ausgeführt wird und ein Rückgabewert zurückkommt, was dann es Nagios auswerten kann. Es gibt ja noch NAPE, also NAPE unterstützt SSL, das ist aber kaputt,
das heißt, es gibt ein festes Zertifikat da drin, Man in the Middle ist möglich, es gibt seit Jahren einen Patch dafür, der aber nicht eingepflegt wurde.
Ich bin da nicht auf dem neuesten Stand, aber NAPE würde ich als nicht sicher jetzt erstmal setzen und NAPE, wenn es irgendwie möglich ist, nur über das Outbandnetz machen. Noch schlimmer ist es mit NS Client und SNMP V1 Katastrophe 2C, da lässt sich zumindest einschränken, von wem vorher der Check kommt
und welche OIDs oder welcher Subtree irgendwie abgelaufen werden kann. Genau, habe ich auch total oft gehört, SNMP V3, das kann ja keiner konfigurieren, ist ja viel zu schwierig, also, gibt es hier einen Laser oder so was?
Also, das Grüne ist der SNMP V3 Part und was ich durchgestrichen habe, ist der SNMP V2 Part. Das heißt, das ist die einzige Modifikation, ich muss einen Nutzer kreieren, ich muss eine Passphrase setzen und ich muss definieren, was dieser Nutzer darf.
Nämlich, der Nutzer heißt die Singer, er darf nur lesend zugreifen und die Verschlüsselung ist mit SHA und AES mit jeweils der gleichen Passphrase. Der Aufruf, der ist dann halt ein bisschen länger als mit SNMP V2,
weil halt die Passphrase damit drin ist und quasi auf Handshake und Transport irgendwie algorithmus hingewiesen wird, aber das ist im Endeffekt irgendwie einfach.
Achso, und man kann auch beides aktiv lassen. Man kann sowohl die Community definiert lassen, als auch den SNMP V3 Part und dann geht halt beides, dann geht es sowohl 2C als auch 3.
Um Plugins über SNMP auszuführen, kann man mit dem Extend-Kommando definieren in der SNMP-Dekonfiguration des Ziel-Servers, da wo der Dämmen draufläuft und kann halt auf ein Plugin verweisen, was ausgeführt werden soll.
Und dieses Plugin kann dann mit Check SNMP über die passende OID aufgerufen werden. Und die könnt ihr relativ leicht bekommen. Ich habe hier einen Walk gemacht, wo ich die Extended Objects abfrage. Es ist genau ein Object definiert worden.
Da ist denn der Pfad zum Plugin drin, ist hier in dem Plug Check Abt und das war ein Teil der Monitoring Plugins oder die hießen ja Managios Plugins ins ist. Und dann haben wir die verschiedenen Ausgabewerte, die zurückkommen von Check Abt. Und wir können durch Abfragen dieser einzelnen ID kriegen wir den aktuellen Ausgabewert.
Da wird also das Plugin ausgeführt und der entsprechende Ausgabewert, den wir abfragen, können wir direkt ins Managios Laden. Also einige Empfehlungen nochmal zu SNMP. Also wenn immer SNMPv3 anwenden, 2 zu 1 bevorzugen, dass beides Out of Band fahren.
Also ich würde weder 2C noch 1 in einem Nutzernetz fahren. Mit dem Community String, ich würde sehr davon abraten, immer sowas wie Public oder Lies mich oder irgendwie sowas einzusetzen, sondern wenigstens ein richtiges Community String zu setzen,
dass man mit Scripts das nicht automatisch ausprobieren kann. Dann kann man das Zugriffsinterface irgendwie einschränken auf ein bestimmtes Netz, was an einer bestimmten Karte angelegt ist.
Das macht man mit Agent-Adress, indem man die IP-Adresse der Interface-Karte einträgt. Und dann lässt sich unter V3 keine Einschränkungen bzw. des abfragenden Rechners machen,
weil davon ausgegangen wurde, nehme ich mal an, dass das mit der Verschlüsselung sicher genug ist. Aber unter 2C kann man eine IP-Adresse und auch den OID-Subtree, also den Bereich, wo eine Anfrage von einem bestimmten Rechner möglich ist irgendwie einschränken.
Das lässt sich auch relativ leicht machen, indem man quasi hinter die Community, man definiert eine Read-Only-Community, hat den Community-Namen dahinter, der nicht Public ist, und hat die IP-Adresse des Monitoring-Servers und dann kann man entweder eine spezifische OID hinsetzen
oder den entsprechenden Subtree, wo man eine Anfrage ermöglichen möchte. Mit SSH geht das ein bisschen anders, aber im Endeffekt genauso einfach. Ich erzeugen Schlüssel ohne Passphrase und dann schreibe ich vor den generierten Public Key,
definiere ich ein Kommando, in dem Fall Echo SSH-Test. Das heißt, als Ausgabe kriege ich SSH-Test, dann noch ein paar Parameter, wo ich quasi die Möglichkeiten einschränke, die mit dem Kommando verknüpft werden können.
Dann kommt der Schlüssel, das ist der Teil, den ich rausgeschnitten habe, und dann im Endeffekt ist ja, wo der Schlüssel generiert wurde. Und wenn ich jetzt, dann kopiere ich den Schlüssel quasi auf den Public Key, auf das Zielsystem, das ich überwachen möchte, auf dem natürlich das Kommando dann hier vorhanden sein muss.
Das heißt, hier steht ein Mitfahrtplugin drin, was ausgeführt werden soll. Und wenn ich jetzt ohne Terminal-Session mit dem entsprechend angegebenen Key, der müsste den IDRSA-Echo heißen, das ist jetzt hier irgendwie falsch, das muss natürlich entsprechend zusammenpassen, wie ich da oben definiert habe,
kommt direkt als Ausgabe die Ausgabe dieses Kommandos zurück. Das heißt, man kann auch über eine SSH-Session den Remoton-Kommando irgendwie ausführen. Wer von euch hätte jetzt das Argument, dass SSH zu viele Ressourcen verbraucht?
Also, SSH-Multiplexing. Kann man sich angucken, kann man eine Verbindung haben zu einem Zielrechner, da wären alle weiteren Sessions irgendwie durch die Multiplexing-Verbindung geladen, dann fällt der Handcheck immer komplett weg und dann spart man sich ganz erheblich Ressourcen.
Frage zu der vorletzten Seite. Hätte die SSH-MPV-IDR auch geklappt? Ja, aber es ist ja nicht auf jedem Rechner, deswegen ja. So, nochmal zu NRPE, ein paar Empfehlungen. Also, nicht auf NRPE verlassen. Also, SSL aktivieren, gut und schön.
Es ist aber nicht sicher. Mennene Mittel ist möglich mit der SSL-Implementation von CheckNRPE. Sie ist aber kaputt. Das ist zumindest der Standhabe. Es gibt einen Patch dafür seit 2012 und der ist bis jetzt noch nicht im Code drin.
Ich würde empfehlen, es lässt sich der Zugriff auf den Monitoring-Server irgendwie einschränken. Das ist in der NRPE-Conf. Oder halt in der XINET-Dekonfiguration, wenn man den Server dann bloß startet, wenn eine Anfrage läuft.
Dann RUT-Kommandos. Da gibt es ja im Endeffekt bei den Monitoring-Plugins nur zwei. Das ist der DHCP, war das einer. Noch einen anderen Check. Wenn man die ausführt, dann über SUDO definieren. Das habe ich jetzt hier nicht aufgeschrieben, aber ich gebe nachher eine Webseite, wo ich nochmal ein How-To dazu verfasst habe.
Das heißt, alle Kommandos, die RUT-Rechte benutzen, empfehle ich für die SUDO-Variante und nicht SOID zu nehmen. Dann alle, es lassen sich Kommandos als Alias definieren unter NRPE. Unter dem Alias lassen sich dann alle Parameter mitgeben, die mit dem Kommando verknüpft sind.
Und dann kann man südliche Parameter unter NRPE komplett streichen. Unter Linux ist es der Parameter Don't Blame NRPE. Und unter NS Klein++, das ist ja die Windows-Variante, ist es Allow Arguments und Allow Nasty Characters. Also Allow Arguments ist es relevante, um Argumente zu unterbinden
und quasi alle Checks über einen Alias laufen zu lassen. Und Nasty Characters ist, dass man ein Sonderzeichen irgendwie raussperrt. Jetzt, was sollte man immer monitorn? Also das ist jetzt meine Empfehlung.
Also ich würde den Ping über Check-ICMP machen generell. Dann würde ich die Service Ports, also TCP geht ja relativ einfach. ODP klappt unter Nagios nicht wirklich gut. Die Service Ports auf Verfügbarkeit überwachen. Die Netzwerkbandbreite.
Dafür die nächsten Plugins, die ich hier nutze. Also das sind alles SNMP Plugins, die aus der Manubulon Suite kommen. Die ist schon ein bisschen veraltet. Da gibt es eine gefixte Fassung von Michael Frierich. Das ist einer der Singer-Entwickler, die findet man auf Git. Und das Vorteil ist, also diese Checks lassen sich alle auf Windows und Unix-Systeme anwenden.
Das heißt, wenn man hier auf Band fährt, kann man 2C-Fahren über das Outbound-Netz. Alle Systeme, sowohl Windows als auch Unix-Systeme abfahren, was irgendwie von Forscher ist, um Graphen zu bekommen, die vergleichbar sind.
Also Netzwerkbandbreite, dann CPU-Load, dann freier Rahmen und Swap, dann Festplatten-Auslastung, dann Prozesse. Also es hängt jetzt jeder von ab, was man für ein Zielsystem hat, ob man einen Apache-Webserver hat oder irgendeine Datenbank.
Natürlich muss man wissen, wie viele Prozesse ist jetzt normal auf meinem, wenn ich einen Apache-Webserver habe, kann es vier normal sein, acht normal sein. Man guckt sich eine Weile an und dann kann man das entsprechend irgendwie die Thresholds einstellen, um zu sehen, ob man da ein Problem hat oder hängende Prozesse, die dann zum Beispiel auf den versuchten Exploit anweisen können.
Oder auch auf Zombie-Prozesse checken. Das ist etwas ganz Einfaches und wenn Exploit schief läuft, es besteht eine gute Chance, dass da ein Zombie entsteht und den kann man damit sehen. Und dann haben wir nochmal Sicherheits-Updates. Debian Ubuntu check-up. Es gibt Check-Zipper, das war Suze.
Check-Updates ist irgendwie Red Hat. Und Alias-Updates findet man bei NS Klein++. Das ist ein kleines Skript, was auf Windows-Updates checkt. NS Klein++ ist Windows. Es ist eine NAPI-Agent. Was noch?
Hat er gesagt, ich hatte eine Sammlung von möglichen Plugins, die man fahren kann, die darüber hinausgehen. Ich habe davon zehn ausgesucht. Ich würde mich freuen, wenn ich da von euch ein bisschen Feedback bekomme, wenn ihr andere Sachen macht, die so in die Richtung gehen. Oder wenn ihr sagt, der Check ist total blöd, da hilft überhaupt nichts, würde ich gerne von euch erfahren.
Das Offensichtliche ist, wenn ich die Standarddienste monitore, sehe ich sowas wie DOS. Ich sehe es nicht erst dann, wenn der Dienst nicht mehr geht, sondern ich sehe, dass Last steigt. Auf dem Netzwerkport, auf der Datenbank, was die Erreichbarkeit angeht,
wenn ich den PING mache, die Latenzen gehen hoch. Das heißt, ich habe eine Vorlaufzeit, die ich ohne das Monitoring nicht hätte, aber die natürlich schon durch sowas wie den PING schon mal ein bisschen da ist.
Aber DOS haben wir relativ schnell. Dann gibt es Brotford SSH Password Guessing. Natürlich kann man sagen, SSH-Server, warum nur mit Passwort? Können die Nutzer da nicht einfach Schlüssel generieren? Dann können wir Schlüssel und Passwort machen. Dann haben wir die ganzen DOS-Angriffe nicht mehr.
In der sind ja nicht mehr so ein Problem. Es gibt ja diese Fail-to-Bend-Skripte, damit kann man eine ganze Menge erreichen. Wenn man dann zusätzlich die Zahl der Einträge in den Authentization-Logfiles
irgendwie monitort, dann sieht man, wenn etwas komplexere Angriffe gefahren werden. Das heißt, wenn jemand mit vielen IPs schafft, an Fail-to-Bend vorbeizukommen, dann kriege ich viele Einträge in meinen Logfiles.
Dann sehe ich, hier habe ich jemanden, der mich vielleicht mehr auf den Kicker hat als andere. Hier ist eine erhöhte Last und der hat scheinbar die Ressourcen, um häufig die IP-Ressen zu wechseln oder irgendwelche Mechanismen, um an so einem Band vorbeizukommen. Also einfach Logaktivität. Man kann überhaupt Logaktivität grafen.
Und man sieht mit zunehmender Anzahl von Einträgen in den Logfiles, dass man vielleicht irgendwas hat, wo man mal angucken könnte, was ja glücklicherweise auf dem Log-Server ist.
Dann Scanning-Aktivität. Also ich bin eigentlich jemand, der denkt, also Scanning ist ja total in Ordnung. Also ich meine, das ist ja wie Umschauen. Das ist so ein bisschen, wo ich jetzt so herkomme. Und es ist allerdings, das mag man nicht so gerne, wenn es auf einem eigenen Server ist. Aber es ist immer so der Vorlauf.
Das kann jetzt irgendeiner sein, der sich jetzt mal umschaut, ist ja okay. Oder das kann auch ein Vorlauf für einen Angriff sein. Und der kann ja irgendwie ein halbes Jahr später kommen, denn von jemand ganz anders. Aber die Daten werden ja einfach mal eingesammelt. Und wenn es dann die NSA später macht, die sammeln ja auch. Es gibt einfache Skripte wie Ports Entry, die es ermöglichen,
die Scan-Aktivität auf einem niedrigen Level runterzudrücken. Und da lassen sich jetzt auch mit einem Monitoring-System relativ einfache Regeln machen, dass man weiß, naja, draußen bekomme ich das die ganze Zeit. Aber wenn von Ihnen das einer macht irgendwie, dann kriegt der Student eins auf die Finger.
Oder wenn es jetzt irgendwie einer in einer Buchhaltung ist, der das macht, dann ist es augenscheinlich nicht er selber, sondern irgendjemand anders. Das heißt, interne Scanning-Aktivität ist eigentlich das, wo man darauf achten muss, wo man was machen kann und wo man sich auch einen Alarm schalten lassen kann.
So, Web-Server-Compromise. Hatte ich schon gesagt, irgendwie die Prozesse bei dem Web-Server überwachen. Das ist individuell für jeden Web-Server, wie viele Prozesse da laufen. Und mit der Zeit lässt sich da ein relativ kleines Fenster setzen, was da so normal ist.
Dann Modifikation von sowas wie einer HT-Excess-Datei. Einfach gucken, ändert sich die Check-Summe. Ganz einfacher Check. Und dann weiß man, ob da jemand modifiziert hat, sage ich jetzt mal. Und Website-Defacement ist ja auch ganz einfach. Einfach die Ausgabe, einfach die Website abfragen und sich ein Schlüsselwort raussuchen.
Man hofft, dass es ein Teil der Veränderung sein könnte. Und jetzt nicht von jemandem aus dem eigenen Department modifiziert. Das ist auch relativ einfach. SSL-Checks würde ich sehr empfehlen. Also prüfen, ob Webseiten Plain Text zurückgeben, wenn sie es nicht machen sollten.
Gucken, ob die Zertifikate gültig sind. Überhaupt Zertifikate, einen formlichen Alarm schalten, drei Monate bevor das Zertifikat abläuft. Es ist total einfach und hilft einem, sich an irgendwas zu erinnern, nicht an einen blöden Zettel, der irgendwo an einem Monitor klebt
und dann irgendwie eine Woche vorher total im Stress sein. Entschuldigung, ich habe es nicht ganz verstanden. Also es geht um einen Check, den es schon gibt, den du empfehlen kannst?
SSL Labs.
Also es ist noch kein fertiger Check. Es ist einfach ein Programm, das man dafür nutzen kann. Ah, super. Kannst du mir schicken?
Okay, super. Man kann das Zertifikat natürlich auch selber prüfen. Da gibt es den Check SSL Zert. Check für, der ist bei den Monitoring Plugins. Ich meine die Nagios Plugins, sage ich aber nicht mehr, Monitoring Plugins.
Und dann kann man natürlich auch auf bekannte Sicherheitslücken checken. Zumindest fand ich das recht hilfreich, da hat jemand den Check Heartbleed gemacht. Da kann man natürlich relativ einfach sich mal so einen Check reinsetzen, Infrastruktur durchprüfen und den Leuten irgendwie auf die Füße treten. Ja, jetzt müsst ihr euch mal kümmern, ihr habt hier ein Problem.
Und den kann man dann wieder entfernen, wenn die Rechner entsprechend umgestellt sind. Also sowas würde ich nicht auf Dauer laufen lassen, das macht da keinen Sinn, wenn diese Lücke einmal irgendwie gelöst wurde. Man kann sich auch checks zusammensetzen, wenn man weiß, man hat jetzt auf irgendeiner Zertmailinglist gelesen,
die Versionen von Apeche, die hatten Sicherheitsprobleme, einen Check gucken, ob die Version irgendwo läuft. Einfach Versionscheck auf Programme machen, sich selber eine kleine Tabelle machen und prüfen, ob diese Version, die man da fährt, irgendwie geblacklisted ist. Oder eine White List, das ist vielleicht ein bisschen einfacher.
So, DNS-Gesundheit, man kann relativ einfach mit CheckDNS Auflösungen prüfen. Man kann gucken, ob es der eigene DNS-Server ist, der da antwortet, ob der authorative ist.
Das würde ich sehr empfehlen, diesen Check zu machen. Ich habe das selber mindestens schon einmal erlebt, dass das auf andere DNS-Server umgeleitet wurde. Das ist dann halt ein bisschen doof.
Ich habe keine gute Lösung für diesen Check gefunden. Im Endeffekt, wenn irgendwo mal im Netz, was ich betreue, eine Backdoor aufgeht, dann ist sie inzwischen mit irgendeinem Klopfzeichen verbunden. Das heißt, sie wird nicht die ganze Zeit offen sein.
Aber ich kann zumindest gucken, biete ich Dienste an, die ich jetzt nicht überwache. Oder die mit irgendeinem Update von irgendeinem System, das ich da habe, irgendwie erfahren werden. Nun, das eigene Netz die ganze Zeit zu scannen, IP-scannen, das ist relativ einfach. Portscannen ist mit ziemlich großem Aufwand verbunden.
Da kann man vielleicht einmal die Woche selbst kleine Netze nur durchlaufen lassen, wenn man da nicht irgendwie Last erzeugen möchte. Da habe ich, aber so richtig zufrieden bin ich mit der Lösung nicht. Da könnte ich Ideen gebrauchen, wie man quasi auf interne Dienste, die man nicht überwacht, prüfen kann,
aber in einem moderaten Zeitfenster.
Hast du was in der Richtung? Die Server laufen meistens durch, oder?
Ja, das kann man machen.
E-Mail Security. Und zwar, ich glaube, der interessanteste Check.
Also, ich weiß, viele von euch, ihr habt bestimmt auch noch irgendwelche Web.de-E-Mail-Accounts, die ihr ab und zu mal benutzt oder irgendwie sowas. Und scheinbar prüfen diese großen Anbieter gar nicht, ob sie auf Spam-Lists drauf sind, sondern irgendwie warten sie, bis irgendeiner sich beschwert. Habe ich so ein bisschen Eindruck.
Und ich glaube, ein sinnvoller Check ist, Blacklist zu überprüfen. Dann bin ich Open Relay. Also gerade für kleinere Leute, die ihre, sage ich mal, kleineren E-Mail-Server fahren, für eine kleine Community, ist es, glaube ich, ganz relevant, auf Open Relay zu checken.
Und die andere natürlich, die Mail-Q-Länge. Wenn ich spamme, wird meine Mail-Q ziemlich lang werden. Und dann könnte ich einmal genauer gucken, ob das jetzt einer von mir ist, ob das Sekretariat ist, was ich entschieden habe, irgendwie deutschlandweit E-Mails zu verschicken,
oder ob das tatsächlich irgendeine interne Maschine ist, die das E-Mail-System irgendwie missbraucht. Oder ich vielleicht sogar eine Sicherheitslücke habe, von der ich nicht weiß. DHCP-Gesundheit. Ich weiß nicht, also das Problem, dass in einem internen Netz ein zweiter DHCP-Server da ist,
würde ich immer noch als relevant einsehen. Es sei denn, man kann sich Switche leisten, die das unterbinden. Und meines Erachtens ist es nicht jeder Switch, der das leistet. Und da lässt sich auch relativ ein leichter Check umsetzen,
wo man eine Anfrage ins Netz schickt und guckt, ob da vielleicht noch ein Drucker antwortet und der Meinung ist, irgendwie auch Adressen zu verteilen oder so was. Switch- und Router-Sicherheit. Es gibt bei den etwas teureren Switchen, viele von den Geräten haben sowas wie
Mini-Intrusion-Detection-Systeme da drin. Das heißt, da wird ein Sicherheitsalarm geschaltet. Bei Firewalls, da gibt es manchmal eine Lampe dran, wo angezeigt wird, Sicherheitsproblem. Ich weiß nicht, wer davor steht und dann auf die Lampe guckt irgendwie. Da kann man natürlich die teure Tools kaufen, die alles irgendwie zu irgendeiner Oberfläche zusammenpassen,
die auch genau nur mit diesen Geräten funktionieren. Diese Alarmwerte lassen sich aus den meisten Switchen und Routern via SNMP auslesen. Also irgendwie mitbesorgen vom Switch-Hersteller oder Router-Hersteller
und gucken, ob ich die entsprechenden Alarmwerte da drin finde. Man kann ja zum Beispiel limitieren die Zahl der MAC-Adressen, die an einem Port zugelassen werden oder wie oft das wechseln darf. Der Alarm, der da generiert wird, läuft oftmals so lange, bis irgendwann der Port ausgeschaltet wird.
Dann kann man agieren, aber es wäre sinnvoll, ein paar Stunden Zeit zu haben, um zu sehen, ob jetzt einfach nur jemand eine virtualisierte Umgebung auf seinem Laptop hat, was diese MAC-Adressen erzeugt oder ob ich da plötzlich eine kaskadierte zweite Infrastruktur habe,
die ich eben nicht haben wollte. Man kann nach Promiscuous Mode prüfen, das können die meisten Switche machen, ob da Netzwerkkarten in den Sniffing-Modus geschaltet worden sind. Das halte ich für sehr sinnvolles Feature, weil für die meisten Arbs-Woofing-Attacks
muss das auf dem Host gemacht werden. Die haben auch direkt einen Impact auf den Switch selber. Der Switch meldet das, aber sie guckt halt keiner auf die Diode vorne. MAC-Adresswechsel hatte ich schon erwähnt.
Dann gibt es Check-Log, das kommt mit den Nagios Monitoring Plugins mit. Es gibt aber auch Check-Log-Files, das ist ein separates Plugin. Ist das von Lausau? Jetzt muss ich mal überlegen. Das ist ziemlich komplex.
Damit lassen sich komplexe Meldungen aus den Logs auslesen und interpretieren. Ich finde, die Vorhanden der Dokumentation ist zwar ausführlich, ist aber nicht wirklich hilfreich. Was ich hier gerne sehen würde, ist eine Liste von sinnvollen Check-Logs.
Also sich mal Check-Log-Files auf der Webseite von Lausau angucken. Netzspezifisch gibt es bestimmte Log-Einträge,
nach denen man, wenn man ein Problem hat, manuell sucht. Das lässt sich automatisieren mit Check-Log-Files. Ich würde das empfehlen, aber wie gesagt, ich kann euch keine speziellen Beispiele nennen, würde aber um eine Rückmeldung bitten. Der letzte Punkt, womit ich ziemlich positive Erfahrungen gemacht habe,
sind die Firmware-Versionen zu monitoren. Das hatte ich ja schon erwähnt. Die meisten Geräte lassen sich mit zwei Firmwares beladen. Und dass man eine Blacklist bzw. eine Whitelist betreibt mit Firmware-Versionen, die auf den eigenen Netzwerkinfrastruktur laufen.
Okay, ich habe das meiste, was ich hier vorgetragen habe, in House Tools oder in kleinen Rezepten in meinem Buch.
Ich habe eine Seite dazu, Monilog Info. Dadurch, dass das Buch inzwischen, also das Nagios Isinga Kochbuch, das ist bei O'Reilly erschienen, das ist bald out of print. Das heißt, O'Reilly war freundlicherweise nicht genug, um den Autoren die Möglichkeit zu geben, die Rezepte zu publizieren.
Das werde ich sukzessive auf Monilog Info machen. Alles, was ich hier erwähnt habe, oder ein großer Teil davon, ist in Rezepten enthalten, die ich geschrieben habe. Und die werde ich im Laufe der nächsten Woche online stellen. Die könnt ihr euch dann runterladen, was euch vielleicht helfen könnte,
um die Konfiguration nachzuvollziehen, die ich hier vorgeschlagen habe. Wie gesagt, ich würde mich über möglichst viele Rückmeldungen freuen, wenn ich Plugins geschickt bekomme. Ich gucke mir die gerne an, ich überarbeite die gerne, und wenn der Autor damit einverstanden ist, dann würde ich auch gerne, kann der Autor oder ich würde es unterstützen,
dass es irgendwie dann auch publiziert wird. Okay, danke.