Archiv der Kategorie: Restmüll

Alles, was sonst nicht passt

BitBastelei #570 – Graylog: Fehler- und Systemmeldungen zentral erfassen

BitBastelei #570 - Graylog: Fehler- und Systemmeldungen zentral erfassen

(254 MB) 00:00:00

2023-12-17 11:00 🛈

Log-Dateien und Fehlermeldungen sind eine der wichtigsten Informationsquellen, wenn man Fehler finden oder einen Ablauf nachverfolgen will. Kompliziert wird es, wenn Systeme ihre Logs z.B. bei einem Neustart automatisch löschen, oder man Prozesse prüfen will, welche sich über mehrere Geräte erstrecken. In diesem Fall können zentrale Log-Server eine wichtige Hilfe sein um diese Daten an einer Stelle zusammenzutragen, auch über einen Neustart hinaus zu speichern und einfach durchsuchbar zu machen. Ein recht verbreitetes System, welches in großen Teilen als freie Software verfügbar ist, ist Graylog. Wie man dies installiert und mit Daten beschickt soll dann heute Thema sein.

Inhalt

  • 00:00 Lokales Logging
  • 03:14 Graylog
  • 05:11 Installation mit Docker-Compose
  • 09:10 MongoDB Hardwareeinschränkungen
  • 10:19 WebUI
  • 11:35 Inputs
  • 12:56 Syslog-Quellen
  • 14:42 Indices und Aufbewahrungsdauer
  • 15:34 Eigene Scripte mit GELF
  • 16:55 System-Logs per Filebeat
  • 21:25 Meldungen durchsuchen
  • 22:50 Fazit

Links zum Thema

Transparenz

Die gezeigten Teile sind freie Software und können von jedem kostenlos genutzt werden. Ich nutze Graylog selbst und hatte zum Zeitpunkt des Videos sonst keinen Kontakt zur Firma hinter dem Produkt.

adlerweb // BitBastelei 2023-06-09 20:33:10

Versuchte Vergewaltigung, Rassismus


Was man die nächsten Tage nicht durch gewisse Netze gehen sehen wird: In haben zwei Männer ein Mädchen belästigt und versucht ihr das Oberteil wegzureißen. Ein Radfahrer ging dazwischen. Fing sich zwar nen Schlag ins Gesicht ein, konnte aber immerhin dafür sorgen, dass die Täter die Flucht ergriffen. Den Radfahrer dürften einige Bevölkerungsgruppen als "nicht Deutsch genug" einstufen – das passt dann nicht so ganz ins Weltbild.

Neujahrsabend in Nebenhausen

(Satire in Anlehnung an Stenkelfeld)

Nebenhausen, 31. Dezember, 18:09 Uhr

In der Einfamilienhaussiedlung Bienenberg lässt der kleine Kevin drei Knallerbsen in der Einfahrt des Elternhauses zerplatzen. Neujahrsstimmung breitet sich aus. Die Freude ist groß.

Nebenhausen, 18:10

Beim Rauslassen der Katze beobachtet Nachbar Herbert B. die provokante Knalleroffensive im Nebenhaus. Umgehend begibt er sich zum Gertenschuppen, in dem Restbeständen des Jahrtausendwechsels noch in einer Schubkarre lagern.

Nebenhausen, 18:42

Herbert B. hat eine Tüte mit den Überresten unzähliger Mini-Böller Deutscher Herstellung entdeckt und ins Freie verfrachtet. Grimmig sortiert er zerbröselte Exemplare heraus und beginnt damit die Lunten der Reste anzuzünden.

Unter-Ober-Neustadt bei Nebenhausen, 18:51

In der Polizeidienststelle Unter-Ober-Neustadt gehen erste Besorgte Anrufe über unklare Explosionen ein. Der Diensthabende Wachtmeister Mayer wiegelt ab: Vorzeitige Detonationen seien normal, außerdem ist der einzige Kollege Schmidt grade Abendessen kaufen. Kann man nichts machen.

Nebenhausen, 19:04

Torben L. unterbricht das Abendessen um seinen Beitrag zum beginnenden Jahr zu leisten. Das Schmidt’sche Knallen wird alsbald durch extra aus dem Ausland bestellte Superböller ergänzt.

Nebenhausen, 19:11

Auch Timo N. bereitet sich auf seinen Einsatz vor. Ein Konstrukt aus Gewebeband, Polenböllern und diversen Chemikalien soll den Jahreswechsel unvergesslich machen und findet den Weg auf die Grundstücksmauer. Dummerweise ohne Feuerzeug, also nochmal suchen.

Nebenhausen, 19:16

Durch die ständigen Knallgeräusche fühlt sich Nadine Becker aus der Nachbarstraße beim Genuss des Senders RTL gestört. Aus der Handschuh-Schublade neben dem Hauseingang greift sie eine Leuchtpistole osteuropäischer Herstellung, welche Sie für Notfälle gekauft hat. Durch einen gezielten Schuss in dem Himmel verleit sie ihrem Unmut ausdruck.

Nebenhausen, 19:17

Das taghelle Flackern der offenbar etwas stärkeren Leuchtmunition erweckt das Interesse des kleinen Justin. Gemeinsam mit Freund Maurice schleichen sie sich über den Garten zum Haus von Timo N und entwenden dessen Eigenbausprengsatz.

Nebenhausen, 19:23

Torben und Maurice Zünden die Lunte, versenken das Konstrukt in einem zum Abwassersystem gehördenden Schacht und treten dir Flucht an. Den Deckel des Schachtes haben Betrunkene schon vor einigen Wochen abgehoben, durch die Weihnachtszeit konnte die Straßenmeisterei diesen noch nicht ersetzen. Kann man nix machen.

Nebenhausen, 19:24

Die Druckwelle der Detonation lößt einen Tsunami aus Kloschüssel, Waschbecken und Dusche des Alkoholikers Fritz aus, welcher seinen wohlverdienten Katerschlaf auf eben jenem Thron verbrachte. Ein kurzer Blick auf die drei Armbanduhren zeigt: Japp, ein Zeiger ist auf der Null. Vermutlich. Wankend begibt er sich zum Kleiderschrank mit Errungenschaften seiner Bundeswehrzeit um traditionsgemäß mit einer Übungshandgranate des Typs DM58 das neue Jahr zu begrüßen.

Nebenhausen, 19:59

Nachdem Fritz erfolgreich das Bier weggeworfen und einen guten Schluck aus der Handgranate genommen hat wird Nebenhausen von einer lauten Detonation erschüttert. Wachtmeister Mayer wirft einen kurzen Blick von seiner BILD-Zeitung – seltsame Uhrzeit, aber kann man nix machen.

Nebenhausen, 20:01

Beim Ausräumen der Spülmaschine durch den Knall erschreckt lässt Nachbarin Erna W. eine ihrer guten Meißen-Tassen fallen, welche einen teuren Scherbenhaufen auf dem Fußboden hinterlässt. Umgehend begibt sie sich ins Freie um nach dem Rechten zu sehen.

Nebenhausen, 20:05

Die Sirenen des Ortes treten in Aktion. Die Feuerwehr wird aufgefordert die Überreste des Akholikers Fritz im entstandenen Krater zusammenzusuchen. Der Rettungsdienst atmet nach der Funkdurchsage auf – doch kein zusätzliches Bett nötig.

Nebenhausen, 20:09

Der 85-jährige Kriegsveteran August R. interpretiert das Sirenensignal fälchlicherweise als anstehender Luftschlag. In einem verzweifelten Versuch die Region als bereits Zerstört darzustellen zündet er das Darstellungsmittel DM 25 elektrisch. Der 39kg schwere Prototyp erzeugt alsbald den Anschein einer Atombombenexplosion. Die 90m hohe und 45m breite Rauchwolke wäre sicher imposant, wenn man sie nach dem vorherigen Lichtblitz denn noch sehen könnte.

Nebenhausen, 21:50

In einer eilig einberufenen Pressekonferenz bedauern die Gesundheits-, Verkehrs- und Justizminister die massiven Zerstörungen in Nebenhausen sowie den angrenzenden Orten. Es handele sich um einen tragischen Unfall, welcher jedoch keine Auswirkungen auf die Verfügbarkeit von Böllern oder anderen Freiheiten der Bürger haben werde. Die angrenzende Autobahnbrücke werde in den nächsten Wochen durch ein Provisorium ersetzt. Die Bahnstrecke wird aus Kostengründen nicht wiederaufgebaut.

BitBastelei #484 – TS011F Zigbee SmartPlug

BitBastelei #484 - TS011F Zigbee SmartPlug

(2 GB) 00:25:37

2022-04-10 10:00 🛈

Dinge um Netzspannung zu schalten hatten wir schon öfter, hatten aber immer die Anforderung in die Installation einzugreifen. Zwischenstecker, oder auch SmartPlugs genannt, sind deutlich einfacher in der Anwendung und können ähnliche Funktionen bereitstellen. Die Frage: Bringt der geringe Platz Probleme, oder kann das Gerät seine Versprechen erfüllen? Das heutige Modell startet jedenfalls mit schlechten Vorzeichen: Es entspricht nicht so ganz den Herstellerangaben.

Hinweis: Das Gerät im Video stammt aus der zweiten Generation und ist heutzutage wohl nicht mehr im Verkauf.

Inhalt

  • 00:00 Smartplug statt Sonoff/Shelly
  • 03:26 Erster Test
  • 05:02 Zigbee-Verbindung & Steuerung
  • 08:12 Zerlegerei
  • 18:37 Reverse-Zerlegen
  • 18:50 Zweiter Test
  • 20:24 Strommessung
  • 22:07 Auffälligkeiten & Fazit

Transparenz

Das Gerät wurde selbst gekauft und bezahlt. Ursprünglich war geplant den Artikel zu verlinken, da fast alle Verkäufer inzwischen auf neuere Revisionen setzen ist das gezeigte Produkt aber wohl nicht mehr zu bekommen.

Stromnetz-Hacker-Serie auf Joyn: Technisch-inhaltlicher Blackout?

Alles in Deckung, längerer Rant.

Ein Buch, welches mir immer wieder empfohlen wurde, ist „Blackout“ von Marc Elsberg *. Ein Blackout bezeichnet dabei üblicherweise einen unerwarteten, großflächigen Stromausfall. Langes Thema, über das man viel erzählen könnte *Videoidee notier*, aber dafür sind wir heute nicht hier. Der Streaminganbieter „Joyn“ hat auf Basis des Buchs nun eine Serie geschaffen. Die erste Folge ist nach Anmeldung gratis ansehbar, also werfen wir mal einen Blick rein. Prinzipiell haben Filme und Serien aus technischen Themenfeldern für mich immer einen gewissen Popcornfactor, da durch filmische Vereinfachung selbst bei guter Beratung teils wirre Erklärungen oder Aktionen auftreten.

Vorweg: Ich bin in vielen Bereichen nicht direkt aktiv, mein „Wissen“ stützt sich daher eher auf die öffentlichen Publikationen der Betreiber bzw. Techniker sowie geltende Normen. Nicht auszuschließen, dass ich ab und an mit meiner Einschätzung daneben liege. Hinweise gerne über die Kommentare oder direkt an mich.

Vorab ein Mini-Rant zu Joyn: Aktuell 7€/Monat für einen eher unbekannten Streamingdienst mit zweifelhafter Auswahl und keinen Inhalten >1080p erscheint mir doch eher gewagt. Ebenso scheint der Player keinerlei Funktionen zu bieten – Originalton? Untertitel? Manuelle Qualitätswahl? Widergabegeschwindigkeit? All dies suchte ich vergebens. Hinzu kommt eine sehr strikte DRM-Policy, welche für fremde Inhalte viele Browser und Betriebssysteme, unter Anderem auch alle PCs, Mediacenter und TVs auf Basis von Linux, vollständig ausschließt. Man tritt also all Jenen, die die Inhalte legal konsumieren wollen, vor’s Schienbein, während Menschen mit „bösen“ Absichten diesen „Schutz“ mit wenigen Tricks umgehen und die Inhalte ohne solche Gängelei genießen können.

Glücklicherweise ist die Blackout-Folge mit geringerem DRM versehen, also los geht es. Erster Eindruck: Ist der Monitor falsch eingestellt? Alles extrem dunkel und kaum zu erkennen. Ich verbuche es mal als Stilmittel und konzentriere mich fortan auf die technischen Aspekte.

Erste Technische Szene: Das Wasserkraftwerk Eibenstock in Sachsen. Gibt es tatsächlich – 1.7MW. Nicht unbedingt ein sonderlich nennenswerter Beitrag zum Netz, aber hey, I’ll take it. Im Dialog zwischen einer Person in der lokalen Leitstelle und einem Weiteren, der durch Gänge irrt, geht es darum, dass durch ein Länderspiel der Stromverbrauch höher als üblich wäre. Tatsächlich kann man Länderspiele teils in der Infrastuktur sehen, aber eher andersrum: In Pausen steigt der Strom- und – vor Allem – der Wasserverbrauch. Der Fernseher selbst geht im Rauschen der Stromverbraucher unter – eine einzige Mikrowelle benötigt mehr Strom als 10 Fernseher. All das ist nichts gegen Industrieanlagen, von denen viele beim abendlichen Länderspiel still stehen dürften. Also mehr als genug Reserven da.

„Warte mal, da stimmt was nicht“ ist die Aussage des Gangerkunders, welcher wohl den Chef mimen soll. Im Hintergrund hört man, das sich eine Drehzahl erhöht. Akustisch kein Kraftwerk, aber dann wäre vom Dialog auch nicht mehr viel übrig. Würde die Drehzahl eines (klassischen) Kraftwerks steigen, dann würde tatsächlich mit hoher Wahrscheinlichkeit etwas nicht stimmen. Plötzlich steigende Drehzahl wäre ein massives Problem – im Gegensatz zur vorherigen Diskussion aber ausgelöst durch sinkende Last, nicht steigende. Tatsächlich wird dieser Umstand und seine Folge aber später in der Folge auch korrekt erklärt. Man entscheidet sich für eine Notabschaltung um die Anlage zu schützen. Solche Abschaltungen bei kritischen Zuständen sollten eigentlich automatisch erfolgen. Es ist Sinn und Zweck eines Steuersystems Personal, Anlagen und Umwelt vor gefährlichen Betriebszuständen zu schützen. „Es ist ein Frequenzabfall“ heißt es zugleich vom Herren im Leitstand. Seltsam, denn ein Abfall der Frequenz ginge mit zu hoher Last und daher sinkender Drehzahl einher. Die Visualisierung – hm. Teils eher unsinnige Werte, aber immerhin sind die angezeigten Elemente durchaus für ein solches Wasserkraftwerk relevant – wenn auch grafisch etwas übertrieben.

Visualisierung Kraftwerkssteuerung. u.A. Leistung in „KW“ (gibt nur kW) sowie Drehzahl von 166% bei 145°C und 166 bar.
Bildausschnitt „Blackout“; © Wiedemann & Berg Television / Joyn

Aber zurück zur „Notabschaltung“. Der Herr in der Leitwarte läuft nun los – mehrere Treppen und Gänge entlang – um auf mehrere Knöpfe für die Notabschaltung zu drücken. Wat. Eine Notabschaltung ist für Notfälle, entsprechend ist sie auch schnell erreichbar und verbirgt sich nicht in abgelegenen Schaltschränken. Üblicherweise findet man eine (bzw. mehrere für mehrere Maschinen) auf dem Kontrollpult oder an der Tür des Kontrollraums. Im Steuerschrank einer Heizung bzw. kleinen Wasseraufbereitungsanlage – eine Kraftwerkssteuerung dürfte das gezeigte jedenfalls nicht sein – versteckt sich diese eher nicht. Auch ist das üblicherweise ein Knopfdruck und nicht ein Klavierkonzert. Anyway – das Kraftwerk fährt nun runter. Und das Licht geht aus. Hm, bei einer Kraftwerksabschaltung wird Licht & Co üblicherweise noch vom Netz weiterversorgt. Gingen wir davon aus, dass das Netz ausgefallen wäre (was eine Erhöhung der Drehzahl auslösen könnte) hätte wiederum das Steuersystem schon vorher die Anlage automatisch in einen sicheren Zustand versetzt.

Notabschalteinrichtung eines Wasserkraftwerks. Der eigentliche Not-Aus/Not-Halt ist der unter, rote Knopf. Dieser würde sich nicht in einem Schaltschrank verstecken.
Bildausschnitt „Blackout“; © Wiedemann & Berg Television / Joyn

Nun folgen mehrere Szenen, die die Auswirkungen zeigen. Ausgefallene Ampeln? Joa. Dunkle Städte? Naja, Autos und Mobilgeräte würden weiterlaufen. Kein Handynetz? Schwierig – auch wenn es immer weniger wird gibt es durchaus noch Stationen mit Notstrom. Zumindest für eine kurze Zeit. Sicher, das Netz könnte durch die entstehende Flut von Anrufen überlastet werden, aber Personal von Ministerien (die gezeigte Dame arbeitet in der Story für das Innenministerium) hatten zumindest früher eine erhöhte Priorität auf ihren SIM-Karten. Also sagen wir es wäre halt ihr Privathandy. Zudem hat der Berliner Hauptbahnhof – oder sollte ich sagen die eher schlecht zurechtgephotoshopte Leipziger Messehalle – offenbar eine interessante Notausstattung: Der überdimensionale Bahnsteig – Grundfläche kostet dort offenbar nichts – wird zwar nicht beleuchtet, für die Aktualisierung der Fallblattanzeige ist aber Notstrom vorhanden.

Auch im Freizeitpark nebenan interpretiert man die Notsysteme eher lose: Ein Achterbahnzug haut durch den Beginn des Stromausfalls die Bremsen zu und kommt kopfüber zum stehen. Entwarnung für Alle, die sowas glauben: Nein. Die gezeigte Achterbahn hat einen Kettenlifthill am Anfang, also vermutlich im Zug selbst keinen eigenen Antrieb und üblicherweise auch keine aktiv gesteuerten Bremsen. Der Zug würde daher auch ohne Strom seine Fahrt fortsetzen und an der nächsten Blockstelle (bei kleinen die Station, bei größeren Anlagen zwischendrin) stehen bleiben. Diese Blockstellen sind dabei auch fast immer mit Stegen, Leitern und Ausstiegsmöglichkeiten für genau solche Fälle versehen. Die Steuerung sorgt dafür, dass zwischen der letzten und der kommenden Blockstelle immer nur ein Zug unterwegs ist. (Wer es genauer will: Es dürfte die Stahlachterbahn Huracan im Park BELANTIS sein, diese ist vom Modell Euro-Fighter des Herstellers Gerslauer Amusement Rides – die Blockstelle in der Mitte der Strecke, an der in Notfällen der Wagen anhalten würde, ist sehr deutlich zu erkennen.)

Weiter geht es im ICE. Von der Verschwenkung im Gang würde ich auf BR412 („ICE4“) tippen. Dort springt soeben lautstark der Notstrom an und sorgt für Licht im Waggon. Nochmal wat. Ich kann leider keine vollständigen Daten für den 412er finden, von vorherigen Modellen und den Rettungskarten ausgehend gehe ich aber sehr stark davon aus, dass über den Zug verteilt Blei-Gel-Batteriepacks für Beleuchtung und Steuergeräte genutzt werden. Diese sind dauerhaft aktiv und müssen nicht extra geschaltet werden, das Licht wäre also gar nicht ausgegangen. Einen Generator dürfte man im Zug nicht finden. Teils kann man mit den Batterien Rückspeisen und so die Klimaanlage betreiben, was die Geräusche erklären könnte, dennoch: Nope.

Weiter. Der Nachbar klingelt. Er könne kein Fußball schauen. Du bist doch Techniker, reparier das. Ich denke jeder Techniker kennt das – der Part ist mehr als realistisch.

Der kurze Lichtblick wird schnell getrübt: Der Techniker steht mit Laptop vor dem (trotz Stromausfall leuchtenden) Stromzähler und schaltet drahtlos den Strom wieder ein. Erstens: Es wurde/wird schon klargestellt, das alle Kraftwerke aus sind. Dann ist üblicherweise auch kein Strom am Zähler. Erst recht kann man ihn dann nicht drahtlos mit einem beliebigen Laptop wieder einschalten. Selbst wenn wir jetzt mutmaßen, dass der Techniker den Zähler bereits vorher präpariert und mit WLAN ausgerüstet hat, den zugehörigen Router per Akku mit Notstrom betreibt und den internen Datenbus angezapft hätte: Ohne Stromnetz ist der Controller des Smartmeters üblicherweise aus. Andere Punkte passen aber: Einige Smartmeter-Modelle haben Möglichkeiten den Strom durch Fernsteuerung zu unterbrechen („remote disablement“). Auch die Gefahr, dass Kriminelle in diese Systeme eindringen können, ist nicht unwahrscheinlich. Ebenso würde ich hoffen, dass die aktuellen Smartmeter keinen 3.19er Linux-Kernel nutzen – der ist schon was länger EOL. Die gezeigten Tools zur Kontrolle sehen ebenfalls nicht sonderlich unrealistisch aus.

Weiter geht es zum Berliner Innenministerium. Auch hier ist der Strom aus. Ich würde darauf wetten, dass es auch hier eine Unterbrechungsfreie Stromversorgung gibt, bei Ausfällen übernehmen also Batterien bis ggf. Generatoren laufen. Üblicherweise alles automatisch, bei günstigeren Anlagen eventuell mit einigen Sekunden umschaltzeit. Da die Protagonistin in der Zwischenzeit vom Bahnhof zum Ministerium gelaufen ist sollte die Versorgung längst in Betrieb sein. Ebenso reicht der Notstrom weder für die Schranke noch für eine brauchbare Innenbeleuchtung – wohl aber um die Schiebetüren am Eingang zu öffnen. Im Hintergrund bauen Techniker mit Verlängerungskabeln und Baustrahlern den Notstrom auf. That’s not how this (usually) works.

Es folgt eine Erklärung, dass es durch den gleichzeitigen Ausfall mehrere Hauptstromleitungen zu ungewöhnlichen Spannungsschwankungen gekommen wäre, welche sonst nur Millisekunden andauern würden. Puh. Interessante Technik, denn das Umschalten von Höchstspannungstrassen dürfte eher nicht in Millisekunden erfolgen. Der beschriebene Dominoeffekt ist aber durchaus korrekt – eine lokale Störung kann im ungünstigsten Fall das gesamte europäische Netz kippen.

Notstrom hätten Krankenhäuser und Ministerien – aber nur für bis zu 48 Stunden. Ja und nein – richtig ist, dass die Tanks natürlich nicht ewig halten, für diese Fälle gibt es jedoch Lieferverträge mit Firmen, die (zumindest auf dem Papier) ebenso über Notstrom zum betanken der Lieferfahrzeuge verfügen. Ganz so schnell ist das Licht in so versorgten Einrichtungen also nicht aus. Ebenso verfügen Hilfsorganisationen und Energieversorger über Aggregate und Netzersatzanlagen um an kritischen Stellen aushelfen zu können.

„Die Energieversorger sind optimistisch. In ein bis zwei Stunden haben sie das Problem gelöst“. So vermeldet der Herr im Anzug. Eine Szene, die ebenso realistisch erscheint. Personen in Führungsebenen neigen leider – insbesondere in Kriesen – häufig dazu Probleme kleinzureden und kaum haltbare Zusagen zu machen. Bei eine Systemtrennung im Januar 2021, bei welcher noch Strom da war, brauchte man über eine Stunde um einen „normalen“ Zustand zu erreichen. In zwei Stunden einen Schwarzstart hinzulegen klingt da doch sehr ambitioniert.

Im Kraftwerk setzt man derweil das SCADA-System zurück. Jepp, Supervisory Control and Data Acquisition, so heißen die Steuersysteme wirklich – Pluspunkt für richtiges Fachwort. Es zeigt sich aber wieder eine eher ungewöhnliche Priorisierung: Weiterhin kein Licht im Kontrollraum, aber genug Strom für Tröten und Dekorationsbeleuchtung. Was das Raumschiff(?) auf dem Zweiten Monitor angeht – hm, fällt mir schwer ein so langgezogenes Diagramm in einem Wasserkraftwerk zu verorten.

Kontrollraum eines Wasserkraftwerks. Rechts der bereits zuvor zu sehende Bildschirm, Mitte eine Liste mit Alarmmeldungen, links nicht zuordenbar. Bildausschnitt „Blackout“; © Wiedemann & Berg Television / Joyn

Zurück zum „Hacker“: Der ist nun auf dem Weg zur Zentrale des Energieversorgers. Auf dem Weg stellen sie fest, dass Tanken nicht möglich ist. Korrekt, nur wenige Tankstellen sind mit einer Notstromversorgung ausgestattet. Selbst wenn wären diese oft kritischen Verbrauchern, also z.B. Rettungskräften, vorbehalten. Er hängt sich an eine Gruppe Techniker und betritt das Gebäude. Ebenfalls nicht ungewöhnlich: Social Engineering – wer passend auftritt wird oft nicht hinterfragt. Eine Leiter ersetzt viele Schlüssel. Er erzählt von seinen Entdeckungen, wird in einen Raum begleitet und letztendlich durch eine Anti-Terror-Einheit gewaltsam festgenommen. Leider nach wie vor ebenfalls nah an der Wahrheit. Viele Firmen und Einrichtungen nehmen Hinweise auf Sicherheitslücken nicht wirklich wohlwollend auf. Zuletzt hatte die CDU eine Sicherheitsforscherin angezeigt, welche der Partei gravierende Sicherheitslücken in einer Wahlkampf-App gemeldet hatte. Teils scheint es, dass es in Deutschland für Forscher weniger gefährlich ist Sicherheitslücken auf dem Schwarzmarkt zu verkaufen und so Dritte in Gefahr zu bringen anstatt die zuständigen Stellen auf solche Lücken hinzuweisen und so Firmen und deren Kunden vor weiteren Schäden zu bewahren.

Alles in allem hinterließ die Folge bei mir einen gemischten Eindruck. Viele der Konzepte sind nah an der Wahrheit, bei anderen kann sich mein Kopf nur der Tischplatte annähern. Zum Verhängnis wird der Folge dabei, dass man die Technik sehr in’s Rampenlicht rückt – Fehler die bei B-Filmen wie 380.000V * in der Nebenhandlung untergehen werden hier passend eingerahmt und über Minuten plattgetreten. Am Ende ist die Sache für mich angesichts der mangelnden Verfügbarkeit und der technischen Fehlern recht klar: Es dürfte bei der einen Folge bleiben. Eventuell werfe ich später nochmal einen Blick drauf, wenn sie auch über andere Quellen verfügbar ist. Dann aber mit passender Flasche für das „ist Unfug“-Trinkspiel.

Windows-Update – Fehler 0x800f0831 beheben

Hinweis: Die Screenshots sind von einem älteren System, die Meldungen, Pfade und Vorgehensweisen sollten sich jedoch auch auf aktuelle Versionen übertragen lassen.

Und wieder das übliche Bild: Auf einem Windows-System sind nicht alle Updates installiert. Keine gute Idee, insbesondere bei Systemen, die an einem Netzwerk betrieben werden. Also schnell in die Einstellungen und Updates installieren – in der Theorie. Leider passiert es nach meiner Beobachtung immer wieder, dass Updates quer sitzen und sich nicht installieren lassen. Auch im aktuellen Fall sah man bereits: „Failed“ war im letzten Installationsversuch zu erkennen.

8 offene Windows-Updates, letzter Installationsversuch fehlgeschlagen

Auch ein manueller Versuch über „Install updates“ brachte kein Erfolg. Der Assistent schien fehlerfrei zu laufen, nach dem im Anschluss angeforderten Reboot war jedoch das Bild wieder identisch: Die Updates standen erneut als offen drin. Also erster Blick: Welche waren überhaupt betroffen. In den Details fanden sich neben den meist wenig aussagekräftigen Bezeichnungen auch die KB-Nummern, welche bei Microsoft die zugehörigen Dokumentationen beschreiben.

Liste der offenen Updates mit KB-Nummern

Hier kam dann der Microsoft Catalog unter https://www.catalog.update.microsoft.com/ ins Spiel: Über diese Webseite lassen sich per KB-Nummer einzelne Updates suchen und per Hand herunterladen. Hierbei etwas aufpassen: Oft sind die Updates für verschiedene Betriebssystemversionen und CPU-Architekturen mit der selben KB-Nummer eingestellt, beim Download lohnt es sich also doppelt hin zu schauen.

Microsoft Update Katalog-Webseite mit einzelnen Updates

Die zum Download angebotenen MSU-Dateien sollten sich direkt per Doppelklick öffnen lassen und einen Setup-Assistenten zeigen. Leider brachte auch die händische Installation keine Besserung – am Ende des Assistenten vermeldete das Ergebnis ein wenig aussagekräftiges „The following updates were not installed„. Auch die Ereignisanzeige des Betriebssystems verriet nicht mehr als eben jene wenig hilfreiche Statusmeldung.

An dieser Stelle wird oft eine Reparatur mit DISM.exe /Online /Cleanup-image /Restorehealth bzw. Sfc /scannow oder gar eine Neuinstallation empfohlen. Ist jedoch klar, dass das System keine weiteren Probleme hat, ist eine gezielte Reparatur jedoch oft weniger Zeitintensiv als eine vollständige Neuinstallation, insbesondere wenn die betroffenen Systeme nicht über ein Konfigruationsmanagement/Orchestration zur automatischen Installation verfügen.

Glücklicherweise erstellt Windows Update an diversen Stellen erweiterte Protokolle, welche die Fehlersuche erleichtern. Bei Installationsfehlern sind die CBS-Logs meist die hilfreichste Anlaufstelle. Die Korrekte Datei findet sich unter %systemroot%\Logs\CBS\CBS.log. Eine Suche nach “ Error “ (mit ein paar Leerzeichen dahinter) sollte die relevante Stelle schnell sichtbar machen. In diesem Fall handelte es sich um eine Inkonsistenz im Updatespeicher, die zugehörige KB-Nummer ist in solchen Fällen in der Fehlermeldung erkennbar. Wer diese vergleicht wird feststellen, dass es sich hierbei nicht um eins der zur Installation vorgemerkten Updates handelte. Stattdessen betraf es ein älteres Update, welches für die aktuelle Installation benötigt wurde. Das genannte, ältere Update war laut System installiert, fehlte in Realität jedoch. Ein solcher Zustand ist oft zu finden, wenn bei einem vorherigen Update der Rechner abstürzte.

Ausschnitt CBS-Log. Vorausgesetzte KB-Nummer in der Fehlermeldung erkennbar

Also zurück zum Catalog, dort kann man das defekte Update manuell herunterladen und nochmals installieren. Ist dies Erfolgreich sind Updatespeicher und Realität an dieser Stelle wieder auf einem konsistenten Stand und die Installation der neueren Updates kann fehlerfrei erfolgen. Möglicherweise muss der Vorgang für mehrere ältere Updates wiederholt werden. Hier kann es helfen in der Updatehistorie zu prüfen, welche Updates mit dem Betroffenen zeitgleich installiert wurden und diese – sofern nicht ersetzt – präventiv ebenfalls neu zu installieren. Am Ende sollten sich alle Updates installieren und das System so auf einen aktuellen Stand bringen lassen.

Yubikey: Nicht ganz unkaputtbar

tl;dr: YubiKeys nicht am Schlüsselbund festmachen

Wenn es um Security-Tokens geht, hat YubiCo mit seinem YubiKey klar die Nase vorn. Nicht zuletzt, da diese so ziemlich die ersten Geräte waren, welche die gängigsten Sicherheitsmechanismen in einem Gerät vereinen konnten. Vor allem U2F, TOTP (aka Google Authenticator) und PGP sind bei mir fast dauerhaft im Einsatz. Mit dieser Kombination kann ich 2-Faktor-Anmeldung auf Webseiten nutzen, E-Mails signieren und entschlüsseln, mich auf SSH-Servern anmelden und Zugriff auf lokale Dateien und Programme absichern. Auch Zertifikate, aka X.509, sind eine praktische Sache, können sie doch für Logins in Windows-Netzen, S/MIME oder das signieren von Dokumenten unter Windows genutzt werden. Zwar lassen sich all diese Mechanismen auch ohne Dongle nutzen, dieser bringt jedoch zwei wichtige Sicherheitsverbesserungen mit sich: Der Zugriff ist nur möglich, wenn das Gerät eingesteckt ist, sodass eine „versehentliche“ Nutzung erschwert wird. Zudem sind die privaten Schlüssel auf einem – vorzugsweise sicheren – Microcontroller gespeichert und können das Gerät nicht mehr verlassen.

Ich selbst bin Ende 2016 auf den YubiKey NEO * umgestiegen. Dieser kann per USB oder NFC genutzt werden. Letzteres ist z.B. für Logins oder Mailverkehr am Handy interessant. Etwas bedenken hatte ich, da USB-Sticks bei mir selten lange überleben und ein YK nicht gerade günstig ist. Das Werbesersprechen „unkaputtbar“, die robust aussehende Form und Empfehlungen aus dem Bekanntenkreis überzeugten jedoch am Ende. Seit dem ist er Stammgast an meinem Schlüsselbund, somit ständiger Begleiter und wird entsprechend viel genutzt.

YubiKey NEO an Schlüsselbund
YubiKey Neo an Schlüsselband

Schnellvorlauf November letzten Jahres, also 2 Jahre nach dem Kauf. Einiges hatte sich getan, aber der YK verrichtete noch anstandslos seine Dienste. Also fast. Von einem Tag auf den Anderen war NFC nicht mehr nutzbar und ich somit auf die Nutzung am PC beschränkt. Kein Beinbruch, Handy-Logins nutze ich eher selten, allerdings auch kein Pluspunkt für mein Vertrauen in die Haltbarkeit. Ich vermutete einen Softwarefehler, alternativ eine Einwirkung durch statische Aufladung. Beides Dinge, die nicht passieren sollten. Auch sonst zeigten sich Schwächen: Aus Sicherheitsgründen ist es nicht möglich die Firmware der Geräte zu aktualisieren. Hierdurch war ich bei PGP auf Keys mit maximal 2048 Bit limitiert. Noch OK, aber auch nicht toll. Einzige Möglichkeit auch in den Genuss neuerer Verfahren zu kommen wäre ein neueres Modell, diese hatten zum damaligen Zeitpunkt jedoch kein NFC und nutzten für PGP nun statt einer Open-Source-Lösung eine Eigenentwicklung des Herstellers, welcher sich nicht einsehen ließ.

Meh. Roughly 2 years after I bought my @yubico #Yubikey Neo it already failed. USB luckily still OK, but NFC completely dead. Really hoped these things would be more durable :<

adlerweb|BitBastelei@adlerweb, 2018-11-21

Da die neueren Modelle für mich keine Option waren wandte ich mich via Twitter an den Hersteller. Unter „unkaputtbar“ verstehe ich etwas Anderes, als 2 Jahre und somit knapp über den regulären Gewährleistungen. Meine Intention: Ich wollte wissen was da schief gelaufen ist, ob es eventuell durch einen Reset o.Ä. behoben werden kann, wie man das verhindern kann und ob bei zukünftigen Modellen dieses Problem umgangen werden kann. Man verwies mich auf das Ticketsystem, antwortete dort jedoch nur mit Textblöcken. Nach meiner Info, dass ich die Diskusion in dem Fall für Sinnlos hielt bot man mir den Austausch gegen einen neuen Neo an. Da auf Grund der alternden PGP-Unterstützung und der unbekannten Fehlerursache das Modell eher auf meiner Abschussliste war lehnte ich dankend ab und nutzte mein Modell per USB weiter.

10 Monate später sprach mich ein Mitglied des lokalen Hackerspace auf den YubiKey an. Ein Arbeitskollege hätte da einen unschönen Ausfall mit seinem Key gehabt. Das ABS-Gehäuse wäre durch den Schlüsselring durchgescheuert und das Gerät hätte den Dienst versagt. Könnte das mit meinem Problem zu tun haben? Sure enough: Auch bei mir ist das Plastik im Bereich des Schlüsselrings schon sehr abgenutzt. Dass das ein technisches Problem verursachen könnte hatte ich gar nicht auf dem Schirm.

Abgenutzter Bereich am Schlüsselring-Loch eines YubiKey NEO

Zudem: ABS? Durchscheuern? Ich hatte vermutet, dass unter der Plastik-Packung noch ein Metallring eingearbeitet wäre, welche das ganze etwas verstärkt. Aber jetzt, wo ich das höre – hm, ja, da reflektiert ja etwas. Ein Blick unter dem Mikroskop verrät recht schnell, was mein NFC getötet hat: die Antenne ist um das Schlüsselring-Loch gelegt und inzwischen durchgescheuert. WTF.

Beschädigte NFC-Antenne an einem YubiKey NEO

Erinnert Ihr euch dran, dass ich ABS sagte? ABS kennt man ja auch von 3D-Druckern, hier ist es üblich mit Aceton das Plastik nach dem Druck anzulösen und zu glätten. Mit entsprechenden Konzentrationen kann man das Plastik aber auch einfach wegschmelzen. Exakt dies hat HexView mit einem YubiKey Neo gemacht, sodass sich das Innenleben in voller Pracht bewundern lässt. Glücklicherweise sieht es so aus, als ob hier wirklich nur die Antennen vorbeilaufen und ein Ausfall eher nicht wahrscheinlich ist. Trotzdem würde ich jedem mit YubiKey NEO raten, an dieser Stelle mit Aceton das Plastik anzulösen und mit mehr ABS oder gar einem Metallring zu verstärken um Ausfälle durch Abnutzung zu vermeiden.

Ich selbst bin etwa an selber Stelle wie vorher: Ich werde den NEO wohl weiter nutzen. Zwar hat man inzwischen den YubiKey 5 NFC * herausgebracht, welcher wieder NFC kann, auch längere Keys für PGP unterstützt und das bei mir ursächliche Schlüsselring-Loch verstärkt hat, allerdings sind mir sowohl die fehlenden Quellen als auch die unschöne Reaktion des Supports doch eher sauer aufgestoßen. Hätte man mir bei meiner Nachfrage geantwortet, dass es vermutlich ein bekanntes Problem wäre und man das in der nächsten Produktversion angehen würde – ich hätte sie vermutlich direkt nach dem Release hier liegen gehabt. Leider mangelt es aber auch an Konkurrenz. Viele Keys wie z.B. Thetis oder Googles TitanKey nutzen ausschließlich U2F. Toll für’s Web, aber meine Hauptanwendung ist eher PGP. TOTP sucht man bei allen vergeblich, ließe sich mit etwas Gebastel aber halbwegs brauchbar in Software nachbilden – freie Standards haben so ihre Vorteile. Etwas besser sieht es bei NitroKey aus, hier ist GPG, TOTP und X.509 verfügbar. Leider ist U2F nur als separates Gerät erhältlich und TOTP mit 15 Einträgen etwas knapp (YubiKey Neo 28, YubiKey 5: 32). Da es sich um einen freien Algorithmus handelt könnte man aber, zumindest bei der TOTP-Limitierung, mit etwas Software nachhelfen. Ein Auge habe ich zudem noch auf Somu. Dieses Crowdfunding-Projekt dreht sich primär um einen U2F und FIDO2-Stick, als Stretch-Goal hat man jedoch GPG und SSH auf dem Plan. Alles soll am Ende Open Source sein, was sich auch eher positiv anhört. Ob sie am Ende liefern können, was sie versprechen, werde ich dann ja sehen.

In eine vorherigen Variante des Artikels wurde angegeben, dass NitroKey kein TOTP könne. Dies ist nicht korrekt, sowohl Nitrokey Pro 2 und Nitrokey Storage 2 können jeweils 15 TOTP-Einträge speichern.

Nginx: allow mit dynamic DNS

Wenn man Webseiten mit Backend betreibt ist es oft eine gute Idee die Verwaltungsbereiche nur von bestimmten IPs oder Netzen zuzulassen. Unter nginx gibt es hierzu den allow-Befehl, mit welchem man IPs und Netze angeben kann. Ich verwende dies z.B. häufig um nur interne IP-Bereiche oder per VPN angebundene Clients zuzulassen. Für ein aktuelles Projekt sollte jedoch auf ein VPN verzichtet werden. Theoretisch kein Problem – externe IP rein und fertig, aber leider ist es auch 2019 noch in Deutschland für viele Anschlussarten üblich bei Trennung und erneutem Verbinden eine andere IP-Adresse zuzuweisen. Für eingehende Verbindungen lässt sich dies mittels dynamischen DNS-Einträgen schnell in den Griff bekommen, jedoch ist das für das hiesige Konstrukt keine Option, da nginx mit solchen Einträgen nicht sinnvoll umgehen kann. Im Netz finden sich einige Helper-Scripte, welche den DNS regelmäßig Prüfen, die Konfiguration anpassen und den Webserver passend umkonfigurieren. Leider sind diese oft eher alt und nur auf das schon seit Jahrzehnten veraltete IPv4 ausgelegt. Als Abhilfe habe ich meine Anforderungen in ein kleines Python-Script gegossen. Für IPv6 wird von der aufgefundenen IP auf ein /48er Netz geschlossen und dieses freigegeben, sollte euer Provider nur ein /56er oder gar /64er rausrücken muss dass ggf. angepasst werden.

Vorbedingung ist, dass nginx die neue Konfiguration findet. Um es einfach zu halten stehen die dynamischen Einträge in einer separaten Textdatei, welche an passender Stelle per include eingebunden wird. Statische Einträge können, sofern vorhanden, an der üblichen Stelle bleiben.

[…]
location /admin {
        allow 192.168.0.0/24;
        include /etc/nginx/dyndns.conf;
        deny all;
        […]

Das eigentliche Script nutzt nach meinem Wissen keine externen Module und sollte somit auf jedem System mit Python 3 laufen. Es werden alle IPv4- und IPv6-Adressen abgerufen. Der angegebene Port (80) ist irrelevant, da nur die IPs genutzt werden. Die Konfiguration wird mittels MD5 auf Änderungen geprüft, liegt eine solche vor wird per Systemd eine reload ausgelöst. Ich habe die Datei mit in den nginx-Konfigurationsordner als /etc/nginx/dyndns.py gepackt – nicht schön, aber passte besser in die bereits vorhandene Struktur und Verwaltung.

#!/usr/bin/python3
import socket
import subprocess
import hashlib
import ipaddress


def md5(fname):
    hash_md5 = hashlib.md5()
    with open(fname, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()



before = md5("/etc/nginx/dyndns.conf")
cfg = open("/etc/nginx/dyndns.conf", "w")
addrs = socket.getaddrinfo("DEIN.DYNAMISCHER.DNS", 80, type=socket.SOCK_STREAM)
for addr in addrs:
    out = ""
    ip = ipaddress.ip_address(addr[4][0])
    if ip.version == 6:
        ip = ipaddress.ip_network(str(addr[4][0]) + "/48", False)
        out = (str(ip.network_address) + "/" + str(ip.prefixlen))
    else:
        out = addr[4][0]
    cfg.write("allow\t\t" + out + ";\t#Dynamic DNS\n")

cfg.close()

after = md5("/etc/nginx/dyndns.conf")

if before != after:
    #DNS has changed
    #print("RELOAD")
    subprocess.call('/usr/bin/systemctl reload nginx', shell=True)

Das Script muss regelmäßig gestartet werden um Änderungen zu prüfen. Wenn der zugehörige DNS-Dienst auf dem selben System läuft kann man möglicherweise auf Hooks zurückgreifen, andernfalls muss es zeitbasiert über Cron oder Timer laufen. Für letzteres mit einem Intervall von 5 Minuten legt man die Datei /etc/systemd/system/nginx-dyndns.timer an und füllt sie wie folgt:

[Unit]
Description=Nginx DNS updater

[Timer]
OnBootSec=0min
OnUnitInactiveSec=5m

[Install]
WantedBy=timers.target

Dazu benötigt man noch einen passenden Service, welcher unter /etc/systemd/system/nginx-dyndns.service definiert wird:

[Unit]
Description=Nginx DNS updater

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/python3 /etc/nginx/dyndns.py

Last but not least wird der Timer eingeschaltet:

systemctl enable --now nginx-dyndns.timer

[ICStation.com] BitBastelei #276 – Door Magnet Relay Module

[ICStation.com] BitBastelei #276 - Door Magnet Relay Module

(231 MB) 00:17:39

2018-03-18 11:00 🛈
Magnetschalter, auch Reedschalter genannt, bieten eine Möglichkeit ohne direkten Kontakt bei Präsenz eines Magneten Dinge zu schalten. Häufig wird dies eingesetzt um zu erkennen ob eine Tür oder ein Fenster geschlossen ist. Auf Grund ihres Aufbaus können die Magnetschalter meist nur wenige Milliampere schalten, zudem möchte man nicht gerade Netzspannung durch dünne Kabel und Glasröhrchen am Türrahmen baumeln haben. Abhilfe soll dieses Modul von ICStation schaffen, welches einen solchen Magnetschalter mit einem Relais kombiniert, welches wesentlich höhere Lasten schalten kann.

Links:

Hinweise:

Das Modul wurde mir von ICStation.com für dieses Video kostenfrei zur Verfügung gestellt.

BitBastelei #247 – PC-Lüfter per Arduino auslesen und steuern

BitBastelei #247 - PC-Lüfter per Arduino auslesen und steuern

(81 MB) 00:19:34

2017-07-16 10:00 🛈
Lüfter sind laut und nervig – aber auch nicht so ganz unwichtig. Praktischerweise kann man PC-Lüfter recht einfach selbst nutzen. Schauen wir mal, welche Arten von Lüftern es so gibt und wie man diese per Arduino auslesen und steuern kann.

Korrekturen & Hinweise

  • 10:58 OZI und Arduino haben über USB den selben GND
  • 13:22 FALLING wäre bei diesem Signal besser
  • 16:25 Laut Spezifikation sind 21-28kHz zulässig

Links zum Thema

Code

unsigned long last1 = 0;
unsigned long last2 = 0;
unsigned long lasts = 0;
unsigned int dur1 = 0;
unsigned int dur2 = 0;
byte tgt1 = 128;
byte tgt2 = 128;

void setup() {
  Serial.begin(115200);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2), tacho1, FALLING);
  attachInterrupt(digitalPinToInterrupt(3), tacho2, FALLING);

  //Timer 1: Prescaler 0
  TCCR1B = TCCR1B & B11111000 | B00000001;

  analogWrite(9, 128);
  analogWrite(10, 128);
}

void getPwm(byte &val) {
  byte tmp = Serial.parseInt();
  if(tmp > 0) val = map(tmp, 0, 100, 0, 255);
}

void loop() {
  unsigned long cm = millis();

  if(Serial.available()) {
    byte tmp = Serial.parseInt();
    switch(tmp) {
      case 1:
        getPwm(tgt1);
        break;
      case 2:
        getPwm(tgt2);
        break;
    }
  }
  
  if(lasts > cm || (lasts + 1000) < cm) {
    digitalWrite(13, !digitalRead(13));
    Serial.print("Delay1: ");
    Serial.print(dur1);
    Serial.println("µs");

    unsigned long freq = 100000000 / dur1;
    Serial.print("Frequenz1: ");
    Serial.print(freq/100);
    Serial.print('.');
    Serial.print(freq%100);
    Serial.println("Hz");

    freq *= 60;
    freq /= 200;
    Serial.print("RPM1: ");
    Serial.println(freq);

    
    Serial.print("Ziel1: ");
    Serial.print(map(tgt1, 0, 255, 0, 100));
    Serial.println('%');

    
    Serial.print("Delay2: ");
    Serial.print(dur2);
    Serial.println("µs");

    freq = 100000000 / dur2;
    Serial.print("Frequenz2: ");
    Serial.print(freq/100);
    Serial.print('.');
    Serial.print(freq%100);
    Serial.println("Hz");

    freq *= 60;
    freq /= 200;
    Serial.print("RPM2: ");
    Serial.println(freq);

    
    Serial.print("Ziel2: ");
    Serial.print(map(tgt2, 0, 255, 0, 100));
    Serial.println('%');
    
    Serial.println("-----");
    lasts = millis();
  }

  analogWrite(9, tgt1);
  analogWrite(10, tgt2);
}

void tacho1() {
  unsigned long cm = micros();
  dur1 = (cm - last1);
  last1 = cm;
}

void tacho2() {
  unsigned long cm = micros();
  dur2 = (cm - last2);
  last2 = cm;
}