サーバーでのすべてのユーザーのアクティビティを監視したい。
ユーザーがvimなどのエディターからシェルコマンドを実行した場合でも、ログファイルでそれらを確認したいと思います。
ツールacctを確認しましたが、完全なコマンドがリストされていません。 (私がすでに行っているいくつかのオプションを見逃した場合は私を修正してください)。
この問題を解決するために私が注目すべきLinuxツールはどれですか?
ログインを担当する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>
あなたの問題に対する最良の解決策は、Linuxの組み込み audit システムです。使用する man 8 auditd
または詳細については、このページを確認してください: http://linux.die.net/man/8/auditd 。
また、確認することもできます このチュートリアル -質問の範囲外ですが、監査システムの動作を示しています。
snoopy を使用できます。
これは単純なコマンドロギングライブラリであり、適切な監査ソリューションではありません(簡単に回避できます)。開示:私は現在のスヌーピーのメンテナーです。
あまり知られていないトリックですが、最も簡単なのは、Sudo
の組み込み監査機能を使用することです。 Sudoには、セッションの再生を容易にするsudoreplay
コマンドが付属しています。 (あなたが提案するように)vim
セッションも中継します。
いくつかの簡単な手順で使用する方法は次のとおりです。
sudosh
をインストールします。これは、ユーザーをSudo
にする(Sudo
ではなく)root
コマンドのシェルラッパーであり、システムログインシェルとして使用できます。Sudo
ロギングを有効にします。編集/etc/sudoers.d/sudosh
:Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output
次のコマンドを/etc/shells
に追加して、それを使用したログインを許可します:/usr/bin/sudosh
ヒント:ユーザーが他のシェルを使用してログインできないようにするには、/etc/shells
から他のシェルを削除します。
foobar
シェルを使用するようにユーザーsudosh
を更新します。 chsh -s /usr/bin/sudosh foobar
詳細については、次を参照してください: https://github.com/cloudposse/sudosh/
これが魔法の解決策です: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html
ユーザーコマンド/接続などに関する統計を表示できます。
特定のユーザーによって呼び出されたすべてのコマンドを一覧表示します...
コマンド名でアカウンティングログを検索します。$ lastcomm rm $ lastcomm passwd
など、詳細については、上記のリンクをご覧ください。