35C3 Vorspannmusik Herald: So ihr seid alle hier, weil ihr mehr über SSH und Netzwerkhardware Monitoring erfahren wollt. Das ist sehr schön, wir freuen uns sehr und ich freue mich auch sehr, dass Heiko Borchers hier ist, er ist Fachinformatiker für Systemintegration an der Uni Düsseldorf und freier Journalist, ist eine spannende Kombination finde ich und außerdem im FrOSCon Team und er lädt euch alle herzlich ein, auch zur FrOSCon zu kommen dieses Jahr im August und jetzt fängt er an mit seinem Vortrag. Dankeschön. Heiko: Ja hallo, wie der Herald mich schon so schön vorgestellt hat, ich bin Heiko Borchers und ich werde euch jetzt ein bisschen was erzählen über SNMP, Python Paramiko und ELK und was man da machen kann, wenn das eigentliche Netzwerkmanager nicht so will, wie man selber möchte. Ja das ist das allgemeine, wer ich bin, wurde ja schon schön erklärt. Dann werde ich kurz mal über das allgemeine Umfeld sprechen, wie Enterprise WLAN aussieht. Tatsächlich so ungefähr auch wie das WLAN hier auf dem Congress. Ganz kurz auf die SNMP Grundlagen eingehen. Was benutzt wurde an Hard- und Software, bis hin zur Umsetzung. Und ja über mich habt ihr ja gehört, braucht man nicht mehr viel zu sagen. Mein Arbeitgeber , bei dem ich das Projekt gemacht habe, ist die Heinrich Heine Universität in Düsseldorf, ungefähr 30.000 Studierende, 10.000 WLAN Devices im Schnitt am Tag und ein kompletter Wildwuchs an Hardware, teilweise noch legacy HP, was 802 11n WLAN macht, langsames WLAN und ja. Insgesamt verwalten wir da jetzt momentan sogar etwas über 1000 WLAN Access Points und versorgen damit eine Fläche von 1,3 Quadratkilometern ca. Ganz kurz zu SNMP. Simple Network Management Protocol. Soll eigentlich die Überwachung von fast allen Netzwerkgeräten ermöglichen, teilweise kann man damit auch Netzwerkgeräte konfigurieren, aber SNMP hat ja inhärent ein paar Nachteile. Erstmal die Vorteile: es ist einfach zu konfigurieren, das ist herstellerübergreifend und die Pakete sehen sehr strukturiert aus. Wäre also schön, wenn man das nehmen kann, aber es hat Nachteile. Die 3 Wichtigsten sind: es ist langsam, es ist fehlerbehaftet, u. a. unser WLAN Controller, der mich zu dem Projekt gebracht hat, stürzte gerne mal ab, wenn man ihn per SNMP abfragt und das ist tatsächlich auch unsicher. Bis SNMP Version 3 gab es gar keine Authentifizierung, Verschlüsselung. Man musste nur wissen wie die public group heißt und dann konnte man alles mitlesen und bei manchen Geräten sogar Einstellungen ändern. Ist so ein bisschen doof. Enterprise WLAN funktioniert halt ein bisschen anders als das WLAN Zuhause. Zuhause hat man vielleicht 2 3 Access Points, die kann man noch per Hand konfigurieren. 900 Access Points wird schwierig das per Hand zu machen. Kann man versuchen, aber da ist man dann wochenlang, monatelang daran, die APs alle einzeln zu konfigurieren. Und ja unser HP wireless Controller, der HP 870, bin ich mir ziemlich sicher, der schlimmste WLAN Controller, weil er bei unseren SNMP Abfragen, wenn wir da ein vernünftiges Monitoring rausziehen wollten, ungefähr eine CPU Last von 100% hatte und dann ab und zu sich auch einfach abgeschaltet hat, wodurch dann alle Studierenden aus dem WLAN flogen, alle Mitarbeiter und das war dann so ein bisschen unglücklich. Das ist der angesprochene Controller, einer von 2. Inzwischen werden die bei uns Gott sei Dank jetzt ausgetauscht gegen exakt dieselbe Hardware die wir auch hier auf dem Congress verwenden, also Aruba. Unsere 3 Haupt Access Points, die neueren Modelle davon . Insgesamt haben wir jetzt aktuell 8 verschiedene Access Points auf dem Campus im Einsatz und dort ist halt alles ein bisschen schwierig zu managen. Deswegen habe ich mir gedacht, wie kann man das automatisieren? Wie kann man auch die Überwachung automatisieren? Und bin dann irgendwann drauf gekommen, das geht doch sicher auch per SSH. Ich kann ja mich auf dem Controller auch per SSH anmelden. Das war so das Überwachungstool was HP uns geliefert hat, das IMC. Man sieht da oben an diesem komplett grünen Kreis, da sollten eigentlich die verschiedenen Hersteller der WLAN Devices stehen, Heinz hier hat sich mal wieder gedacht: braucht man nicht, alle WLAN Geräten, die verbunden sind, sind einfach von Vendor unknown. Reicht, wenn man wissen will, wie viele Geräte da sind, aber wenn man jetzt auch das WLAN gerade so ein bisschen optimieren will, wäre es ganz schön zu wissen, ob ich jetzt nur Apple Geräte habe oder ob ich vielleicht noch irgendwelche Nischenhersteller supporten muss, wird da auch schon schwierig. Das andere ist Observium. Das ist gerade ein bisschen sehr pixelig. Theoretisch sollte man da einen Grafen sehen, der sogar sehr schön periodisch ist, wann wie viele Studenten bzw. wann wie viele Geräte im WLAN verbunden sind, aber exakt diese Anzeige war es dann auch, die unseren Controller ab und zu zum Absturz gebracht hat. Dann habe ich mir halt gedacht, baue ich mal was mit unserem ELK Stack, SPLUNK, die Enterprise Variante halt und Python. Die Anfänge waren ein ganz einfaches Shellscript, was bzw. ein ganz einfaches Pythonskript, was 3 Befehle kann. Es soll mir die MAC-Adressen raussuchen, die individuellen. Erst wollen wir die vom AP dann die Signalstärke, die Datenrate und zu welchem AP der jeweilige Nutzer gerade verbunden ist zeigen. Damit wir im Zweifelsfall auch nachvollziehen können, wenn der Nutzer Probleme hat, wo steht er gerade, wo müssen wir nachbessern. Das Ganze ist dann mit Python gebaut, mit Paramiko, das ist eine SSH Library. Der brauchte ich dann einfach nur sagen: das ist die IP Adresse vom WLAN Controller, das ist der SSH Befehl den du ausführen sollst und dann ließ mir bitte mal den Output, den der Controller gibt, ein. Problem war, dass ist eine menschenlesbare Tabelle. Menschenlesbare Tabellen sind nicht so schön in Monitoringsysteme zu bringen. Deswegen dann halt noch das komplette parsen der Tabelle. Erstmal alles an Leerzeichen rausschmeißen, alles was schön aussieht, kommt weg und dann das ganze für jeden Access Point ein Objekt in Python erstellen, was die entsprechenden Daten enthält. So das Obere ist halt die menschenlesbare Tabelle. Enthält den Access Point Namen, den State, Model, Seriennummer und dann nochmal der Access Point Name, die Radio ID, Channel und die restlichen interessanten Daten aus dem Netz aus dem WLAN über einen separaten SSH Befehl.Und am Ende kommt dann so ein relativ schönes, simples json bei raus, was da was dann eigentlich gegen jedes Monitoringsystem geworfen werden kann, was man so hat, was json versteht, womit man dann sich seine Grafen selber basteln kann. Das Problem ist die Probleme die uns aufgefallen sind ist der Datenschutz. Es war ja eben der Vortrag hier über das Tracking von Nutzern im WLAN, ich hab es bei mir selber mal ausprobiert, das Script so im maximal invasiven Modus laufen lassen. Man hat gesehen, wann ich mir Kaffee holen gegangen bin, wann ich zur Mittagspause gegangen bin, wie lange ich auf dem Weg in die Mensa gebraucht habe, war nicht so optimal. Deswegen speichern wir jetzt tatsächlich nur noch den Vendorteil von der MAC Adresse, dass wir nur noch den Hersteller wissen, aber nicht mehr welches Gerät es am Ende ist. Dann die Dauer des Scriptes. Der Controller glaubt halt, dass da ein Mensch hinter sitzt, deswegen versucht er das auch so auszugeben, dass ein Mensch quasi live mitlesen kann, Zeile für Zeile. Das habe ich dem Controller auch nicht abgewöhnen können leider. Und ja die Zuverlässigkeit der Controller, sie stürzten halt auch gerne mal so ab. Meine Ideen für die Zukunft sind das Script ist inzwischen Open Source. Ich wollte es jetzt mal demnächst anpassen, gucken ob man da noch schöne Sachen für OpenWrt machen kann. Vielleicht Sachen, die im OpenWrt Webinterface nicht rausfallen, dann über SSH kriegen kann. Wir wollten noch gucken, an der Uni, dass wir eine Campuskarte machen, auf der die Access Points eingetragen sind, damit wir sehen wenigstens, wo sind Ballungsgebiete? Wo müssen wir mehr Access Points aufhängen oder eine andere Infrastruktur bauen? Und der bessere Schutz für die Privatsphäre ist inzwischen umgesetzt. Wir nehmen nur noch den Vendorteil der MAC Adresse und schmeißen den Rest weg, so ist der einzelne Nutzer nicht mehr zu tracken, sondern wir wissen nur noch: es sind 30% Apple User bei uns, 20% Samsung und der Rest verteilt sich auf andere Hersteller. Dann danke ich für eure Aufmerksamkeit. Meine Quellen sind eigentlich Wikipedia, Herstellerbilder und die Quelltexte sind selber geschrieben. Präsentation könnt ihr auch abrufen , die URL müsste im Fahrplan eigentlich mit drin stehen. Wenn ihr an dem Script weiter entwickeln wollte, das hat einige schöne Sachen, die man halt auch für sein Heimnetzwerk nutzen kann und damit bin ich dann auch durch. Applaus Herald: Dankeschön! Wir haben jetzt noch ein paar Minuten für Fragen. Wenn ihr welche habt, stellt euch wie immer hinter die Mikrofone. Wir sollten auch einen Signal Angel haben. Wir haben keinen Signal Angel, wie schade. Ah der hat keine Fragen, ok. Es stehen Menschen hinter den Mikrofonen, ich freue mich. Dann fang doch bitte an. Mikrofon: Ja, vielleicht nur als Ergänzung: SNMP steht eben auch für Security Is Not My Problem. Deshalb die Frage: wie authentifiziert sich denn das Pythonscript per ssh? Geht das per RSA key oder, also per public-private-key, oder ist da ein haupthinterlegtes Passwort in dem Script drin? Heiko: In dem Fall geht das noch über ein hinterlegtes Passwort und einen read-only user Account. Der kann tatsächlich nur die lesenden Befehle auf dem Controller ausführen. Man kann aber auch per public- private-key sich anmelden. Das stellt Paramiko einem frei. Mikrofon: Ok, danke! Herald: So, das zweite Mikrofon. Näher ran bitte Mikrofon: Also bei dem SNMP was ihr verwendet habe für die Controller Herald: Noch näher ran bitte! Mikrofon: Bei dem SNMP was ihr verwendet habt bei den Controllern, ist das ähnlich wie bei den neuen Aruba Controllern? Heiko: Ich hab mit den neuen Aruba noch nicht viel gearbeitet. Mikrofon: Ok. Heiko: Aber es ist tatsächlich SNMP v1 und funktioniert wie gesagt so schlecht. Wenn man einen kompletten SNMP walk macht und sich alle Daten ausgeben kann, kommt der Controller auf 100% CPU Last und rebootet irgendwann und damit sind halt werden halt auch alle aktiven Verbindungen gedroppt. Mikrofon: Ok, dann ist das so wie bei Huawei auch. Herald: So, ich sehe jetzt keine weitere Frage. Herzlichen Dank und das ist dein Applaus! Applaus 35C3 Abspannmusik Untertitel erstellt von c3subtitles.de im Jahr 2022. Mach mit und hilf uns!