すべてのセッション/画面/byobu端末で現在のユーザーが実行しているすべてのコマンドを表示するには?

すべてのセッション/画面/byobu端末で現在のユーザーが実行しているすべてのコマンドを表示するには?

Debian ボックスがある場合、一部のユーザーは root アカウントにアクセスでき、一部のユーザーは SSH 接続を開いてコマンドの実行を開始し、一部は画面を開くか、byobu などのツールを使用してコマンドを実行します。

"history"コマンドは、実行されたコマンドの完全なリストを取得できないようです。

実行されたすべてのコマンドを取得する最良の方法は何ですか?

答え1

ハッキングですが、少なくとも動作します。rootそのサーバーには以下が必要です。

出力を見ると、ps auxユーザーのフォークが表示されますsshd。たとえば、この場合、userは次のようになりますmst

$ ps aux | grep ssh
mst      19325  0.0  0.0  76268  1920 ?        S    21:20   0:00 sshd: mst@pts/6

したがって、次のようにこのプロセスのファイル記述子を確認します。

$ sudo ls -lha /proc/19325/fd
total 0
dr-x------ 2 root root   0 Aug 30 21:26 .
dr-xr-xr-x 7 mst  users  0 Aug 30 21:25 ..
lrwx------ 1 root root  64 Aug 30 21:26 0 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 1 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 11 -> /dev/ptmx
lrwx------ 1 root root  64 Aug 30 21:26 12 -> /dev/ptmx
lrwx------ 1 root root  64 Aug 30 21:26 2 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 3 -> socket:[138972]
lrwx------ 1 root root  64 Aug 30 21:26 4 -> socket:[138198]
lrwx------ 1 root root  64 Aug 30 21:26 5 -> socket:[138200]
lrwx------ 1 root root  64 Aug 30 21:26 6 -> socket:[138207]
lr-x------ 1 root root  64 Aug 30 21:26 7 -> pipe:[138212]
l-wx------ 1 root root  64 Aug 30 21:26 8 -> pipe:[138212]
lrwx------ 1 root root  64 Aug 30 21:26 9 -> /dev/ptmx

3 つのリンクは、 、/dev/ptmxとを指します。ユーザーのシェルは彼が入力したすべてのコマンドとそのコマンドの出力を印刷するので、私はfd番号のシステムコールを使用してフィルタリングして彼のコマンドを観察します(2番目のリンクも同じです)。stdinstdoutstderrstdoutstraceread1111/dev/ptmx

sudo strace -e read -s 256 -p 19325 2>&1 | grep 'read(11'

ユーザーが次のコマンドを入力したことを確認できますls

read(11, "l", 16384)                    = 1
read(11, "s", 16384)                    = 1

さて、出力は良くありませんが…動作します

答え2

最良の方法は auditd を使用することです。特定のユーザーが実行したすべてのコマンド、すべてのユーザーが実行したすべてのコマンド、特定のコマンドの呼び出しなどを記録するように設定できます。

マニュアルページでは、auditctl必要なルールの例をいくつか示します。また、他のrootユーザーを信頼できない場合は、他のユーザーがアクセスできない別のサーバーにログインすることをお勧めします。

また、root パスワードを提供せず、root で SSH ログインを許可しないことをお勧めします。代わりに、ログインしたユーザーにのみ自分のアカウントを許可し、rootとして作成してくださいsudo su。 auditdは、どのユーザーが何をしたのかを追跡することもできます。

関連情報