サーバーをホストしている顧客の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
の追加ルールではないので、これは追加の問題です...
ログファイルで、これらの行の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"
ただし、ほとんどの場合、-F
はmsg=' '
の外側のフィールドに制限されており、正規表現を許可しない演算子-F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]
しかありません。
ログサイズに問題がない場合は、max_log_file
またはnum_logs
を増やして、より多くの履歴を保持することもできます。 ログ形式を直接読み取る必要はありませんaureport
および ausearch
。