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!