rootログインが無効(SSH)であるが、ユーザーが実行sudo -i
またはsu -
rootになることができるときに、誰がログとしてrootとして機能しているかを追跡するための推奨される方法は何ですか?すべてのコマンドを元のユーザー名でフォローしたいと思います。RHEL 6またはLinux rsyslogなど
rootログインが無効(SSH)であるが、ユーザーが実行sudo -i
またはsu -
rootになることができるときに、誰がログとしてrootとして機能しているかを追跡するための推奨される方法は何ですか?すべてのコマンドを元のユーザー名でフォローしたいと思います。RHEL 6またはLinux rsyslogなど
回答:
最も堅牢な方法は監査されているようです:
http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html
Auditdは基本的にすべてのシステムコールをインターセプトし、ルールのセットと照合します。したがって、/etc/audit/audit.rules
ファイルには次のようなものが含まれます。
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION
最後のルールは、デフォルト以外の唯一のルールです。
このアプローチの主な欠点(および代替案を探しているときにこの質問を見つけた理由)は、生のログファイルがかなり暗号化されており、生のログファイルでクエリプログラムを実行した後でのみ役立つことです。 ausearch
そのルールのクエリ例は次のようになります。
ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f
常識的な解決策は、生のauditdログにクエリを実行し、ログソリューションに送信するcronを作成することでしょう。
Red Hatディストリビューションでは、通常、/var/log/secure
ログを使用しsudo
て、Fedora / CentOS / RHELシステムで誰がログインしているか、または誰を利用しているかを識別します。
$ sudo -Es
ログ結果:
suの例9月1日19:32:51 greeneggs sudo:saml:TTY = pts / 2; PWD = / home / saml; USER = root; コマンド= / bin / bash
$ su -
ログ結果:
9月1日19:34:49 greeneggs su:pam_unix(su-l:session):saml(uid = 1000)によってユーザーrootのために開かれたセッション
協力しているユーザーがいる場合は、rootshを設定して、rootユーザーが入力したすべてのログをsyslogに記録できます。
http://linux.die.net/man/1/rootsh
rootsh rpmはEPELで利用できます。
RHEL6のsudoのバージョンは、すべてのsudoセッションのstdoutをファイルに記録することもできます。sudo_pluginsのmanページをご覧ください。
これらのアプローチはどちらも完全に防弾ではありません。