Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Moderator: Co-Administratoren

Benutzeravatar
Henke
Beiträge: 1526
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 306 Mal

Re: Zugrifffe auf das Webinterfache einer CCU/RM loggen/überwachen

Beitrag von Henke » 05.11.2023, 15:43

">> /tmp/access.txt" ersetzen durch ein tcl Script.
Da die Datei als Log beschreiben und gefiltert direkt die Systemvariable setzen.
Damit fällt der zyklischer Aufruf weg.

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Zugrifffe auf das Webinterfache einer CCU/RM loggen/überwachen

Beitrag von Xel66 » 05.11.2023, 19:36

Henke hat geschrieben:
05.11.2023, 15:43
">> /tmp/access.txt" ersetzen durch ein tcl Script.
Gute Idee! Danke erst mal. Ich denke mal, das muss ich irgendwie pipen. Oder parallel mit tee in die Datei schreiben und ans Script senden. Ich hirne das mal.

EDIT: So habe die Ausgabe schon mal testweise mit tee gesplittet und habe jetzt eine parallele Ausgabe in die Datei und per less auf der Konsole. Das less möchte ich dann mit dem Script ersetzen. Im Moment sieht es als Konsolenbefehl so aus:

Code: Alles auswählen

tail -f /var/log/lighttpd-access.log  | awk '!/^192.168.178.3/ && !/^192.168.178.252/ && !/^127.0.0.1/ { print $0 }' | tee -a /tmp/access.txt | less
Soweit alles gut. Das TCL-Script für das Schreiben der Systemvariable macht mir noch Probleme. Der String wurde auch schon aus $argv und dem Rest des Aufrufes korrekt zusammengebaut. Es schreibt aber nicht in die Sytemvariable. Bin mir eigentlich sicher, dass meine Syntax korrekt ist.
EDIT2: Das war ein PEBCAK. Ich habe nun ein Script, welches erst mal das tut, was es soll. Es schreibt einen übergebenen Parameter in eine Systemvariable. Die Scriptidee stammt aus dem Forum und dies ist der aktuelle Bearbeitungsstand ohne jegliches Fehlerhandling. Da baue ich dann noch was ein.

Code: Alles auswählen

#!/usr/bin/env tclsh
load tclrega.so
# tclrega.so available. Get Metadata from ReGaHss
        set isecmd ""
        set state $argv
        append isecmd "var x = dom.GetObject('Watchdog-Access');"
        append isecmd "x.State('"
        append isecmd $state
        append isecmd "');"
        rega_script $isecmd
	puts $isecmd
Was ich jetzt nicht hinbekomme ist, die Bildschirmausgabe, die im obigen String in eine Datei geschrieben wird, in einen Aufruf des Scripts (chown ist erledigt) zu pipen. Ich finde im Netz viele Wege, aus TCL-Scripts Daten zu übergeben, aber eben keinen das was sonst auf die Konsole geschrieben würde als Argument in das Script zu pipen. Hat da jemand eine Idee? Derzeit extrahiere ich mit awk zyklisch das erste Datenfeld aus der access.txt (das ist die aufrufende IP) per Homematic-Script in eine Systemvariable.

Was ich letztendlich eigentlich möchte, orientiert sich an obigen Befehl. Tail übergibt die letzte Zeile an awk (funktioniert) und awk filtert die Zeilen mit bekannten Adressen raus (funktionert auch noch) diese Ausgabe schreibe ich derzeit nach access.txt. An dieser Stelle hätte ich eben gern das Script, welches die letzte Zeile in eine Sysvar schreibt (bzw. nur die IP). Also letztendich soll der vorgelagerte Filterweg das Script mit seiner Ausgabe triggern, so wie sonst der Schreibvorgang mit >> in eine Datei getriggert wird.

Andere Idee: Ich setze noch mal eine zweite tail/awk-Instanz auf den Output in der access.txt an. Aber auch dieser Output müsste ja wieder das Script triggern. Ich drehe mich im Kreis. Hmmm... EDIT: habe xargs gefunden. Mal schauen, ob das auf der CCU existiert. Sitze derzeit nicht davor. To be continued.

Gruß Xel66
Zuletzt geändert von Xel66 am 08.11.2023, 04:22, insgesamt 5-mal geändert.
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Zugrifffe auf das Webinterfache einer CCU/RM loggen/überwachen

Beitrag von Xel66 » 08.11.2023, 02:44

Zusatzfrage: Kennt sich jemand mit dem Logrotate aus? Wenn ich die /etc/logrotate.d/syslogd.conf richtig verstehe, werden alle *.log-Dateien bei einer Größe größer 2MB rotiert und eine neue .log angelegt. Heißt für mich, wenn ich meine "access.txt" als "access.log" in /var/log ablegen würde, würde der Job diese Datei auch mit behandeln. Somit hätte ich noch ein Langzeitarchiv (natürlich nur bis zum Löschen) für die unbekannten Zugriffe von außerhalb meines Netzwerkes. So viel fällt da ja nicht an (gelegentliche Fernzugriffe via VPN, cloudmatic und die Alexa-Steuerung). Das sollte also das System nicht zumüllen. Man kann ja zyklisch aufräumen. Kann meine Annahme jemand bestätigen?

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
jmaus
Beiträge: 9868
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1883 Mal
Kontaktdaten:

Re: Zugrifffe auf das Webinterfache einer CCU/RM loggen/überwachen

Beitrag von jmaus » 08.11.2023, 08:04

Xel66 hat geschrieben:
08.11.2023, 02:44
Zusatzfrage: Kennt sich jemand mit dem Logrotate aus? Wenn ich die /etc/logrotate.d/syslogd.conf richtig verstehe, werden alle *.log-Dateien bei einer Größe größer 2MB rotiert und eine neue .log angelegt.
[...]
Das sollte also das System nicht zumüllen. Man kann ja zyklisch aufräumen. Kann meine Annahme jemand bestätigen?
Ruf einfach

Code: Alles auswählen

/usr/sbin/logrotate -v /etc/logrotate.conf
Auf der Kommandozeile auf um zu sehen was passiert.

Also ja, es werden alle *.log Dateien unter /var/log und unterverzeichnissen darunter mit in das logrotate einbezogen. Im übrigen wird es in Zukunft bei RaspberryMatic auch möglich sein eigene logrotate config files unter /usr/local/etc/logrotate.d abzulegen, sodass man dann eigene regeln zusätzlich zu den in der syslogd.conf definieren kann die dann auch teil des Backups werden.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Beitrag von Xel66 » 09.11.2023, 16:57

jmaus hat geschrieben:
08.11.2023, 08:04
Ruf einfach

Code: Alles auswählen

/usr/sbin/logrotate -v /etc/logrotate.conf
Auf der Kommandozeile auf um zu sehen was passiert.
Getan: Für mich sieht das funktional aus. Eine neue Logdatei wurde erkannt und ein "new state" angelegt. Sollte dann demnächst mit dabei sein. Die relevante Ausgabe:

Code: Alles auswählen

considering log /var/log/alien-access.log
Creating new state
  Now: 2023-11-09 16:46
  Last rotated at 2023-11-09 16:00
  log does not need rotating (log size is below the 'size' threshold)
Danke nochmals. Ich denke mal, für eigene Logrotates fehlt der breite Anwenderkreis. Aber lieber haben als brauchen. Ich wurstle mich auch gerade mit meinem Projekt durch und bin in der Erprobungsphase meiner Loglösung. Bisher bin ich zufrieden. Die Idee von Henke mit dem Senden an ein Script war nicht schlecht. Funktioniert. Danke. Stelle das dann später mal als Projekt vor. Ich bin auch der Meinung, dass damit Leute mit einem Problem (z.B. eingerichteter Portweiterleitung oder fremde User im WLAN, weil die Kids den Key an die Kumpels gegeben haben) ganz schnell aufgeschreckt wären, wenn sie ständig Meldungen von fremden Zugriffen (z.B. Bots oder eben die Kids) erhielten. Von den Scriptkiddies will ich noch gar nicht reden, aber die sind meine eigentliche Zielgruppe.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

MichaelN
Beiträge: 9685
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Beitrag von MichaelN » 09.11.2023, 17:01

In der RaspberryMatic wird ja jetzt schon vor offenen Ports gewarnt und trotzdem wird das regelmäßig ignoriert. Das ist dann eben nur eine weitere Meldung die ignoriert wird.

Logs zur Beweissicherung wären im Nachhinein zwar auch hilfreich, aber wenn die CCU die schreiben kann, dann kann man sie von dort auch löschen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Beitrag von Xel66 » 09.11.2023, 17:18

MichaelN hat geschrieben:
09.11.2023, 17:01
Logs zur Beweissicherung wären im Nachhinein zwar auch hilfreich, aber wenn die CCU die schreiben kann, dann kann man sie von dort auch löschen.
Soweit richtig. Ein Neustart und sie wären ja auch weg. Darum habe ich mir auch Gedanken gemacht. Ziel ist es, dass bei einem Zugriff (schon beim ersten!) eine Warnung (Telegram mit IP) rausgeht und relevante Logs per Mail an einen separaten Account (nicht der Versand-Account auf der CCU) geschickt wird. Soweit funktioniert das auch alles. Dieses Verfahren (Log-Versand) praktiziere ich auch schon eine Weile z.B. bei staken Anstiegen des Duty Cycles.

Auf der Startseite steht derzeit immer die letzte "Alien"-IP und der Status der Überwachung (zyklisch per pgrep -x ausgelesen) in zwei Systemvariablen. Bei Änderung der Watchdog-Systemvariable wird sofort ein Programm getriggert, welches die IP umgehend versehen mit einer Warnung per Telegram versendet. Zeitverzögert geht das alien-access.log per Mail raus, in dem ich hoffentlich das Angriffsmuster sehe. Ich filtere derzeit ein paar lokale IPs sowie meinen Zugriff per meine-homematic raus. Der Rest wären eben unautorisierte Zugriffe (zumindest auf die WebUI).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

joerg_rw
Beiträge: 30
Registriert: 09.02.2015, 13:20
Hat sich bedankt: 42 Mal
Danksagung erhalten: 2 Mal

Re: Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Beitrag von joerg_rw » 05.12.2023, 12:57

MichaelN hat geschrieben:
09.11.2023, 17:01
Logs zur Beweissicherung wären im Nachhinein zwar auch hilfreich, aber wenn die CCU die schreiben kann, dann kann man sie von dort auch löschen.

Ausser man macht remote logging (Einstellungen ->Sstemsteuerung ->ZentralenWartung "Fehlerprotokoll: Syslog-Server Adresse") :) Das hat zwar seine eigenen Schwaechen, vor allem auf dem logger Rechner, weil dort im Standardfall nicht geprueft wird wer da loggt und ob der das darf, aber... LOESCHEN geht nicht so ohne weiteres.

jOERG


Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Zugrifffe auf das Webinterface einer CCU/RM loggen/überwachen

Beitrag von Xel66 » 05.12.2023, 18:58

Nö.

Antworten

Zurück zu „Sonstige Steuerungen und Visualisierungen“