debitux Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hi, ich möchte was ausprobieren. Ich will ein keines C Progrämmchen schreiben welches eine Mail schickt wenn sich ein Benutzer über ssh einloggt. Es soll dann auch wieder eine Mail schreiben beim ausloggen.... Hat jemand schonmal sowas gemacht? Wie kann ich rausfinden wann sich jemand über ssh einloggt und ausloggt? Gruß debitux Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hallo, bei SuSE gibt es im Homeverzeichnis jeden Benutzers eine .profile Datei. Diese wird bei Login des Benutzers ausgeführt. Allerdings auch bei Telnet Zugriff. Dort könnte man z. B. die Mailfunktion eintragen und eine E-Mail verschicken. Fürs ausloggen gibt es bestimmt auch eine entsprechende Datei. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hallo, Problem bei Dateien, die im Home-Verzeichnis des Nutzers liegen, ist die Tatsache, dass diese von Nutzer modifiziert werden koennen (d.h. die EMail-Benachrichtigung liesse sich ausschalten). Ich wuerde eher versuchen, mit syslog.conf (bei korrekter Konfiguration des sshd werden logins in /var/adm/messages gelogt) oder /etc/ssh/sshrc zu arbeiten. Eine andere Moeglichkeit waere, regelmaessig das lastlog auf neue logins zu pruefen oder mit den systemweiten Scriptdateien für die Bash (bzw. alle anderen Shells) zu arbeiten. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Stimmt. Obiger Vorschlag ist das, was man tun könnte. Fürs ausloggen gibt es bestimmt auch eine entsprechende Datei. Nein, die gibt's nicht. Und die würde auch nicht funktionieren da keiner garantieren kann, daß ich mich mit logout auslogge und nicht mit SIGKILL die Shell terminiere... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SystemError Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hallo, wie wäre es denn wenn Dein Programm per Cronjob einfach /var/log/messages alle paar Minuten überprüft und dann entsprechend agiert ? Anbei ein bisserl unausgegorener ShellCode: " [root@mountdoom log]# grep sshd /var/log/messages | grep opened /var/log/messages " Hiermit siehst Du alle Benutzer die sich anmelden... Die Ausgabe sieht dann etwa so aus: " Aug 28 20:32:53 mountdoom sshd(pam_unix)[23282]: session opened for user sarge by (uid=666) " Und hiermit kannst Du nach sich ausloggenden Benutzer schauen: " [root@mountdoom log]# grep sshd /var/log/messages | grep closed " Das geht sicherlich eleganter als in diesem Beispiel aber ich halte "/var/log/messages" für den richtigen AnlaufPunkt. Im übrigen kannst Du das wahrscheinlich mit nur sehr wenigen Zeilen Shell oder PerlCode erledigen falls Du keine Lust auf C haben solltest... ;-) Aber das entscheide jeder nach seinem Gusto... Bye SystemError Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hallo, Original geschrieben von dr.disk Nein, die gibt's nicht. Und die würde auch nicht funktionieren da keiner garantieren kann, daß ich mich mit logout auslogge und nicht mit SIGKILL die Shell terminiere... Doch, die gibts schon. Die bash verwendet - sofern es sich um die login-Shell handelt - ~/.bash_logout, csh/tcsh fuehren /etc/csh.logout bzw. ~/.logout aus. Das setzt allerdings voraus, dass die Shell auch normal terminiert wird. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Original geschrieben von nic_power Hallo, Problem bei Dateien, die im Home-Verzeichnis des Nutzers liegen, ist die Tatsache, dass diese von Nutzer modifiziert werden koennen (d.h. die EMail-Benachrichtigung liesse sich ausschalten). Hi, dies liesse sich doch aber mit einem chattr +a oder chattr +i vermeiden? gruß gurkenpapst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Hallo, Original geschrieben von gurkenpapst dies liesse sich doch aber mit einem chattr +a oder chattr +i vermeiden? gruß gurkenpapst Das duerfte nicht viel bringen, da man die Datei loeschen und wieder neu anlegen kann. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 28. August 2003 Teilen Geschrieben 28. August 2003 Zitat aus der manpage: A file with the `i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser can set or clear this attribute. Hab es ausprobiert, es funktioniert auch nicht. gruß gurkenpapst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 29. August 2003 Teilen Geschrieben 29. August 2003 Mal überlegen.... Wäre ein cron nicht zu ungenau? Ein cron ist ja schließlich kein richtiger ActionListener. Somit wäre eine Echtzeit-Abarbeitung nicht möglich.....aber ich bin mir sicher es gibt andere Mittel. Was ich damit sagen will ist, wie willst du das so genau handlen....selbst wenn du in /var/*/messages nach sshd grepst und dann nach login|logout.... und dann noch einen tail hinzufügst, dass immer der letze login|logout dargestellt wird....aber das ist keine saubere Programmierung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SystemError Geschrieben 29. August 2003 Teilen Geschrieben 29. August 2003 >>>Echtzeit-Abarbeitung nicht möglich. >>> aber das ist keine saubere Programmierung Da hast Du recht. Aber wie ich das sehe ist eine Echtzeit-Abarbeitung auch gar nicht notwendig... Schliesslich will debitux sich ne Email schicken lassen sobald sich jemand anmeldet... Und Emails sind auch alles andere als EchtZeit. Mein Vorschlag wäre ein quick and dirty hack der funktionieren würde. Unsauber ist er sicherlich aus der Sicht eines SoftwareEntwicklers. Bye SystemError Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 1. September 2003 Autor Teilen Geschrieben 1. September 2003 Hi, danke für eure Antworten! Naja ich wollte das Progrämmchen unbedingt mit einem Compiler übersetzen, (also mit C) weil dann niemand nachgucken kann was das Programm macht. Ein Cronjob wäre mir auch zu auffällig. Ein Syslog hack wäre ganz nett :-) Dann müsste ich aber die Quellen vom Syslog ändern und die übersetzen. Das wäre mir auch zu blöd... Konfigurationen verändern gefällt mir auch nicht so doll. Ich denke ich werd mit C die /var/log/messages auslesen und dann auch mit C ne Mail verschicken. Das ist zwar auch nicht so unauffällig, aber ich denke unauffälliger als wenn ich das als nen Cronjob eintrage ;-). Mich interessiert nur, kann ich nicht direkt den SSH abhören? Was wäre wenn ich die SSH Quellen verändere? Wenn ich über ein PAM Modul authentifizieren würde, wäre es doch möglich es aus dem Modul rauszubekommen, oder? Allerdings hab ich nicht gerade gute Kenntnisse mit C. :-/ Da muss ich wohl n bisschen fummeln. Wie würdet ihr es machen um möglichst unauffällig zu bleiben? Gruß debitux Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 1. September 2003 Autor Teilen Geschrieben 1. September 2003 so klappts :-) schonmal #include<stdio.h> int main(void) { FILE *inp; int zeichen; if((inp=fopen("input.dat","r")) == NULL ) { printf("Datei kann nicht geoeffnet werden!\n"); return 1; } while(fscanf(inp,"%c",&zeichen) != EOF) printf("%c",zeichen); fclose(inp); } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 1. September 2003 Teilen Geschrieben 1. September 2003 noch ein Vorschlag: Du schreibst dir ein kleines C Programm, welches nichts anderes tut als beim Ausführen eine mail zu schicken und anschliessend eine Shell öffnet. Diese Programm ist dann die Loginshell der Benutzer, die per ssh auf das System zugreifen. gruß gurkenpapst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
debitux Geschrieben 10. September 2003 Autor Teilen Geschrieben 10. September 2003 Da ist aber wieder das Problem das es schnell zu finden ist! Das müsste ich ja in bash_login eintragen oder ähnl. Das wäre zu auffällig... Trotzdem danke für den Beitrag... Ich bin noch net fit mit C. hab auch nicht weiter an dem Skript gearbeitet... Kennt jemand vielleicht ein paar gute Links für die Nutzung von "C für Linux Programmierung?" Gruß debitux Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.