
Ich möchte alle über SSH ausgeführten Befehle protokollieren.
Sagen,
ssh [email protected] COMMAND
Ich möchte "COMMAND" auf server.com anmelden
Ich habe ausführlich gesucht, konnte aber nichts finden.
Es gibt noch eine ähnliche Frage, aber ich glaube nicht, dass es dort eine Lösung gibt.
So protokollieren Sie die „Remote-Ausführung über SSH“
Ich kann eine Live-Ansicht mit
pstree -p | grep ssh
Ich habe Snoopy, auditd und sudosh ausprobiert, konnte diese Befehle jedoch nicht über SSH protokollieren.
Da ist einhttp://freecode.com/projects/shwatchr, aber ich kann das Skript zum Testen nicht herunterladen.
Gibt es eine andere Möglichkeit, dies zu erledigen?
Antwort1
ich habe diese Option in meinem Suse-Laborserver getestet und sie hat funktioniert, aber vielleicht gibt es eine bessere Möglichkeit.
ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
Antwort2
Anstatt sich auf SSH zu konzentrieren, sollten Sie einen Schritt zurücktreten und die Verwendung von auditd in Betracht ziehen. Ich gehe davon aus, dass Sie eigentlich die Benutzer verfolgen möchten und nicht verfolgen möchten, was über SSH im Gegensatz zu anderen Anmeldearten getan wird.
man auditctl
sollte Ihnen einen Ausgangspunkt geben.
Antwort3
Ich habe einen Weg gefunden, dies zu tun. Es gibt ein Perl-Skript, geschrieben vonJohn M. Simpson(https://www.jms1.net/).
Alles was Sie tun müssen, ist hinzuzufügen
command="#{path to log-session}"
vor jedem Schlüssel in Ihrer ~/.ssh/authorized_keys
Es funktioniert nur, wenn Sie ein SSH ohne Passwort haben, aber es erfüllt mein Anliegen bis zu einem gewissen Grad.
Antwort4
In meinem Fall hatte ich genau die gleiche Anforderung. Der einzige Vorbehalt bei dieser Methode ist, dass ich nicht sicher bin, wie sie funktioniert, wenn Sie keine SSH-Schlüssel verwenden. Ich habe ein kurzes Bash-Skript erstellt, um den Befehl vor der Ausführung zu protokollieren:
#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"
Ich habe diesen Befehl in ~/bin/log-commands gespeichert und ihn dann ausführbar gemacht ( chmod +x ~/bin/log-commands
).
In der Datei authorized_keys habe ich den command=
Parameter der Zeile hinzugefügt, die zu dem SSH-Schlüssel gehört, für den ich Protokolle haben wollte, sodass die Ausführung des Skripts log-commands erzwungen wird:
command="/home/tricky/bin/log-commands" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ......6J0C1 [email geschützt]
Wenn jemand die Protokollierung kennt, aber nicht möchte, dass Sie die Befehle sehen, kann er einfach eine interaktive Sitzung starten. Wie Sie erwähnt haben, haben Sie bereits Snoopy ausprobiert, das dies für Sie erledigt. Beliebte Alternativen, die ich noch nicht ausprobiert habe, sind Rootsh, Sudosh und Log-User-Session.