web-dev-qa-db-ja.com

ユーザーが実行したすべてのコマンドをログに記録するにはどうすればよいですか?

サーバーでのすべてのユーザーのアクティビティを監視したい。

ユーザーがvimなどのエディターからシェルコマンドを実行した場合でも、ログファイルでそれらを確認したいと思います。

ツールacctを確認しましたが、完全なコマンドがリストされていません。 (私がすでに行っているいくつかのオプションを見逃した場合は私を修正してください)。

この問題を解決するために私が注目すべきLinuxツールはどれですか?

34
Supratik

ログインを担当するpam構成にこの行を追加します(redhatベースのディストリビューションではそのシステム認証)

session    required     pam_tty_audit.so enable=*

何が行われたかを知るために使用できます。

ausearch -ts <some_timestamp> -m tty -i

これにより、次のような出力が生成されます。

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>

これの唯一の欠点は、少し読みにくいことですが、理論的にはセッション全体の記録に使用できるため、提案されているほとんどのソリューションよりもはるかに優れています。

編集:ああ、あなたはaureportを使用して、より役立つリストを生成できます。

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>
33
Matthew Ife

あなたの問題に対する最良の解決策は、Linuxの組み込み audit システムです。使用する man 8 auditdまたは詳細については、このページを確認してください: http://linux.die.net/man/8/auditd

また、確認することもできます このチュートリアル -質問の範囲外ですが、監査システムの動作を示しています。

9

snoopy を使用できます。

これは単純なコマンドロギングライブラリであり、適切な監査ソリューションではありません(簡単に回避できます)。開示:私は現在のスヌーピーのメンテナーです。

2
Bostjan Skufca

あまり知られていないトリックですが、最も簡単なのは、Sudoの組み込み監査機能を使用することです。 Sudoには、セッションの再生を容易にするsudoreplayコマンドが付属しています。 (あなたが提案するように)vimセッションも中継します。

いくつかの簡単な手順で使用する方法は次のとおりです。

  1. システムに sudosh をインストールします。これは、ユーザーをSudoにする(Sudoではなく)rootコマンドのシェルラッパーであり、システムログインシェルとして使用できます。
  2. Sudoロギングを有効にします。編集/etc/sudoers.d/sudoshDefaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. 次のコマンドを/etc/shellsに追加して、それを使用したログインを許可します:/usr/bin/sudosh

    ヒント:ユーザーが他のシェルを使用してログインできないようにするには、/etc/shellsから他のシェルを削除します。

  4. foobarシェルを使用するようにユーザーsudoshを更新します。 chsh -s /usr/bin/sudosh foobar

詳細については、次を参照してください: https://github.com/cloudposse/sudosh/

2
Erik Osterman

これが魔法の解決策です: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • yum install psacct(redhat)
  • Sudo apt-get install acct

ユーザーコマンド/接続などに関する統計を表示できます。

特定のユーザーによって呼び出されたすべてのコマンドを一覧表示します...

コマンド名でアカウンティングログを検索します。$ lastcomm rm $ lastcomm passwd

など、詳細については、上記のリンクをご覧ください。

1