SSH Sitzungen "mitloggen"
SSH Sitzungen "mitloggen"
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?
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?
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:
doreplay:
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
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"
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
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:
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.
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
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
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
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:
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.
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
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?
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?
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
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 !!!!)
Kaum macht man es richtig - schon funktionierts
mv /var/log/smalltalk/* /dev/null
(smalltalk hat nichts mit gleichnamigem forum zu tun !!!!)
huhu,
habe gerade was gelesen bei: http://www.debian.org/doc/manuals/secur ... h4.de.html.
ich finde das passt gut zu deiner frage.
lg
pagaty
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).
lg
pagaty
--
Kaum macht man es richtig - schon funktionierts
mv /var/log/smalltalk/* /dev/null
(smalltalk hat nichts mit gleichnamigem forum zu tun !!!!)
Kaum macht man es richtig - schon funktionierts
mv /var/log/smalltalk/* /dev/null
(smalltalk hat nichts mit gleichnamigem forum zu tun !!!!)
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/
Es geht dort um die Balabit Shell Control Box http://www.balabit.com/products/scb/
Oh, yeah!