benachrichtigung bei putty-zugriffen aus dem internet

tmp

Ensign
Registriert
Feb. 2004
Beiträge
253
hallöchen!

und zwar habe ich meinen laptop als saugmaschine laufen.
ich habe einem freund ermöglicht mldonkey mitzunutzen ,indem er per putty einen tunnel aufbaut und auf das webinterface von mldonkey zugreift.

das programm last kann mir nun ausgeben,welcher nutzer unter welcher ip auf dem rechner eingeloggt war.

ich würde nun gern alle zugriffe,die aus dem netz duchgeführt wurden in einer datei mitloggen.

noch besser wäre,wenn mir mein laptop über seinen mailaccount eine mail mit einer benachrichtigung bei zugriffen aus dem netz schickt (möglichst ip).

habt ihr vorschläge,wie man das am besten realisiert?
bin für jede idee dankbar ;)
 
tmp schrieb:
ich würde nun gern alle zugriffe,die aus dem netz duchgeführt wurden in einer datei mitloggen.

SSH macht das eigentlich automatisch. "Typische" Anlaufpunkte sind
/var/log/secure
/var/log/auth.log
/var/log/messages
Einfach mal nach "ssh" in den Dateien suchen. In welcher Datei es dann steht hängt von der Konfiguration deines Syslog-Dienstes ab.

noch besser wäre,wenn mir mein laptop über seinen mailaccount eine mail mit einer benachrichtigung bei zugriffen aus dem netz schickt (möglichst ip).

Wenn du das in regelmäßigen Abständen haben möchtest, würde sich ein per cron aufgerufenes Shell-Script anbieten.

Ansonsten kann "Syslog-NG" als Syslog-Daemon, wenn ich mich nicht sehr irre, E-Mails verschicken. Sollte deine Distribution auf den "normalen" Syslog-Dienst setzen, erfordert das dann aber ein wenig Umkonfiguration...
 
Wenn du das in regelmäßigen Abständen haben möchtest, würde sich ein per cron aufgerufenes Shell-Script anbieten.

hast du so ein script fertig? wenn ja,bräuchte ich mir ja die arbeit nicht machen :)

Sollte deine Distribution auf den "normalen" Syslog-Dienst setzen, erfordert das dann aber ein wenig Umkonfiguration...

ich habe gentoo am laufen :p

werd mich trotzdem mal mit syslog-ng befassen. danke schonmal
 
Nein, sorry, ich hab sowas nicht auf Lager.
Ich hab bisher immer lieber möglichst fein per syslog-ng gefiltert und überfliege die entsprechenden Logs dann ab und an manuell.

Im Prinzip dürfte das aber nicht allzu schwer sein, so etwas zu realisieren
"grep "ssh" /var/log/auth.log | mailto -s "ssh-log" root" müsste das Gröbste fast schon erschlagen.
Eventuell noch logrotate im Anschluss einsetzen, damit man sich erst gar nicht um doppelte Meldungen kümmern muss. Ansonsten muss man das halt irgendwie selbst hinkriegen :)

Oder du googelst mal nach "logwatcher" und suchst nach einer schon fertigen Lösung... :-)
 
hallo!
hab jetzt nochmal ein wenig umgeplant. eigentlich reicht es mir,wenn mir solche meldungen im icq mitgeteilt werden.

hab mir also mal centericq eingerichtet und das übergeben von output an den input getestet.
klappt einwandfrei.

kennt sich hier jemand mit syslog-ng aus?
ich bräuchte hilfe bei der config,sodass alle ssh connections per centericq verschickt werden.

source - ssh
filter - nur logins aus dem internet
destination - centericq

hat jemand vorschläge? :)
 
Hm... Ich würde das so lösen:

In die /etc/syslog-ng/syslog-ng.conf:

destination ssh { file("/var/log/ssh.log"); };
filter f_ssh { match("ssh"); };
log { source(src); filter(f_ssh); destination(ssh); };

Wenn es geklappt hat landen dann alle ssh-Meldungen in der ssh.log (event. syslog-ng neu starten).

Dann kanst du per
tail -f /var/log/ssh.log | <programm>
Das ganze an <programm> pipen.
"tail -f /var/log/ssh.log |<programm> &" kannst du dann ja in irgendeine Start-Datei schreiben...

Eventuell nicht schön, müsste aber funktionieren.
 
jo die syslog config arbeitet schon mal einwandfrei - danke :)

jetzt würde ich halt regelmässig ein programm starten,was die log checkt und bei verbindungen aus dem netz die ip als icq nachricht schickt.
-> das schönste wär,wenn ich schon in der syslog config einstellen könnte,dass nur verbindungen aus dem inet in der ssh.log gespeichert werden. ist das möglich?

wenn das ginge,könnte man die ssh.log ja in regelmässigen abständen mit einer kopie ssh2.log vergleichen,dass nur dann eine nachricht mit centericq gesendet wird,wenn sich was geändert hat (also sich jemand aus dem netz eingeloggt hat)

das ganze also in ein bashscript schreiben und das regelmässig mit cron ausführen. ist der ansatz in ordnung?
 
tmp schrieb:
jetzt würde ich halt regelmässig ein programm starten,was die log checkt und bei verbindungen aus dem netz die ip als icq nachricht schickt.

Was spricht gegen tail (siehe mein vorheriges Posting). Wenn das Tool, mit dem du die Nachricht im Endeffekt per ICQ verschickst, von der Standardeingabe zeilenweise lesen kann, ist das wohl die zeitnahste Lösung. Und bei Tail besteht das Problem mit doppelten Meldungen auch nicht.
Wenn das Tool natürlich auch mehrere Zeilen akzeptiert, könntest du Probleme bekommen, da es dann auf das "Ende" von Tail wartet, was ja nie kommen wird...

Wenn du es per selbstgeschriebenem shell-script und cron lösen wllst, würde sich eventuell logrotate zum rotieren der ssh.log anbieten.

Ansonsten wurde "logwatcher" ja schon genannt.

Da der Server ja wohl nicht in einer Produktivumgebung steht, würde ich an deiner Stelle einfach mal alles ausprobieren. Sobald dir dann eine der Lösungen gefällt: Dabei bleiben. :D
 
ok ich werde mal etwas rumprobieren und dann mein ergebnis nochmal posten :)

€: tail -f /var/log/ssh.log | centericq -s msg -p icq -t <uin>
funktioniert leider nicht..liegt wohl daran,dass sich tail nicht ändert
 
Zuletzt bearbeitet:
ok habs nun so gemacht:

bashscript geschrieben.

diff /var/log/ssh.log /home/tmp/log/ssh.log | centericq -s msg -p icq -t <uin>
cp /var/log/ssh.log /home/tmp/log/ssh.log

das wird regelmässig mit cron ausgeführt.
jetzt werden mir nur aktuelle zugriffe als icq msg geschickt.

jetzt würde ich nur noch gern die relevanten daten rausfiltern (nämlich nur die zugriffe aus dem internet)
wie stell ich das am besten an? geht das evtl schon direkt in syslog-ng ?
 
Ich würde eher dazu tendieren "andersrum" zu filtern.
Sprich: Gezielt die Meldungen nicht verschicken, die mit Sicherheit "harmlos" sind. So werden dir dann "merkwürdige", aber interessante Log-Einträge trotzdem mitgeteilt.

Soviel ich weiß kann Syslog-NG mit regulären Ausdrücken umgehen. Die Doku müsste da genaueres drüber wissen (Mehr kann ich dir, was das betrifft, leider auch nicht sagen).

Ansonsten könntest du es wohl mit grep, eventuell mit der Option "-v", umsetzen.
 
hab nochmal etwas rumgespielt.

allerdings klappen die sachen noch nicht so recht.

Code:
destination ssh { program("/home/tmp/.centericq -s msg -p icq -t <uin>");};
filter f_ssh { match("ssh"); };
log { source(src); filter(f_ssh); destination(ssh); };

nach dem start von syslog gibt es auch keine fehler...allerdings werden mir keine nachrichten geschickt,obwohl es eigentlich funktionieren müssten.

dann hab ich noch versucht eine fifo datei als destination zu nehmen:
Code:
destination ssh { fifo("/var/log/ssh.log");};

funktioniert auch einwandfrei,nur weiss ich nicht wie ich nun den inhalt der fifo datei an centericq weitergebe (selbes problem wie mit tail..es beendet sich nicht)
 
so jetzt hab ichs hinbekommen. allerdings auf eine etwas umständliche art und weise. und noch immer nicht zufriedenstellend:

syslog-ng.conf
Code:
destination ssh { file("/var/log/ssh.log" group("100") ); };
filter f_ssh { match("ssh"); };
log { source(src); filter(f_ssh); destination(ssh);};

destination logger { program("/home/tmp/log/logger");};
log { source(src); filter(f_ssh); destination(logger);};

bashscript logger
Code:
#!/bin/sh

diff /var/log/ssh.log /home/tmp/log/ssh.log | centericq -s msg -p icq -t uin
cp /var/log/ssh.log /home/tmp/log/ssh.log


nun werden mir nach syslog-ng restart alle logins geschickt..
ich will aber,dass mir eine msg geschickt wird,sobald sich jemand einloggt.

keine ahnung,warum das nicht richtig funktioniert. weiss jemand rat?
 
Zuletzt bearbeitet:
Zurück
Oben