Linuxのrootユーザーが、ターミナルまたはSSH経由でログインしている別のユーザーが実行しているシェルコマンドをリアルタイム(またはリアルタイムに近い)で表示することは可能ですか?もちろん、それらは.bash_historyに保存されますが、ユーザーがログオフしたときにのみ保存され、無効にすることもできます。
編集:理想的には簡単にオンとオフを切り替えることができるもの。
rootとして、シェルを、実際のシェルに渡す前にコマンドをログに記録する単純なラッパースクリプトに置き換えることができます。これは、ログインする前にのみ機能します。
ユーザーのセッションに侵入したい場合は sniffy を使用するか、screen -x
ご協力をよろしくお願いいたします。
ただし、地域の法律によっては、ユーザーをスパイすることが規制の対象となる場合や、まったく違法となる場合もあります。
シェルの変更は回避するのが非常に簡単です。シェル自体にパッチを適用することをお勧めしますが、すべてのシェルにパッチを適用する必要があります。私たちのお気に入りのクラッカーは、bash_historyを無効にすることに悩まされないボーナスとしてこれを使用しています。
ssh Host /bin/sh -i
Snoopy はexec関数のラッパーであり、実行された外部バイナリをログに記録します(シェル組み込みではありません)。
@David Schmittの提案 sniffy はより良い方法を使用し、疑似端末をタップします。
ttysnoop は同じ方法を使用しますが、メンテナンスされていません。 (おそらく私はそれがssh接続をログに記録するのに問題があり、覚えることができません)
sshにパッチを当てることができます セッションをログに記録しますが、そのパッチはoldです。
pseudopod および rootsh は、正当なsudoのロギングに使用できます。そして shwatcr は、ログインを監視するもう1つの方法です。
Sysdig は、システムレベルの探索の強力なツールです-これがあなたの望みです;)
sysdig -i spy_users
spy_usersインタラクティブなユーザーアクティビティを表示する
ユーザーがインタラクティブに(たとえば、bashから)起動するすべてのコマンドと、ユーザーがアクセスするすべてのディレクトリをリストします
協力的であれば、2人のユーザー間で GNU screen を使用できます-1人にscreenセッションを確立させ、もう1人にscreen -x
を使用して参加させます。
Rootが知らないうちに他のユーザーを「スパイ」する場合は、キーロガーソフトウェア/ハードウェアが最善で最も効率的なソリューションです。
Bash-BOFHパッチを試すことができます。パッチを探してみてください。
パッチや特別な実行可能ツールを使用せずに、すべての「bash」コマンド/ビルドをテキストファイルまたは「syslog」サーバーに記録する方法を書きました。
「bash」の初期化時に一度呼び出す必要がある単純なシェルスクリプトであるため、導入は非常に簡単です。
ここのメソッドを参照してください: http://blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger
Snoopy は、軽量のコマンドロギング用です。
システムで実行されたコマンドのライブビューが必要な場合は、これで十分です。警告:スヌーピーは適切な監査ソリューションではなく、簡単に回避できます。
ただし、端末に入力されたすべての文字を確認したい場合は、別のツールを使用する必要があります。
開示:私は現在のスヌーピーのメンテナーです。
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>
一連の改行を並べ替えてもかまわない場合は、かなりうまくいくようです。