View previous topic :: View next topic |
Author |
Message |
forrestfunk81 Guru
Joined: 07 Feb 2006 Posts: 565 Location: münchen.de
|
Posted: Fri Feb 08, 2019 1:45 pm Post subject: Login Monitoring |
|
|
Hallo zusammen,
ich würde gerne alle Logins auf meinen Systemen monitoren. Das Ergebnis sollte ein hübsches Grafana Dashboard sein, welches mir in (nahezu) Echtzeit anzeigt, wenn auf einem meiner Gentoo Systeme ein erfolgreicher Login passiert. Gegebenenfalls würde ich dafür noch Alerts konfigurieren. Die Daten dazu würde ich in einer InfluxDB speichern.
Dazu brauche ich eine zuverlässige Stelle, um die Login Daten abzugreifen und per curl an Influx zu senden. Spontan sind mir zwei Wege eingefallen:
1) Syslog
Ich könnte syslog-ng entsprechend konfigurieren, dass es über einen 'facility(auth, authpriv)' Filter per destination command oder destination socket ein Skript/Programm aufruft, welches die Logzeile parsed und anschließend versendet.
Das wäre asynchron und würde den Login nicht behindern oder verlangsamen, aber andererseits bin ich dann von einem laufenden und korrekt konfiguriertem Log Daemon abhängig.
2) Login Shells
Soweit ich weiß rufen alle (interaktiven und nicht interaktiven) Login Shells /etc/profile auf. Ich könnte mein Skript dort starten und die Umgebungsvariablen auswerten.
Wenn mein Skript als Background Job (&) läuft, sollte es den Login Prozess nicht wesentlich verlangsamen.
Ich bin mir nicht sicher, ob es nicht doch Logins gibt, welche nicht durch /etc/profile gehen.
Was meint ihr, ist der richtige Ort um zuverlässig auf jeden Login zu reagieren? (möglichst ohne C Programmierung
PS: Auf allen betroffenen Systemen bin ich der einzige Nutzer, von daher ist das Vorhaben datenschutztechnisch unbedenklich. _________________ # cd /pub/
# more beer |
|
Back to top |
|
|
forrestfunk81 Guru
Joined: 07 Feb 2006 Posts: 565 Location: münchen.de
|
Posted: Mon Feb 18, 2019 2:58 pm Post subject: |
|
|
Ein kleines Update zu meinem Vorhaben.
Zuerst hatte ich ein simples Skript in /etc/profile.d/ angelegt, welches bei jeder Login Shell ausgeführt wird und in die Influx schreibt. Nicht-Login-Shells werden damit aber nicht gemonitored (also z.B. scp oder ssh mit remote command). Deshalb verwende ich jetzt eine /etc/ssh/sshrc mit folgendem Inhalt:
Code: |
nohup curl -i -XPOST 'http://my_influx_host:8086/write?db=my_database_name' --data-binary "auth,host=$HOSTNAME,user=$USER ssh_login=1" > /dev/null 2>&1 &
|
Das wird bei jedem SSH Login ausgeführt und erfasst sowohl Login Shells als auch nicht Login Shells wie scp. _________________ # cd /pub/
# more beer |
|
Back to top |
|
|
tazinblack Veteran
Joined: 23 Jan 2005 Posts: 1146 Location: Baden / Germany
|
Posted: Sun Mar 31, 2019 8:54 am Post subject: |
|
|
hast Du "last" schon entdeckt?
Gib einfach mal in einer konsole den Befehl last ein.
Ansonsten hilft auch "man last" _________________ Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes |
|
Back to top |
|
|
forrestfunk81 Guru
Joined: 07 Feb 2006 Posts: 565 Location: münchen.de
|
Posted: Thu Apr 11, 2019 12:58 pm Post subject: |
|
|
Hi tazinblack,
vielen Dank für den Hinweis. Den Befehl kannte ich noch nicht. _________________ # cd /pub/
# more beer |
|
Back to top |
|
|
|