gajUli Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Hi Unixer, wie kann ich telnet-sessions eines bestimmten Users in einer Datei mitloggen lassen? (Unix allgemein) Hintergrund ist, ich hab da ein paar User auf einem Server, die Dinge versuchen, die sie nicht sollen, und ich moechte gern wissen, wer da genau was am fummeln ist. Danke fuer alle Antworten Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Hi, allgemein kann man nur sagen, beim Telnet Server kannst du das einstellen Welcher Distribution? Welches Realease? Welcher Kernel? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 30. Januar 2002 Autor Teilen Geschrieben 30. Januar 2002 Original geschrieben von Nobse Hi, allgemein kann man nur sagen, beim Telnet Server kannst du das einstellen Welcher Distribution? Welches Realease? Welcher Kernel? Ich brauche Antworten, keine Fragen. :confused: 1. Apple 2. 10.1 3. Mach Sollte aber auch ohne distributionsspezifische tools funktionieren. Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ingo Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Hallo! Was ein User in der Shell macht (also auch über telnet), kannst Du im Homeverzeichniss des Users in der .history-Datei nachlesen. Also könntest Du dir mit "tail -f /home/xyz.history" die Aktionen des Users Realtime auf einer Console anzeigen lassen. HTH Bis dann, Ingo:cool: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Hi, [*] gucke doch einfach in den User Ordner .bash_history [*]nimm telnet als ein shell script, füge eine zeile rein....in dieser rufste telnet.bin auf mit ne pipe auf tee ( aber wie das ganz genau geht...?!) [*] ssh [/list=1] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 30. Januar 2002 Autor Teilen Geschrieben 30. Januar 2002 Hm, hab mal geguckt, also die History enthaelt zu wenige Informationen und der Trick mit der Pipeaufteilung geht nicht, weil er clientseitig gestartet werden muesste. Die Clients sind aber nur irgendwelchen Dump-Windosen. Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Hi, wenn ich genauer Fragen darf, was möchtest du denn über den User wissen bei der Telnet Session ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 30. Januar 2002 Teilen Geschrieben 30. Januar 2002 Also was ich meine warum brauchst du das überhaupt ? Ein Sysadmin ist eine vertrauens Person und es könnte so einen Konflikt mit der privatssphäre geben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 30. Januar 2002 Autor Teilen Geschrieben 30. Januar 2002 Original geschrieben von Nobse wenn ich genauer Fragen darf, was möchtest du denn über den User wissen bei der Telnet Session ? Ich moechte, dass die gesamte Session gedumpt wird, genauso wie bei telnet anyhost.anydomain | tee -a mydumpfile Nur ist das ja ein Client-Kommando und kann so am Server ja laufen... Die Frage nach der Rechtmaessigkeit kann ich verstehen. Es geht aber nicht um Privatsphaere oder Postgeheimnis, sondern um einen Rechner, der mein persoenliches Eigentum ist, und im Schulungsbetrieb als Server fungiert. Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 31. Januar 2002 Teilen Geschrieben 31. Januar 2002 ne möglichkeit wäre doch ethereal mit Filtern dazu zu bringen alles Telnet-mässiges in eine Datei zu schreiben. is aber nicht die wirklich schöne variante. Gesucht ist glaube ich eher sowas: http://www.symark.nl/pbroker4.htm (3. oder 4. Absatz). Interessante aufgabenstellung.... man müsste doch die Ausgabe dieser virtuellen Terminals auch noch in eine Datei schreiben können, während sie der user zu gesicht bekommt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 31. Januar 2002 Teilen Geschrieben 31. Januar 2002 Was mir noch einfällt schreib die datei /etc/profile: echo "logging wird aktiviert - bitte nochmals anmelden" telnet localhost | tee -a mydumpfile Vielleicht hilft es. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 31. Januar 2002 Autor Teilen Geschrieben 31. Januar 2002 Moin Leuts, vermelde, das Problem ist geloest. Hab telnet-User auf eine bestimmte shell eingestellt, die in Wirklichkeit ein kleines c-Programm ist, das die eigentliche shell von einem anderen Ort aus mit einem system-Kommando mit | tee -a logfile aufruft. Scheint voellig sauber zu laufen. Wichtig ist noch, die Rechte richtig zu setzen. Wie es genau geht, kann ich bei Interesse gern naeher beschreiben, wenig Zeit momentan... Danke fuer Eure Anregungen, die mir sehr geholfen haben. Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 31. Januar 2002 Autor Teilen Geschrieben 31. Januar 2002 Nabend, hab den Kram heute mal getestet, lief ganz gut. Mit ps konnten die natuerlich den tee-job listen und haben prompt versucht, die Log-Datei zu loeschen. Als das nicht ging, wollten sie den Prozess killen. Das geht auch, aber die telnet-session wird mit abgebrochen. Einziger Nachteil: vi kommt damit nicht klar; bricht mit einer Meldung, dass er ne echte Shell braucht, ab. Pico geht. War das ein Spass. :D:D Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 1. Februar 2002 Teilen Geschrieben 1. Februar 2002 Original geschrieben von ElektroUli vi kommt damit nicht klar; bricht mit einer Meldung, dass er ne echte Shell braucht, ab. Pico geht. Hoi, ist das schlimm ? Also sollten wir uns gedanken machen das du vi nehmen kannst oder kannst du damit leben ? War das ein Spass. Glaub ich dir =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 1. Februar 2002 Autor Teilen Geschrieben 1. Februar 2002 Ob das schlimm ist? Noe, zumindest fuer mich nicht. Ist halt nur "unschoen"... Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 5. Februar 2002 Teilen Geschrieben 5. Februar 2002 Für die Hartgesottenen unter Euch: der telnetd wird ja über den inetd gestartet, was hindert euch also daran einen Wrapper vor den telnetd zu setzen der alles was kommt aufzeichnet und dann an telnetd (ungeändert?) weiterreicht? Letztendlich ist jedoch immer noch die Frage wozu. Man sollte seinen Usern trauen oder telnet verbieten. Überwachung ist, meiner Meinung nach, nicht das Richtige. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 6. Februar 2002 Autor Teilen Geschrieben 6. Februar 2002 Original geschrieben von dr.disk Letztendlich ist jedoch immer noch die Frage wozu. Aus Beweisgruenden. User wissen oft nicht genau, was sie gemacht haben, schieben aber anderen die Schuld in die Schuhe, z. B. wenn etwas nicht funktioniert hat oder Dateien futsch sind. Ein verbose Logfile kann da Wunder wirken. Ich halte es auch fuer eine krasse Fehleinschaetzung, wenn Du sagst, ein SysAdmin koennte seinen Usern trauen. Sowas gibts doch IRL ueberhaupt nicht. Koenntest Du das mit dem Deamon-Wrapper mal genauer erklaeren? Mir ist schon klar, dass sowas prinzipiell geht, nur wie? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 6. Februar 2002 Teilen Geschrieben 6. Februar 2002 Eins vorneweg: stimmt schon, man kann nicht allen Usern trauen - leider. Denen den man nicht traut entzieht man halt die Rechte soweit möglich Zurück zum Wrapper: sofern telnetd zuläßt seine Eingaben auch von stdin anzunehmen, hast Du leichtes Spiel. Einfach ein Programm schreiben, daß von inetd gestartet wird und dabei telnetd startet. Alles was Dein Programm dann noch tun muß ist alles was übers Netz kommt nach stdout zu schreiben und die Ausgaben von telnetd übers Netz versenden. Und natürlich Dein Protokoll irgendwo einbauen. Alternativ dazu: telnetd auf einen anderen Port wie 23 legen, ebenfalls über inetd und den Zugriff auf diesen Port via tcpd nur der lokalen Maschine erlauben. Dann einen kleinen Wrapper schreiben der von inetd gestartet wird sobald was auf der 23 ankommt. Dieser tut eigentlich nur alle Eingaben auf den anderen lokalen telnet Port umlenken und andersrum. Soviel zur Theorie, für http hab ich sowas schon mal gebaut. Das war damals in Java für eine Windoof-Plattform. Heute würde ich wohl dafür Perl nehmen. Müßte aber ebenfalls nachlesen wie das mit den Sockets in Perl funktioniert, soll aber nicht schwer sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 6. Februar 2002 Autor Teilen Geschrieben 6. Februar 2002 Original geschrieben von dr.disk Eins vorneweg: stimmt schon, man kann nicht allen Usern trauen - leider. Denen den man nicht traut entzieht man halt die Rechte soweit möglich Na das ist doch mal ein Wort, dann sind wir uns ja im Grundsatz einig. Zu der Programmiererei, klar Perl, aber das wollte ich mir jetzt deswegen zusaetzlich zu den anderen 7 Programmiersprachen nicht auch noch antun. Ich denke auch, es sowas koennte mit Systemkommandos gehen. Was mir nicht ganz klar ist, es gibt auf der Ebene doch eigentlich nicht "den" stdin oder stdout, sonderen mehrere, eben theoretisch fuer jeden Port und jede Shell einenen, oder seh ich das falsch? Und mir ist nicht klar, wie man auf die zugreifen kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 6. Februar 2002 Teilen Geschrieben 6. Februar 2002 Das kommt auf den Dienst an. Gleich vorweg, hab keine Ahnung wie das bei telnetd ist (und hab auch keine Ahnung welchen Du abhören willst - in.telnetd, telnetd, usw.) Nehmen wir das Beispiel sendmail. Sendmail kann man alles was er tun soll auch über stdin erzählen. Natürlich kann man ihn aber auch über das Netz kontaktieren wie es die meisten wohl kennen dürften. Bei diesem Beispiel gibt es also zwei Wege wie man sich mit ihm unterhalten will. Zu stdin, stdout und stderr: jeder Prozeß der läuft hat seinen eigenen stdin, stdout und stderr. Die können die gleichen wie die von anderen Prozeßen sein, müssen aber nicht. Du kennst ja sicherlich | , damit kann man unter Unix Ausgaben umlenken, eben von stdin nach stdout. Bsp: "cut -d: -f1 /etc/passwd | sort" Man erhält eine sortierte Liste aller Benutzer. Ein möglicher Ansatz für das Wrapper-Problem könnte also so aussehen: Netzwerk --> Wrapper | telnetd | Wrapper --> Netzwerk Unterstützt Dein telnetd die Variante mit stdin/stdout nicht, oder die ist Variante zwei lieber, kann man auch über sockets gehen. Das sieht dann so aus: Netzwerk --> Wrapper --> loopback -> telnetd --> loopback --> Wrapper --> Netzwerk loopback soll eine Netzwerkverbindung sein auf localhost. Die Idee war ja auf Port 23 den Wrapper hören zu lassen der alle Anfragen weiterleitet an einen anderen lokalen Port auf den der telnetd hört. Drauf zugreifen kann man wie folgt auf das Ganze: Variante 1: z.B. unter C mit popen, damit kann man einen Prozeß öffnen wie eine Datei. Unter Perl gibt's davon eine Variante die von einem Prozeß lesen und schreiben kann und das vor allem gleichzeitig. Dort heißt die open2, was ähnliches gibt's sicherlich auch unter c oder anderen Sprachen. Variante 2: Naja, einfach zwei Netzwerksockets erstellen und mit dem Gegenüber reden. Naja, in Perl sind halt schon wunderhübsche Sockets oder open-Befehle drin, welche Sprache Du aber nimmst ist letztendlich völlig egal. 7 Sprachen, was kann ich eigentlich alles? Mal aufzählen: C, sh, Pascal, Delphi, SQL, Vb, Java, HTML/DHTML mit JavaScript und CSS, Abab/4, Cobol, Basic (leider), ein wenig C++ und Perl bin ich gerade dabei zu lernen. Uuh, das sind ja 13. Da merkt man, daß man ein alter Sack ist und dabei hab ich noch verschwiegen, daß ich mir irgendwann auch noch mal Phyton ankucken will. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 7. Februar 2002 Autor Teilen Geschrieben 7. Februar 2002 Original geschrieben von dr.disk Naja, in Perl sind halt schon wunderhübsche Sockets oder open-Befehle drin, welche Sprache Du aber nimmst ist letztendlich völlig egal. Na c natuerlich, weil damit haben die doch Unix geschrieben. Nee klar, Perl ist schon speziell fuer sowas weiterentwickelter, aber ich mag es nicht lernen, weil ich es beruflich eigentlich nicht brauche. Der Tip mit popen scheint gut zu sein, jedenfalls schweigen meine man-pages dazu nicht: [localhost:/desktop/public_html] root# man popen man: Formatting manual page... POPEN(3) System Programmer's Manual POPEN(3) NAME popen, pclose - process I/O SYNOPSIS #include <stdio.h> FILE * popen(const char *command, const char *type) int pclose(FILE *stream) Also ich nehme an, man kann dann mit fgets() o. ae. lustig Zeichenketten daraus lesen... Werde mich mal damit beschaeftigen, wenn ich mehr Zeit habe. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 8. Februar 2002 Teilen Geschrieben 8. Februar 2002 Na dann viel Spaß damit! Was mir gestern noch beim ka.... eingefallen ist: Dein telnetd liegt doch sicherlich auch im Quelltext vor (Wink mit Zaunpfahl)... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 8. Februar 2002 Autor Teilen Geschrieben 8. Februar 2002 Original geschrieben von dr.disk Na dann viel Spaß damit! Was mir gestern noch beim ka.... eingefallen ist: Dein telnetd liegt doch sicherlich auch im Quelltext vor (Wink mit Zaunpfahl)... Leider nein (OSX). Das mit dem popen scheint uebrigens doch nicht so einfach zu gehen; man kann damit zwar einen io-Prozess oeffnen, aber es ist dann eben ein eigener, kein schon bestehender. Anyway, das Problem war ja eigentlich geloest. In die Systemprogrammierung steige ich weiter ein, wenn ich mal drei Wochen Zeit hab. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 8. Februar 2002 Teilen Geschrieben 8. Februar 2002 Bestehende Prozeße zu öffen ist auch nicht möglich. Hier ging es ja darum, genau wie inetd, den Prozeß (telnetd) bei Bedarf anzustoßen. Und dafür kann man eine Variante von popen auf jeden Fall nehmen. Da sind wir wieder: unter Perl heißen die open2 und open3. Die sollte es so oder so ähnlich aber auch unter c geben. 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.