私のサーバーはcentos7.6で、auditd 2.8.5です。
監査ルールでは、次のように設定しました。-a always,exit -F Arch=b32 -S adjtimex,settimeofday -F key=time-change
しかし、このルールは通常のntpd
アクティビティも記録するので、このルールを次のように修正しようとしました:
-a always,exit -F Arch=b32 -S adjtimex,settimeofday,stime -F subj_type!=ntpd_t -F auid!=chrony -F auid!=ntp -F auid!=chrony -F auid!=ntp -F key=time-change
auid!=ntp
またはuid!=ntp
を使用する必要がありますか?私は manual を確認しました:
各フィールド間方程式は互いに監査され、-Fで始まる方程式は監査レコードをトリガーします。 2つの演算子がサポートされています-等しい、および等しくない。有効なフィールドは、uid、uid、euid、suid、fsuid、obj_uid、gid、egid、sgid、fsgid、obj_gidです。
私は混乱しています、auditctl
のauid、uid、euid、suid、fsuid、obj_uid、gid、egid、sgid、fsgid、obj_gidの違いは何ですか?
監査マニュアルは、POSIXセキュリティモデルと多くのタイプのuidに精通していることを前提としています。 man credentials を読んで、これについてよく理解してください。ただし、これは不完全なため、残りについては セキュリティガイド を参照してください。特に:
監査
監査ユーザーIDを記録します。このIDはログイン時にユーザーに割り当てられ、ユーザーのIDが変更された場合でも(たとえば、su-johnでユーザーアカウントを切り替えることによって)すべてのプロセスに継承されます。
ルールとその例外は、効率を上げるために1行で記述できます。ただし、より単純なルールから始めることもあります。理解しやすく、例をつなぎ合わせます。
auditdには、時間の変更を監査し、chronydを無視するためのルール例が付属しています。 /usr/share/doc/audit*/rules/22-ignore-chrony.rules
を見てください。
## This rule suppresses the time-change event when chrony does time updates
-a never,exit -F Arch=b64 -S adjtimex -F auid=unset -Fuid=chrony -F subj_type=chronyd_t
-a never,exit -F Arch=b32 -S adjtimex -F auid=unset -Fuid=chrony -F subj_type=chronyd_t
「64ビットプラットフォームで、adjtimex呼び出しの場合、(ログインシェルではなく)監査UIDが存在せず、ユーザー名がchronyであり、SELinuxコンテキストがchronyd_tであり、ログに記録しない。」
実際、その例にはバグがあるかもしれません。 systemdの下でchronydを実行し、30-pci-dss-v31.rules
のルール例を使用して、監査イベントをuid 0として検出しました。
type=SYSCALL msg=audit(1552670692.891:1067): Arch=c000003e syscall=159 success=yes exit=5 a0=7ffe0d94ae10 a1=0 a2=55e857a3af60 a3=0 items=0 ppid=1 pid=6487 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="chronyd" exe="/usr/sbin/chronyd" subj=system_u:system_r:chronyd_t:s0 key="10.4.2b-time-change"
psは、ユーザーchronyとして、またchronyd_tコンテキストで実行されていることを報告します。したがって、これは制限されていますが、auditdはsystemdがrootとしてどのように起動したかを反映しています。
条件-F auid=unset -F subj_type=chronyd_t
を試してください。ログインシェルからではなく、正しいコンテキストで十分です。
(このサブシステムには癖があります。私がauid = 4294967295をunsetに翻訳できた唯一の場所は メーリングリスト です。)