web-dev-qa-db-ja.com

特定のユーザーからの監査イベントを抑制する

サーバーをホストしている顧客のWebサイトでの侵入の原因を突き止めようとしています。

auditdは、さらに別のマルウェアが発生したときにどのディレクトリを調べるべきかを示すのに非常に役立ちます(サイトは混乱のようなものですが、クリアするのは私のものではありませんサイトをアクティブ化して台無しにしたい場合でもアップしますが、監査ログは、さまざまなステータスをチェックするために2分ごとに接続する監視スクリプトからのsshアクティビティと、別の監視システムもログに記録するため、読みにくいです。 cronによってトリガーされます。

これらの報告を停止するようにauditctlで何度か試みました。

root@zelia:/var/log/audit# auditctl -l 
-a never,user -F auid=116
-a never,task -F auid=116
-a never,exit -S all -F auid=116
-a never,exit -S all -F uid=116

(UID 116、ユーザー 'meminfo'は抑制したいものです)

ただし、数分ごとに次の情報が表示されます。

type=USER_ACCT msg=audit(1491386883.189:462708): pid=1502 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting acct="meminfo" exe="/usr/sbin/sshd" hostname=prtg.systemec.nl addr=89.20.80.149 terminal=ssh res=success'
type=CRED_ACQ msg=audit(1491386883.189:462709): pid=1502 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred acct="meminfo" exe="/usr/sbin/sshd" hostname=monitor.company.internal addr=89.20.80.149 terminal=ssh res=success'
type=LOGIN msg=audit(1491386883.189:462710): pid=1502 uid=0 old-auid=4294967295 auid=116 old-ses=4294967295 ses=368164 res=1
type=USER_ACCT msg=audit(1491386883.197:462711): pid=1504 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting acct="meminfo" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=USER_START msg=audit(1491386883.197:462712): pid=1504 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:session_open acct="meminfo" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_START msg=audit(1491386883.213:462713): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=' comm="user@116" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=SERVICE_STOP msg=audit(1491386883.365:462714): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=' comm="user@116" exe="/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'

その結果、監査ログがいっぱいになり、重要なバックログが失われています。

一方、侵入がSSH経由で発生しているとは考えていませんが、いつサーバーにログオンしたかを記録すると便利な場合があります。

明らかに、meminfoを抑制したままにするために追加しようとしたルールは正しく機能しません。私は何が間違っているのですか?

[〜#〜]補遺[〜#〜]何らかの理由で、後でauditctl -a never,taskを追加すると、never,taskルールが最初にロードされ、すべてが抑制されます。これには、私が本当に見たかったものも含まれます。

補遺#2この質問 で説明したように、抑制しようとしているメッセージは、デフォルトでPAMサブシステムによって生成されますaudit.rulesの追加ルールではないので、これは追加の問題です...

1
Shadur

ログファイルで、これらの行のuid=0は、これらのプロセスがrootではなくmeminfoによって開始されることを意味します。

auid=500

Auidフィールドには、監査ユーザーID、つまりloginuidが記録されます。このIDは、ログイン時にユーザーに割り当てられ、ユーザーのIDが変更された場合でも(たとえば、su - johnコマンドでユーザーアカウントを切り替えることによって)、すべてのプロセスに継承されます。

uid=500

Uidフィールドには、分析されたプロセスを開始したユーザーのユーザーIDが記録されます。ユーザーIDは、次のコマンドを使用してユーザー名に解釈できます:ausearch -i --uid UID。この場合、500はユーザーshadowmanのユーザーIDです。

これは、rootユーザーcrontabからプログラムを実行するか、プロセスが最初にrootとして開始する必要があるサービスを呼び出す場合(setuidを使用)が原因である可能性があります。 特権ポート<1024を使用できるようにします。

おそらく、意味のあるものを抑制するため、すべてのauid=0アクティビティを抑制したくないでしょう。

auditdがプロセス名、つまりexe=でフィルタリングできる場合、 BZ#1135562以降のRHEL7 のように、sshdで始まるrootを抑制する必要があります。 PermitRootLogin noもある場合は、安全を確保してください。

auditctl
    -a never,user -F auid=0 -F exe="/usr/sbin/sshd"
    -a never,task -F auid=0 -F exe="/usr/sbin/sshd"

ただし、ほとんどの場合、-Fmsg=' 'の外側のフィールドに制限されており、正規表現を許可しない演算子-F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]しかありません。


ログサイズに問題がない場合は、max_log_fileまたはnum_logsを増やして、より多くの履歴を保持することもできます。 ログ形式を直接読み取る必要はありませんaureport および ausearch

2
Esa Jokinen