Open Source im professionellen Einsatz
Linux-Magazin 05/2017
© jules_kitano, 123RF

© jules_kitano, 123RF

Ein Python-Skript warnt bei fehlgeschlagenen Login-Versuchen

Türsteher

Eine Reihe von Sensoren und Kameras warnt Hauswart Mike Schilli mit Kurznachrichten, sollte jemand an seiner Wohnungstür herumfummeln. Dieses Sicherheitsprinzip hat er nun auch auf die SSH-Tür seines Linux-Rechners angewandt.

494

Alternativ zur schon einmal in [2] vorgestellten Lösung Prowl zum Verschicken von Textnachrichten präsentiert sich in der kunterbunten Welt der Telefon-Apps ein weiterer Anbieter namens Pushover, der gegen eine Einmalzahlung von 5 US-Dollar lebenslang über ein Web-API bis zu 7500 Nachrichten im Monat an beliebig viele Smartphone- und sogar Desktop-Clients verteilt.

Holprige Browserlösung

Auf I-OS oder Android ist es die Pushover-App, in die sich der User einloggt und die dann eingehende Nachrichten als Push Notifications (Abbildung 2). anzeigt, auch wenn das Telefon per Lockscreen abgesperrt ist. Zudem bietet Pushover native Desktop-Clients für den Mac und eine etwas hanebüchene Browserlösung für den Linux-Desktop.

Abbildung 2: Das Mobiltelefon mit installierter Pushover-App zeigt einen Login-Versuch auf dem SSH-Server des überwachten Linux-Rechners an.

Dort ruft der User entweder in Chrome oder Firefox die Webseite http://client.pushover.net auf, loggt sich dort mit seinem Pushover-Account ein, erlaubt dem Browser anschließend Desktop-Notifications auf dem hauseigenen Desktop – und fertig ist der Desktop-Client. Das klappt nur, solange der Browser offen ist und ein Tab auf die Webseite von Pushover zeigt (Abbildung 3). Da dies bei mir daheim dank Pinned Tabs bereits für Gmail und Evernote der Fall ist, spielt ein Tab mehr auch keine Rolle.

Abbildung 3: Auf dem Linux-Desktop sorgt ein auf den Pushover-Service eingenordeter Browser-Tab für Popups.

Fährte aufnehmen

Den neuesten Einträgen in einer Logdatei wie »auth.log« in »/var/logs« zu folgen ist gar keine so einfache Sache. Selbst eine Unix-Funktion wie »tail -f« zu implementieren (Abbildung 1), die jeder Admin wohl mehrmals täglich nutzt, erfordert Kenntnis der Systemfunktion »seek()« , mit der ein Filehandle bis ans Ende einer Datei fahren kann.

Abbildung 1: Ein tail -f auf die Datei /var/log/auth.log zeigt erfolgreiche und fehlgeschlagene Login-Versuche am ssh-Daemon an.

Liefert dann ein »read()« keine Daten mehr zurück, ist dies das Ende der Datei. Kommen aber zusätzliche Zeilen zum Vorschein, hat das System diese offensichtlich zwischenzeitlich angehängt und »tail -f« gibt sie aus. Selbst wenn der Admin die Datei umbenennt, bleibt mit dem Daten konsumierenden Prozess und seinem noch offenen Filehandle alles beim Alten, das lesende Programm bekommt dergleichen gar nicht mit.

Aber selbst »tail -f« kommt aus dem Takt, falls der distributionseigene Logdatei-Rotierer einsetzt, die alte Datei wegschiebt, komprimiert und eine frische, leere an ihre Stelle setzt. In diesem Fall wäre es fatal, mit »read()« weiterhin auf dem offenen Filehandle herumzuorgeln, denn frische Daten kommen zweifellos nun in einer völlig anderen Datei an.

Dies bekommt der Log-Jäger mit, indem der in regelmäßigen Abständen prüft, ob die Datei unter dem angegebenen Namen noch immer auf den gleichen »i-node« im Dateisystem horcht. Zeigt »stat()« , dass letzterer sich geändert hat, muss der Log-Analysator das offene Filehandle schließen und ein neues auf die geänderte Datei (mit dem gleichen ursprünglichen Namen) öffnen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Tooltipps

    Im Kurztest: Colum's Cut 2.0, Findwin 0.11, Simpleproxy 3.5, Screenkey 0.9, PHP Server Monitor 3.1.1, Sshcommand 0.4.0

  • Täglich auf Zack

    Wer hat schon Zeit, täglich seine Logdateien zu kontrollieren? Das im Folgenden vorgestellte Skript fasst alle aktuellen Veränderungen in einem Report zusammen und verschickt sie einmal täglich per E-Mail.

  • Screencast zum Perl-Snapshot 12/2014

    Diesmal geht es um asynchrone Programmflüsse und ihr Management in Perl.

  • Perl-Snapshot

    Mike Schilli hat seine Trickkiste geöffnet und gibt im Video Tipps für Programmierer. 

  • Snapshot

    Auf Amazons Lambda-Service laufen selbst geschriebene Python-Skripte in Containerumgebungen – demonstriert im Snapshot am Beispiel eines AI-Programms zur Bewegungsanalyse in Überwachungsvideos.

comments powered by Disqus

Ausgabe 06/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.