PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mail nach ssh login



apofis11
26.09.02, 20:42
hat jemand eine ahnung oder einen tip wie ich es mache per script eine mail zuversenden wenn sich jemand per ssh am server anmeldet oder versucht anzumelden der nicht aus dem 192.168.xxx.xxx netzwerk kommt .gibt es da was fertiges war glaube schon auf dem richtigen weg mit meinem script habe alle 20 sekunden die logdatei ausgelesen und gefilter aber die filterregeln sind der hammer.desshalb würd mich intressieren ob es da schon eine lösung gibt.

slime
27.09.02, 08:39
ja, das ist prinzipiell eine möglichkeit, am besten du machstd dir mit dem syslog eine extra datei wo nur dir loginsachen drinstehen.
dann pumpe diese datei an ein perl-script, lese die ip mit einer regexp raus und kuck dann ob die ersten 2 byte 192.168 sind. so solltest du das gelöst bekommen. ein passende regexp wäre z.B.
/(\d{1-3})(\.)(\d{1-3})(\.)(\d{1-3})(\.)(\d{1-3})/
dann hast du in $1,$3,$5,$7 die bytes drinstehen

apofis11
01.10.02, 11:00
mit den logdatei auslesen war eigentlich keine schlechte idee aber es verursacht zu viel cpu last wenn das alle 10 sekunden losrattert gibts eine ander lösung die gleich eine mail verschickt wenn sich jeman von aussen nicht (192.168)anmeldet

Discipulus
01.10.02, 12:00
Ich denke du musst dir einen Script schreiben. Wenn du diesen in /etc/profile startest, wird der Script jedesmal ausgefürht, wenn sich jemand einloggt. In diesem Script kannst du dann die verschiedenen Dinge testen, wie: hat der User sich per ssh angemeldet von welcher IP kommt der User

Wie das genau geht weiss ich jetzt gerade nicht! Aber vielleicht hilft es dir.

apofis11
01.10.02, 12:24
aber dann werden nur mails versendet wenn sich root erfolgreich angemeldet hat
die fehlgeschlagenden versuche geben keine mail aus

Jasper
01.10.02, 12:54
Original geschrieben von apofis11
mit den logdatei auslesen war eigentlich keine schlechte idee aber es verursacht zu viel cpu last wenn das alle 10 sekunden losrattert gibts eine ander lösung die gleich eine mail verschickt wenn sich jeman von aussen nicht (192.168)anmeldet

als starter:

tail -f <logfile> | while read; do [ "${REPLY}" == "<logintext>" ] && <skript> "${REPLY}"; done

das in <> musst du natürlich anpassen. ist eine realtime-überwachung für arme :)
und skript muss dann noch die zeile aus dem log (ip, etc) auswerten. das kannst du natürlich auch direkt in der while-do machen.

-j

Discipulus
01.10.02, 13:02
Original geschrieben von apofis11
aber dann werden nur mails versendet wenn sich root erfolgreich angemeldet hat
die fehlgeschlagenden versuche geben keine mail aus

Das File /etc/profile wird beim Anmelden jedes Benutzers ausgeführt. Aber die fehlgeschlagenen Versuche siehst du damit nicht, da hast du recht.

apofis11
01.10.02, 13:48
Bitte ein Beispiel für -->
das kannst du natürlich auch direkt in der while-do machen.

Oct 1 16:38:04 typo3 sshd[31320]: Accepted password for ROOT from ::ffff:192.16
8.1.106 port 1133 ssh2

Jasper
01.10.02, 14:13
Original geschrieben von apofis11
Bitte ein Beispiel für -->
das kannst du natürlich auch direkt in der while-do machen.

Oct 1 16:38:04 typo3 sshd[31320]: Accepted password for ROOT from ::ffff:192.16
8.1.106 port 1133 ssh2

tail -f <logfile> | while read; do echo ${REPLY} | grep -q 'sshd.*ROOT from ::ffff:192\.1
68\.' && <skript> $REPLY; done

führt <skript> nur aus, wenn im logfile eine zeile auftaucht, in der 'sshd' und 'ROOT from 192.168.' vorkommt.

nicht getestet, können also fehler drinsein. aber das prinzip sollte klar sein.

-j

apofis11
01.10.02, 14:28
nur von den 192.168 addressen geht im normalfall keine gefahr aus nur von den unbekannten

eventuell dafür auch eine lösung??