SSH Sitzungen "mitloggen"

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
worel
Beiträge: 59
Registriert: 18.02.2005 12:38:11

SSH Sitzungen "mitloggen"

Beitrag von worel » 21.05.2007 13:17:29

Hallo!

Confixx System auf Etch.

Login per SSH wird für einige Kunden gewährt.

Allerdings traue ich einigen nicht über den Weg, deswegen möchten wir sowas wie einen Mitschnitt der Sitzung haben. Gibt es sowas bzw. mit welchem Tool könnte man das bekommen?

Benutzeravatar
Cloonix
Beiträge: 589
Registriert: 20.11.2004 10:42:24
Wohnort: München
Kontaktdaten:

Beitrag von Cloonix » 21.05.2007 13:19:29

Du weißt, dass das rechtlich nicht in Ordnung ist? Du darfst deine Mitarbeiter und Kunden nicht belauschen.
proud to be 100% M$ free (except X300T)
http://claus.freakempire.de
http://debian.freakempire.de

worel
Beiträge: 59
Registriert: 18.02.2005 12:38:11

Beitrag von worel » 21.05.2007 13:30:11

Ausdrücklicher Hinweis im Disclaimer sollte reichen. (bzw. motd etc., der Kunde wird vorab darauf hingewiesen dass seine Arbeit überwacht wird)

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 21.05.2007 13:36:55

Wenn man es entsprechend vereinbart sollte es das Mitloggen möglich sein. Es gibt so einiges an Möglichkeiten, die meisten aber nur dann, wenn das Logging über einen speziellen Zwischenserver durchgeführt wird. Alternativ wirst Du wohl diekt am SSH drehen müssen. Forwarding solltest Du auf jeden Fall deaktivieren.
Beim Zwischenserver müsstest Du in der Shell das Script "doscript" so erzwingen, dass es eine entsprechende Datei anlegt (am besten mit Datum und User), natürlich sollte der Benutzer diese Datei nicht löschen können. ;-)

So zum Testen .....

doscript:

Code: Alles auswählen

#!/bin/bash
test $# -ne 1 && { echo "Suffix muß angegeben werden"; exit;}
TYPESCRIPT=${1}_typescript
TIMEFILE=${1}_timefile
test -f $TYPESCRIPT && { echo "$TYPESCRIPT existiert bereits"; exit;}
test -f $TIMEFILE && { echo "$TIMEFILE existiert bereits"; exit;}
#set -x
LANG=C /usr/bin/script $TYPESCRIPT -t 2>$TIMEFILE 
doreplay:

Code: Alles auswählen

#!/bin/bash
{ test $# -ne 1 && test $# -ne 2;} && { echo "Suffix muß angegeben werden"; exit;}
TYPESCRIPT=${1}_typescript
TIMEFILE=${1}_timefile
test -f $TYPESCRIPT || { echo "$TYPESCRIPT existiert nicht"; exit;}
test -f $TIMEFILE || { echo "$TIMEFILE existiert nicht"; exit;}
#set -x
LANG=C /usr/bin/scriptreplay $TIMEFILE $TYPESCRIPT $2
#LANG=C /usr/bin/scriptreplay $TIMEFILE $TYPESCRIPT $2 2>/dev/null # '2>/dev/null' nicht mehr notwendig
echo "REPLAY BEENDET"


Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 21.05.2007 14:37:35

Ich habe mal ff. gemacht (weil ich einem User aus bestimmten Gründen auf die Finger schauen wollte): Ich habe das Tool "screen" installiert und in $HOME des besagten Users folgende .profile erstellt:

Code: Alles auswählen

#
if [ "$SSH_CONNECTION" ]; then
        echo "User is logging in via SSH ..."
        SCREEN_CHECK=`/usr/bin/screen -list | grep -E '^[0-9] Socket[s]? in '`
        echo $SCREEN_CHECK
        if [ "${SCREEN_CHECK}" == "" ]; then
                # Logged in via SSH, but no screen running
                echo "No other screen session running - good bye !"
                sleep 1
                exec /bin/false
        else
                # Logged in via SSH, screen running 
                clear
                echo
                echo -n "\"screen\" is running, your work will be logged... "
                for i in 3 2 1
                do
                        echo -n "$i "
                        sleep 1
                done
                exec /usr/bin/screen -x -L
        fi
fi
Wenn sich der User einloggt und ich explizit kein "screen" gestartet habe, wird er sofort wieder ausgeloggt, wenn ich jedoch "screen" laufen habe, darf er sich einloggen, ich sehe seine Befehle und es wird zusätzlich alles mitprotokolliert.

Grüsse, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 21.05.2007 15:01:34

Screen kenne ich auch und es ist genial. Nur die Protokollierung finde ich nicht so toll. Für eine aktive Überwachung ist es nicht schlecht. Oder wenn man mal administrative Hilfe benötigt.

Meine ~/.bashrc:

Code: Alles auswählen

if  [ -z $STY ] && [ $TERM != "screen" ]; then  
  /usr/bin/screen -xRR;   
else
  /usr/bin/screen -X hardstatus alwayslastline '[%H] %Lw%=%u %d.%m.%y %c ' 
fi
Einfach einen Benutzer anlegen und diese .bashrc geben. Dieser Benutzer ist nicht root und kann nichts kaputt machen. Dann selbst anmelden (oder umgekehrt) und mit "su - " nach root wechseln. Nun kann man beim administrieren zuschauen.

worel
Beiträge: 59
Registriert: 18.02.2005 12:38:11

Beitrag von worel » 21.05.2007 19:09:27

Und wenn man nu alle möglichen User im System hat und mitloggen will (falls sich user xy einloggt und arbeitet)?

So wie ich das verstanden habe muss ich als root screen manuell starten und wenn sich dann dieser eine User einloggt sehe ich was er tut. Gibts das als Dämon bzw. für alle möglichen User? ;-)

Benutzeravatar
pagaty
Beiträge: 609
Registriert: 18.10.2003 17:42:45
Wohnort: Aschaffenburg

Beitrag von pagaty » 21.05.2007 20:01:12

hallo,

wenn du nur sehen willst, was die user gemacht haben, kannst du dir das historyfile ansehen.

setzt natürlich voraus, das die user dieses nicht ändern.

lg
pagaty
--
Kaum macht man es richtig - schon funktionierts

mv /var/log/smalltalk/* /dev/null
(smalltalk hat nichts mit gleichnamigem forum zu tun !!!!)

Benutzeravatar
pagaty
Beiträge: 609
Registriert: 18.10.2003 17:42:45
Wohnort: Aschaffenburg

Beitrag von pagaty » 15.06.2007 08:06:14

huhu,
habe gerade was gelesen bei: http://www.debian.org/doc/manuals/secur ... h4.de.html.

Code: Alles auswählen

4.11.9 Überprüfen der Nutzer

Wenn Sie wirklich paranoid sind, sollten Sie vielleicht eine systemweite Einrichtung verwenden, um zu überwachen, was die Benutzer auf Ihrem System tun. In diesem Abschnitt werden eine Tipps vorgestellt, wie Sie verschiedene Werkzeuge verwenden.

4.11.9.1 Überwachung von Ein- und Ausgabe mittels eines Skripts

Um sowohl die von den Nutzern ausführten Programme als auch deren Ergebnisse zu überwachen, können Sie den Befehl script verwenden. Sie können script nicht als eine Shell einsetzen (auch dann nicht, wenn Sie es zu /etc/shells hinzufügen). Aber Sie können in die Datei, welche den Startvorgang der Shell steuert, folgendes eintragen:

     umask 077
     exec script -q -a "/var/log/sessions/$USER"

4.11.9.2 Die History-Datei der Shell benutzen

Wenn Sie auswerten wollen, was die Benutzer in die Shell eingeben (aber nicht was das Ergebnis ist), können Sie eine systemweite /etc/profile so einrichten, dass alle Befehle in der History-Datei (Verlaufsdatei) gespeichert werden. Die systemweite Einstellung muss so eingerichtet werden, dass Benutzer die Auditmöglichkeit nicht aus ihrer Shell entfernen können. Ob dies möglich ist, hängt von der Art der Shell ab. Sie müssen also sicherstellen, dass alle Benutzer eine Shell verwenden, die das unterstützt.

Für die Bash zum Beispiel könnte /etc/profile folgendermaßen aufgebaut werden [25] :

       HISTFILE=~/.bash_history
       HISTSIZE=10000
       HISTFILESIZE=999999
       # Don't let the users enter commands that are ignored
       # in the history file
       HISTIGNORE=""
       HISTCONTROL=""
       readonly HISTFILE
       readonly HISTSIZE
       readonly HISTFILESIZE
       readonly HISTIGNORE
       readonly HISTCONTROL
       export HISTFILE HISTSIZE HISTFILESIZE HISTIGNORE HISTCONTROL

Damit dies funktioniert, dürfen die Nutzer nur Informationen zur .bash_history-Datei hinzufügen. Sie müssen daher zusätzlich die append-only-Option (nur-anfügen) mittels des Programms chattr für die .bash_history aller Nutzer setzen [26].

Beachten Sie, dass Sie obige Konfiguration auch in .profile des Benutzers eintragen können. Dann müssten Sie aber die Rechte korrekt vergeben, so dass der Benutzer daran gehindert ist, diese Datei zu verändern. Dies schließt ein, dass das Home-Verzeichnis der Benutzers diesem nicht gehört (sonst könnte er die Datei einfach löschen). Gleichzeitig müsste ihm ermöglicht werden, die Konfigurationsdatei .profile zu lesen und in .bash_history zu schreiben. Falls Sie diesen Weg gehen wollen, wäre es auch gut, das immutable-Flag (unveränderbar) für .profile zu setzen (auch dazu verwenden Sie chattr).

4.11.9.3 Vervollständigung der Nutzerüberwachung durch Accounting-Werkzeuge

Die vorherigen Beispiele sind ein einfacher Weg, um die Überwachung von Nutzern einzurichten. Sie eignen sich aber nicht unbedingt für komplexe Systeme oder für solche, auf denen die Nutzer überhaupt keine (oder ausschließlich) Shells am Laufen haben. Sollte dies der Fall sein, schauen Sie sich das Paket acct an, das Werkzeuge zur Bilanzierung (accounting utilities) enthält. Diese werden alle Kommandos, die ein Nutzer oder ein Prozess auf dem System ausführt, auf die Kosten von Plattenplatz aufzeichnen.

Wenn Sie diese Bilanzierung aktivieren, werden alle Informationen über Prozesse und Nutzer unter /var/account/ gespeichert, genauer gesagt in pacct. Das Accounting-Paket schließt einige Werkzeuge (sa, ac und lastcomm) zur Analyse dieser Daten ein.

4.11.9.4 Andere Methoden zur Benutzerüberwachung

Wenn Sie wirklich paranoid sind und jedes Kommando des Nutzers protokollieren wollen, könnten Sie den Quellcode der Bash so ändern, dass sie alles, das der Nutzer eingibt in einer anderen Datei ablegt. Oder Sie lassen ttysnoop ununterbrochen jedes neue tty [27] überwachen und die Ausgaben in einer Datei speichern. Ein anderes nützliches Programm ist snoopy (vergleichen Sie auch the project page). Dies ist ein für den Nutzer transparentes Programm, das sich als eine Bibliothek einhängt und eine Hülle um execve()-Aufrufe bildet. Jedes ausgeführte Kommando wird im syslogd aufgezeichnet, indem die authpriv-Möglichkeit benutzt wird (üblicherweise wird dies unter /var/log/auth.log gespeichert). 
ich finde das passt gut zu deiner frage.

lg
pagaty
--
Kaum macht man es richtig - schon funktionierts

mv /var/log/smalltalk/* /dev/null
(smalltalk hat nichts mit gleichnamigem forum zu tun !!!!)

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 15.06.2007 09:47:22

Im aktuellen Linux-Magazin gibt es dazu einen Artikel "Blick in die Röhre" (habe ihn aber noch nicht durchgelesen).

Es geht dort um die Balabit Shell Control Box http://www.balabit.com/products/scb/
Oh, yeah!

Antworten