サーバー内のすべてのユーザーのアクティビティを監視したい。
ユーザーがvimのようなエディターからシェルコマンドを実行した場合でも、ログファイルでそれらを表示したいと思います。
ツールacctを確認しましたが、完全なコマンドがリストされていません。(すでにいくつかのオプションを見逃している場合は修正してください)。
この問題を解決するには、どのLinuxツールを検討する必要がありますか?
サーバー内のすべてのユーザーのアクティビティを監視したい。
ユーザーがvimのようなエディターからシェルコマンドを実行した場合でも、ログファイルでそれらを表示したいと思います。
ツールacctを確認しましたが、完全なコマンドがリストされていません。(すでにいくつかのオプションを見逃している場合は修正してください)。
この問題を解決するには、どのLinuxツールを検討する必要がありますか?
回答:
ログインを担当するpam configにこの行を追加します(redhatベースのディストリビューションでのsystem-auth)
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>
auditd
デーモンを最初に有効にする必要があることに注意してください(CentOS 6.7のインストールではデフォルトではありませんでした)。デーモンを起動するには、を使用service auditd start
し、この変更を(再起動後)永続的にするには、chkconfig auditd on
ソース:access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…およびaccess.redhat.com/documentation/en-US/を
問題に対する最善の解決策は、Linuxの組み込み監査システムです。使用するman 8 auditd
か、詳細については、このページをご確認ください:http://linux.die.net/man/8/auditd。
また、このチュートリアルを確認することもできます-少し質問の範囲外ですが、監査システムの仕組みを示しています。
スヌーピーを使用できます。
これは単純なコマンドロギングライブラリであり、適切な監査ソリューションではありません(簡単に回避されます)。開示:私は現在のスヌーピーメンテナーです。
あまり知られていないトリックですが、最も簡単なのは、の組み込みの監査機能を使用することです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
など、詳細については、上記のリンクをご覧ください。