web-dev-qa-db-ja.com

Linuxで実行されるすべてのコマンドを引数(パラメーター)を含めてログに記録するにはどうすればよいですか?

コマンドライン引数(パラメーター)を含め、Linuxで実行されたすべてのコマンドをログに記録するにはどうすればよいですか?

したがって、たとえば、誰かが実行した場合:

rm -rf /tmp/foo

次のようなログエントリが表示されます。

2016-01-01 18:00:00 user=bob command='rm -rf /tmp/foo'

そしてこれだけではありません:

2016-01-01 18:00:00 user=bob command='rm'

コマンドライン引数(パラメーター)をログに記録しないauditdの使用法を見つけることしかできませんでした。これを記録するようにauditdを適切に構成する方法はありますか? FreeBSDには argvポリシーを設定する方法 があるように見えますが、これはDebian派生物には存在しないようです。

3
Neil

履歴をsyslogに送信しようとしましたか?

多くの例の1つ

https://jablonskis.org/2011/howto-log-bash-history-to-syslog/index.html

1
Jacob Evans

Auditdは本当にすてきです:)適切な構成を使用すると、これらすべてのイベントを必要に応じて表示できます(サーバーの1つから例を示します)。ご覧のとおり、ausearchの出力で/ binを確認できます。/rmが呼び出され、削除されたファイルも呼び出されました(実際のパスを/ tmp/X *に変更しました。ご覧のとおり、すべての引数a1からa8を取ります)。これが必要な場合は、いくつかの構成と、auditdの構成に使用したいくつかのガイドを提供できます。

time->Thu May 28 11:35:01 2015

type=PATH msg=audit(1432812901.638:4583880): item=1 name=(null) inode=57348 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00

type=PATH msg=audit(1432812901.638:4583880): item=0 name="/bin/rm" inode=8252 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1432812901.638:4583880):  cwd="XXX"

type=EXECVE msg=audit(1432812901.638:4583880): argc=9 a0="rm" a1="-r" a2="/tmp/*" a3="/tmp/XX" a4="/tmp/XXX" a5="/tmp/XXXX" a6="/tmp/XXXXX" a7="/tmp/XXXXXXX" a8="/tmp/XXXXXXX"

type=SYSCALL msg=audit(1432812901.638:4583880): Arch=c000003e syscall=59 success=yes exit=0 a0=1d27830 a1=1d27e20 a2=1d26870 a3=7fff70cfb2d0 items=2 ppid=10230 pid=10231 auid=1105 uid=1105 gid=1005 euid=1105 suid=1105 fsuid=1105 egid=1005 sgid=1005 fsgid=1005 tty=(none) ses=35220 comm="rm" exe="/bin/rm" key=(null)
1
runyoufreak