Motion Webcam(live stream server) absichern? Fail2ban?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ist es möglich seine Webcam, welche über motion läuft per fail2ban abzusichern?

    Zu den Webcam Logins finde ich schonmal keine Einträge in der auth.log und in der fail2ban Konfiguration gibt es auch keine Voreistellung, soweit ich sehen konnte.

    Die "authentication method" habe ich auf "Basic authentication" gestellt und ei recht langes Passwort vergeben.

    Der Pi ist für mich von außen per dynDNS erreichbar.

    Wenn man sieht wieviele Loginversuche es allein schon über SSH gibt, kommt man schon ins grübeln. :conf:

    Grundlegend soll das System, wenn es fertig ist, so funktionieren das ich bei Bewegung eine Mail mit einem Bild bekomme.

    Wenn mir dann etwas komisch vorkommt möchte ich per Livestream gucken können, ob jemand im Haus unterwegs ist.

    Gegebenenfalls lasse ich bei Bewegung auch noch 10-20min Video erstellen.

    Kann man Motion so einstellen, dass Bilder und Videos nach einer Woche gelöscht werden?

    Hard- und Softwareinfos:

    Spoiler anzeigen

    PI/Raspian:

    Pi 2 Model B
    PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"

    NAME="Raspbian GNU/Linux"

    VERSION_ID="9"

    VERSION="9 (stretch)"

    Linux raspberrypi 4.9.41-v7+ #1023

    Programmversionen:

    fail2ban 0.9.6-2

    motion 4.0-1

  • Motion Webcam(live stream server) absichern? Fail2ban?? Schau mal ob du hier fündig wirst!

  • Binde motion nur an localhost und richte einen ssh-Tunnel ein. Dann brauchst du die motion-Ports gar nicht exponieren.

    Alte Aufnahmen löscht du per find im täglichen cronjob:

    /usr/bin/find /pfad/zu/den/Aufnahmen/ -mtime +8 -delete

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (9. Oktober 2017 um 19:00)

  • Danke für den Input.

    Ich musste mich zu dem Thema erst ein wenig belesen.

    Wenn ich das mit dem SSH Tunnel richtig verstanden habe, müsste ich dazu erst einen Tunnel mit einem Client aufbauen um dann mit einem entsprechend konfigurierten Browser auf die Webcam zugreifen zu können?

    Am Laptop/PC wärs mit Putty und nem Portabel Firefox eine ganz annehmbare Lösung.

    Beim Handy wird es da schon wieder interessanter.

    Gibt es, für den Zugriff übers Handy, Lösungen welche nicht zu komplex sind?

    Ich konnte auf die schnelle nur "SSH-Tunnel" für Android finden, wofür man wieder root braucht.

    Laut Kommentaren macht die App bei vielen Usern Probleme.

    Hauptsächlich ist das Setup ja dafür gedacht, schnell gucken zu können, wenn ich unterwegs bin.

    Daher nochmal die Frage, ob es eine Möglichkeit über Fail2ban oder dergleichen gibt?
    Generell würde ich gern eine Lösung haben, welche auf dem Pi konfiguriert ist, beim Zugriff aber wenig gefrickel beinhaltet.

    Zum Löschen der Files hatte ich gehofft, dass es dafür eine Einstellung bei Motion gibt, welche ich übersehen habe. :)

    Über Cronjob sollte das auch nicht die Hürde sein. (habe ich bisher tatsächlich noch nicht benutzt)

  • Hauptsächlich ist das Setup ja dafür gedacht, schnell gucken zu können, wenn ich unterwegs bin.

    Daher nochmal die Frage, ob es eine Möglichkeit über Fail2ban oder dergleichen gibt?
    Generell würde ich gern eine Lösung haben, welche auf dem Pi konfiguriert ist, beim Zugriff aber wenig gefrickel beinhaltet.

    Du möchtest den Zugriff auf den Streaming-Server absichern? Natürlich geht das mit Fail2Ban.

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Du möchtest den Zugriff auf den Streaming-Server absichern? Natürlich geht das mit Fail2Ban.

    Das wär super.

    Kannst du mir beschreiben, wie?

    Ich glaube Fail2ban wertet die Daten der "auth.log" aus.

    Dort finde ich aber keine Logs vom Motion Streamin-Server.

    Auch in der "jail.local" von Fail2ban finde ich keine default Settings zu Motion.

  • Ich glaube Fail2ban wertet die Daten der "auth.log" aus.

    Auch in der "jail.local" von Fail2ban finde ich keine default Settings zu Motion.

    Hi,

    ich kenne mich mit Motion nicht wirklich aus. Fail2Ban bietet halt ein gutes Grundgerüst für alle gängigen Serverdienste. Custom-Dienste kannst du unter /etc/fail2ban/filter.d/ ablegen. Diese werden dann von Fail2Ban berücksichtigt. Dort musst du eben die Applikation und den Port eintragen etc.

    Vorallem, was möchtest du denn absichern? "Brute Force"-Attacken? Dann eignet sich Fail2Ban. Ich persönlich würde vermutlich einen Webserver aufsetzen über welchen ich den Zugriffsschutz auf das Webfrontend regeln kann (z.B. htpasswd) - dann könntest du auch super die nginx-Kategorie von Fail2Ban nutzen.

    Mfg, sls

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Hi,

    ich kenne mich mit Motion nicht wirklich aus. Fail2Ban bietet halt ein gutes Grundgerüst für alle gängigen Serverdienste. Custom-Dienste kannst du unter /etc/fail2ban/filter.d/ ablegen. Diese werden dann von Fail2Ban berücksichtigt. Dort musst du eben die Applikation und den Port eintragen etc.

    Vorallem, was möchtest du denn absichern? "Brute Force"-Attacken? Dann eignet sich Fail2Ban. Ich persönlich würde vermutlich einen Webserver aufsetzen über welchen ich den Zugriffsschutz auf das Webfrontend regeln kann (z.B. htpasswd) - dann könntest du auch super die nginx-Kategorie von Fail2Ban nutzen.

    Mfg, sls

    Danke für die Tipps.

    Ich möchte mich eigentlich nur gegen Brute Force absichern. (nach 3 Versuchen Permaban)

    Zum erstellen einer eigenen Konfig bei Fail2ban fehlt mir leider das Hintergrundwissen.

    Ich gucke mir mal die anderen Konfigs an.

    Vielleicht kann ich da etwas ableiten.

    Die Einrichtung eines extra Webervers schreckt mich ein wenig ab.

    Ich steige da technisch aber auch nicht voll durch, muss ich gestehen.

    (z.B. welche Vorteile mir die Nutzung eines extra Webservers bring)

    Es kommt mir so vor, als würde ich damit einen extra Schritt gehen um den Live Stream Server von Motion abzusichern.

    (wenn dies denn auch direkt über Fail2Ban möglich ist, wie du meintest.)

    Vielleicht mache ich mir auch zu viele Gedanken. :)

    (die meiste Zeit sieht man einen leeren Flur und eine Haustür)

  • Hi,

    das ist einfacher als es klingt. Was du tun musst ist:

    1. Nginx / Apache als Webserver installieren

    2. In der Konfiguration vom Webserver eintragen, dass der Webserver an den Motion-Streaming-Server weiterleiten soll.

    3. Den Zugriff auf den Streaming-Server durch htpasswd absichern (es erscheint dann eine Abfrage mit Benutzername und Passwort, falls Motion solch einen Mechanismus nicht schon von Haus aus bietet)

    4. Fail2ban: die jail.conf konfigurieren. Für Apache existieren hier bereits Absicherungen, verwendest du einen anderen Port kannst du diesen dort angeben.

    Ich würde an deiner Stelle jeden der o.g. Punkte Schritt für Schritt abarbeiten, dafür gibt es Tonnen an Material im Netz. Wenn du trotzdem nicht weiterkommst, stellst du deine Frage hier und ich bin mir sehr sicher, dass du das spätestens bis zum Wochenende umgesetzt hast :)

    Der Vorteil: völlige Kontrolle über deinen Streaming-Server. Außerdem weißt du dann, wie man grundsätzlich Netzwerkdienste gegen unbefugten Zugriff schützen kann und kannst das bspw. für SSH ebenso umsetzen usw. usf.

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Danke für die ausführliche Ausführung.

    SSH habe ich bereits per fail2ban abgesichert.

    Eine abfrage von Benutzername und Passwort bietet motion schon von Haus aus.

    Ich hatte nun die Hoffnung, dass mir jemand sagen kann, wie man diesen Login mit fail2ban absichert.

    (Ich konnte dazu bisher noch keine Logdatei finden, die man für fail2ban braucht, vermute ich zumindest)

    Da es schon eine Abfrage von Zugangsdaten gibt, wollte ich mit einem Webserver nicht noch weitere Software auf den Pi bringen.

  • Ich hatte nun die Hoffnung, dass mir jemand sagen kann, wie man diesen Login mit fail2ban absichert.

    (Ich konnte dazu bisher noch keine Logdatei finden, die man für fail2ban braucht, vermute ich zumindest)

    Verstehe, dass du nicht zusätzlich einen Webserver betreibst, auch wenn Nginx im Vergleich zu Apache deutlich schmalbrüstiger und dadurch ressourcenschonender für den Pi wäre.

    Wenn du Custom-Filter in Fail2Ban anlegen musst du folgendes beachten:

    Im Verzeichnis /etc/fail2ban/filter.d/ werden alle custom-filter-Dateien abgelegt. Die einzige Schwierigkeit hier ist im Grunde genommen eine regex für deinen Webserver zu erstellen. Du musst dir das so vorstellen, dass jeder Login-Versuch protokolliert wird. Fail2Ban sucht mittels regulären Ausdruck in diesen Log-Dateien dann nach Meldungen (z.B. "Warning", "ERROR" uvm) und zählt dann diese Meldungen. z.B. wird ein Fehlgeschlagender SSH-Login mit Uhrzeit, Quell-IP-Adresse und Fehlertyp protokolliert, fail2ban wertet diese Werte aus und erkennt dann z.B. "Host-XY hat innerhalb von 5 Minuten 10 x einen Fehl-login verursacht und wird nun gebannt".

    Falls du dir eine Regex zu traust, kannst du solch einen Custom-Filter bauen. Falls du Hilfe brauchst, poste doch einfach mal eine Log-Zeile wenn du dich an deinem Motion-Stream-Server falsch angemeldet hast.

    Wenn dir o.g. Prozedere deutlich zu komplex ist, solltest du nochmal über Nginx nachdenken. Diese zwei Optionen hast du im Endeffekt mit Fail2Ban, eine weitere fällt mir nicht wirklich ein.

    Mfg, sls

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Falls du dir eine Regex zu traust, kannst du solch einen Custom-Filter bauen. Falls du Hilfe brauchst, poste doch einfach mal eine Log-Zeile wenn du dich an deinem Motion-Stream-Server falsch angemeldet hast.

    Da liegt neben dem erstellen eines Custom Filters mein Problem.

    Ich kann keine Logdatei zu den Verbindungsversuchen zum Streaming Server finden.

    Weder in /var/log/auth.log noch in /var/log/motion/motion.log

    Auch bei google wurde ich dazu bisher nicht fündig.

    Ich habe dazu jetzt einfach mal ganz dreist ein Issue auf Github erstellt. :)

    Motion issue 525

  • Sieht so aus, als müsstest du Motion samt der webhttp.c Source-Datei kompilieren. Sehe aktuell keine Verwaltung durch den Paket-Manager.

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Ich kann keine Logdatei zu den Verbindungsversuchen zum Streaming Server finden.


    Weder in /var/log/auth.log noch in /var/log/motion/motion.log

    Hast du mal versucht den motion log_level hochzusetzen (9)?

    Evtl. wird das motion.log dann informativer, gesprächiger wird's auf jeden Fall.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Sieht so aus, als müsstest du Motion samt der webhttp.c Source-Datei kompilieren. Sehe aktuell keine Verwaltung durch den Paket-Manager.

    Ja, ich habe auch gesehen, dass der Part fürs loggen der IP schon im Code aber in keiner fertigen Version zu finden ist.

    Ich habe Mr-Dave, vom Motion Projekt, per Mail gefragt ob er schon absehen kann, wann es eine neue Motion Version gibt, welche dieses Feature enthält.

    Das selbst Kompilieren habe ich auch schon in Erwägung gezogen aber noch nie gemacht.

    Müsste ich mich als erst mit beschäftigen.

    Hast du mal versucht den motion log_level hochzusetzen (9)?

    Evtl. wird das motion.log dann informativer, gesprächiger wird's auf jeden Fall.

    Das habe ich tatsächlich schon priobiert und danach ein paar mal versucht mich, mit falschen Daten, einzuloggen und danach das logfile durchsucht.

    Auf meinen issue bei Github wurde darauf verwiesen, dass ein entsprechendes Feature bereits in den Code aufgenommen wurde.

    Diese Version wurde allerdings noch nicht Kompiliert. (siehe Absatz hier drüber)

    BTW: Weiß zufällig jemand, ob man das Motion Logfile auf 7 Tage begranzen kann? (In der config habe ich dazu nichts finden können.)

  • Das selbst Kompilieren habe ich auch schon in Erwägung gezogen aber noch nie gemacht.

    Müsste ich mich als erst mit beschäftigen.

    Das steht hier unter dem Punkt `Abbreviatd Building Guide` sehr gut beschrieben. Die betroffene c-Datei wurde vor 4 Tagen aktualisiert mit dem für dich relevanten Merge. Ich würde sagen: Attacke.

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Tip: nutze statt make install   das Tool checkinstall .

    Es baut dir ein .deb und installiert es. Das macht spätere Updates/removes etc. einfacher, als bei einem am Packagemanagement vorbei installierten Programm.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Sieht garnich so unkompliziert aus. :)

    Es sollte reichen, wenn ich mir Debian in einer VM Installiere um Motion dort zu kompilieren oder?

    Ich hab da schon wieder Fragezeichen über dem Kopf, wenn es um die optionalen Pakte geht.

    Da muss ich erstmal gucken, wofür welches Paket da ist.

    Oder ich nehme im Zweifel einfach alle. (wobei ich ein Fan davon bin es übersichtlich zu halten)

    Wenn das dann alles funktionieren sollte, muss "nur" noch ein Custom Filter in Fail2ban her.

    Das kann sich noch ziehen bei mir. ;)

    Man kommt da wirklich vom Hundertsten ins Tausenste.

  • Ich hab da schon wieder Fragezeichen über dem Kopf, wenn es um die optionalen Pakte geht.

    Man kommt da wirklich vom Hundertsten ins Tausenste.

    In einer VM? Möchtest du zu Testzwecken kompilieren, oder was ist der Sinn dieser Übung?

    Die Abhängikeiten (Pakete) musst du logischerweise alle installieren, die werden ja nicht zum Spaß mitinstalliert.

    Willkommen in der Welt der IT, aus einem "mal eben schnell" wird ein riesen Akt. Meine Empfehlung für Nginx war nicht aus einer Laune heraus ;)

    “Don’t comment bad code - rewrite it.”

    Brian Kernighan

  • Dann habe ich mir das Kompilieren falsch vorgestellt.

    Ich dachte, ich erstelle dabei ein komplettes Paketfile, welches ich dann auch auf anderen Systemen installieren kann.

    Ich wollte dann nicht auf meinem laufenden System herumfrickeln.

    Je mehr ich mir das mit dem Kompilieren angucke, je eher rückt dein Vorschlag mit Nginx in mein Blickfeld. :)

    Die alternative wäre einfach auf ein neues Release von Motion zu warten. (vielleicht antwortet Mr. Dave ja auch noch auf meine Mail^^)

    Dann würde "nur" noch der custom fail2ban Filter offen sein.

  • Es ist ein Unterschied, ob du den Quellcode kompilierst, oder ein Paket baust und installierst.

    Der Sinn des Quellcodes ist ja, das er nach dem Kompilieren auf deinem System laufen soll.

    Wenn du ein Paket baust, muss das ja nicht auf allen Systemen laufen, dafür werden z.B. die Abhängigkeiten überprüft.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!