Dieser Untertitel ist noch nicht fertig. Wenn du kannst, bitte unterstütze uns hier und schau den Talk in Amara an für die letzten Korrekturen: https://c3subtitles.de/talk/1182 Danke!
*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!