Frage Live-Ansicht von Linux-Shell-Befehlen, die von einem anderen Benutzer ausgeführt werden?


Ist es für den root-Benutzer in Linux möglich, eine Echtzeit- (oder nahezu Echtzeit-) Ansicht der Shell-Befehle zu erhalten, die von einem anderen Benutzer ausgeführt werden, der über ein Terminal oder SSH angemeldet ist? Offensichtlich sind sie in .bash_history gespeichert, aber das wird nur gespeichert, wenn der Benutzer sich abmeldet und auch deaktiviert werden kann.

Edit: Idealerweise etwas, das einfach ein- und ausgeschaltet werden kann.


27
2018-05-16 03:40


Ursprung


ttyrpld hört sich gut an. in dieser Frage empfohlen. serverfault.com/questions/40011/... - hayalci


Antworten:


Als root können Sie ihre Shell durch ein einfaches Wrapper-Skript ersetzen, das ihre Befehle protokolliert, bevor sie an die reale Shell übergeben werden. Dies würde nur funktionieren, bevor sie sich einloggen.


16
2018-05-16 04:01



Wir haben dies getan, um einen gehackten Account bei einem früheren Arbeitgeber zu überwachen. Erstellt "/ bin / bash" (beachte den Space), der ein Wrapper um den Script-Befehl war. Lief wie am Schnürchen :) - Commander Keen
Sehr schlau! +1 - EMP


Benutzen schnüffeln wenn Sie in die Sitzung des Benutzers einbrechen wollen oder screen -x wenn Sie zusammenarbeiten.

Beachten Sie jedoch, dass das Ausspionieren Ihrer Nutzer je nach Ihrer lokalen Gesetzgebung möglicherweise Vorschriften unterliegt oder sogar illegal ist.


10
2018-05-16 09:45





Das Ändern der Shell ist sehr umständlich, das Patchen der Shell selbst ist besser, aber Sie müssen alle Shells patchen. Unser Lieblingscracker nutzt dies, als Bonus stört er sich selbst nicht mit der Deaktivierung von bash_history.

ssh host /bin/sh -i  

Snoopy ist ein Wrapper um Exec-Funktionen und protokolliert alle externe Binärdatei das wird ausgeführt (nicht shell builtins)

@David Schmitts Vorschlag schnüffeln verwendet eine bessere Methode, es tappt das Pseudoterminal.

ttysnoop verwendet dieselbe Methode, wird jedoch nicht verwaltet. (Ich hatte wahrscheinlich Probleme, es zu Protokoll SSH-Verbindungen, kann mich nicht erinnern)

Sie können versuchen, ssh zu patchen um eine Sitzung zu protokollieren, aber dieser Patch ist alt.

Pseudopod und rootsh kann zum Loggen von legitimen Sudos verwendet werden. Und Shwatcr ist eine andere Sache, um Logins zu überwachen.


8
2018-05-16 21:42



Was genau ist ssh host /bin/sh -i tun soll? - Mike Pennington
+1 für Snoopy, nicht perfekt, aber getan, was wir brauchten. - skinp


Wenn Sie kooperativ sind, können Sie verwenden GNU-Bildschirm zwischen zwei Benutzern - lassen Sie die Bildschirmsitzung erstellen und verwenden Sie dann die andere Verknüpfung screen -x.

Wenn Sie möchten, dass root andere Benutzer ohne ihr Wissen "ausspioniert", könnte die beste und effizienteste Lösung Keylogger-Software / Hardware sein.


4
2018-05-16 03:56





Sysdig ist ein mächtiges Werkzeug der Erforschung auf Systemebene - das ist was du willst;)

Beispiel:

sysdig -i spy_users

Kategorie: Sicherheit

spy_users Zeigt interaktive Benutzeraktivität an

listet jeden Befehl auf, den Benutzer interaktiv starten (z. B. von bash) und jedes Verzeichnis, das Benutzer besuchen


4
2018-06-15 21:07





Sie könnten den bash-BOFH-Patch ausprobieren. Suchen Sie nach dem Patch.


2
2018-05-16 04:02





Ich habe eine Methode geschrieben, um alle 'bash' Befehle / Builtins in eine Textdatei oder einen 'syslog' Server zu schreiben, ohne einen Patch oder ein spezielles ausführbares Werkzeug zu benutzen.

Es ist sehr einfach zu implementieren, da es ein einfaches Shellskript ist, das bei der Initialisierung der 'bash' einmal aufgerufen werden muss.

Siehe die Methode hier: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger


1
2018-06-06 11:29



Willkommen bei Serverfehler! Wir bevorzugen wirklich, dass Antworten Inhalt haben, keine Hinweise auf Inhalte. Dies stellt sicher, dass die Antwort auch dann verfügbar bleibt, wenn die Verbindung nicht mehr funktioniert. Während dies theoretisch die Frage beantworten könnte, es wäre vorzuziehen um die wesentlichen Teile der Antwort hier einzubeziehen und den Link als Referenz bereitzustellen. - Iain
Willkommen bei Serverfehler! Bitte lesen Sie unsere FAQ im Speziellen Darf ich hier Produkte oder Websites bewerben, mit denen ich verbunden bin?. - Iain


function spy() { 
   ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ; 
   /usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
        | grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ; 
}

[436] klikevil@epiphany ~ $ w<br>
 09:36:43 up 12:06,  6 users,  load average: 0.46, 0.29, 0.20<br>
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT<br>
klikevil pts/0    75.125.126.8     23:05    2:19m 10:33   0.18s cmd                                      <br>
klikevil pts/1    75.125.126.8     00:18    6:50m  0.06s  0.04s sshd: klikevil [priv]<br>
klikevil tty7     :0               09:02   17:07m  2:02   0.32s x-session-manager<br>
klikevil pts/2    :0.0             09:03    3:30   0.08s  0.08s bash<br>
klikevil pts/3    :0.0             09:03    0.00s  0.76s  0.00s w<br>
klikevil pts/4    :0.0             09:06    3:13   0.46s  0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>

Scheint gut zu funktionieren, wenn es Ihnen nichts ausmacht, einige Zeilenumbrüche zu sortieren.


1
2017-09-02 14:39





Snoopy ist für die einfache Befehlsprotokollierung vorgesehen.

Wenn Sie eine Live-Ansicht von Befehlen wünschen, die auf Ihrem System ausgeführt werden, ist dies möglicherweise der Fall. Warnung: Snoopy ist keine geeignete Audit-Lösung und kann leicht umgangen werden.

Wenn Sie jedoch jedes in das Terminal eingegebene Zeichen sehen möchten, müssen Sie ein anderes Werkzeug verwenden.

Disclosure: Ich bin derzeit Snoopy Maintainer.


1
2017-11-05 23:27





versuchen Sie diesen Export HISTTIMEFORMAT = "% T" führen Sie ein paar Befehle und "Geschichte" danach ...


-3
2017-08-24 06:51