
MITRE ATT&CK にマッピングされた 14,956 件のルール、Ansible デプロイメントロール、セキュリティ監視とコンプライアンス監査のための lint/テストツールを備えたベストプラクティスの Linux Auditd ルールセット。
このリポジトリは、Linux Audit Daemon (Auditd) の設定とデプロイに関する包括的なベストプラクティスを提供します。これには、セキュリティに焦点を当てた広範な監査ルールセット、自動デプロイ用の Ansible ロール、および実際のカーネル上でルールをテストするツールが含まれます。
ルールセット、ロール、テストへの変更は CHANGELOG.md に記載されています。
Auditd は、包括的なシステム監視とログ記録機能を提供する強力な Linux 監査システムです。セキュリティに関連するイベントを追跡するように設計されており、以下に不可欠です:
当社の包括的な監査ルール (/ndaal/audit_best_practices.rules または /dataset/audit_best_practices.rules) は、以下を含むさまざまなセキュリティ標準とベストプラクティスを満たすように設計されています:
| ファイル | 内容 |
|---|---|
dataset/audit_best_practices.rules | メインのルールセット:903 個のキーを持つ 14,956 個のアクティブなルール。arch=b32/arch=b64 のペアとして記述されています。これは Ansible ロールがダウンロードするファイルです。 |
dataset/audit_best_practices_high_volume.rules | フィルタリングされていないコレクションを含むコンパニオンファイル:非システムユーザーのすべての execve、kill/tkill/tgkill、および外向きの connect。このファイル内のすべてのルールはコメントアウトされているため、デフォルトでは無効です。そのヘッダーには、一度に 1 つのブロックを有効にする方法が説明されています。 |
ndaal/ | 両方のファイルのバイト単位で同一のコピー。 |
*.rules.sha-256 | sha256sum 形式の SHA-256 サイドカー。Ansible ロールはすべてのダウンロードをこれらと照合します。ルールファイルを編集した後は、tools/update_rules_checksums.sh を実行して再生成してください。 |
tools/key-decisions.tsv | キーの衝突ペアごとに 1 つの決定。tools/resolve_key_collisions.py によって適用されます。 |
測定によって誤りであることが証明されたルールは、理由を示す日付入りの注記とともにコメントアウトされます。何も削除されないため、ファイルは各決定の履歴を保持します。
テクニック ID で始まるキーは MITRE ATT&CK Enterprise 19.2 に従います。ATT&CK v19 は、このファイルが使用していた 6 つの ID を取り消しました。2026-09-27 に、それらのキーは MITRE が指定する後継のキーに名前が変更されました。古いキーを使用しているすべての SIEM クエリとアラートを変更してください:
| 古いキー | 新しいキー |
|---|---|
T1562.001_Impair_Defenses_Disable_or_Modify_Tools | T1685_Disable_or_Modify_Tools |
T1562.004_Impair_Defenses_Disable_or_Modify_System_Firewall | T1686_Disable_or_Modify_System_Firewall |
T1070.002_Indicator_Removal_Clear_Linux_or_Mac_System_Logs | T1685.006_Disable_or_Modify_Tools_Clear_Linux_or_Mac_System_Logs |
T1107_File_Deletion | T1070.004_Indicator_Removal_File_Deletion |
T1169_Sudo | T1548.003_Abuse_Elevation_Control_Mechanism_Sudo_and_Sudo_Caching |
T1079_Multilayer_Encryption | T1573_Encrypted_Channel |
/var/log/audit/ の監視は、T1685.006 ではなく、監査ログ自体に対する v19 のサブテクニックである T1685.004_Disable_or_Modify_Tools_Disable_or_Modify_Linux_Audit_System_Log を持ちます。名前変更より前に書かれた日付入りの注記、およびそれらが説明するコメントアウトされたルールは、古い名前を保持します。
また 2026-09-27 に、誤ったテクニックを指定していたキーが修正されました。これらのルールの SIEM クエリとアラートも変更してください:
| ルール | 古いキー | 新しいキー |
|---|---|---|
/etc/passwd への書き込みと属性変更 (新しいペア。読み取りは T1087 を保持) | T1087_Account_Discovery | T1098_Account_Manipulation |
/etc/shadow への書き込みと属性変更 | T1087_Account_Discovery | T1098_Account_Manipulation |
人物による /etc/shadow の読み取り | T1087_Account_Discovery | T1003.008_OS_Credential_Dumping_etc_passwd_and_etc_shadow |
/etc/ssh/sshd_config | T1021_Remote_Services | T1021.004_Remote_Services_SSH |
/root/.ssh/authorized_keys | T1021_Remote_Services | T1098.004_Account_Manipulation_SSH_Authorized_Keys |
/etc/systemd/system/ | T1053.006_Scheduled_Task_Systemd_Timers | T1543.002_Create_or_Modify_System_Process_Systemd_Service |
date | T1083_File_and_Directory_Discovery | T1124_System_Time_Discovery |
| Python インタープリタ (pip、pipx、conda、npm は T1072 を保持) | T1072_Software_Deployment_Tools | T1059.006_Command_and_Scripting_Interpreter_Python |
| 人物によって実行される mysql と psql | T1213_002_database_access | T1213.006_Data_from_Information_Repositories_Databases |
/etc/group への書き込みと属性変更 | T1087_Account_Discovery | T1098_Account_Manipulation |
/etc/gshadow への書き込みと属性変更 (新しいペア。読み取りは T1087 を保持) | T1087_Account_Discovery | T1098_Account_Manipulation |
/usr/lib/systemd/system/ (/run/systemd/transient/ は T1053.006 を保持) | T1053.006_Scheduled_Task_Systemd_Timers | T1543.002_Create_or_Modify_System_Process_Systemd_Service |
/home/vagrant/.ssh/authorized_keys | T1021_Remote_Services | T1098.004_Account_Manipulation_SSH_Authorized_Keys |
/var/log/tomcat10/ への書き込み、64 ビット (タイポ) | tomcattomcat | tomcat |
/etc/mandiant/ への書き込み、32 ビット (タイポ) | mmandiant_config | mandiant_config |
unix_chkpwd は、sudo とスクリーンロックのパスワードチェックであり、人物の監査 ID で /etc/shadow を読み取るため、各パスワードチェックは T1003.008 として到着するようになりました。認証情報ダンプの SIEM ルールで exe=/usr/sbin/unix_chkpwd をフィルタリングしてください。T1234_567 の綴りでキーを持つ他の 34 個のルールは、以前のルールが同じイベントに一致するため、レコードにラベルを付けることはありませんでした。それらは、そのルールを名指しする注記とともにコメントアウトされています。
kexec_load、capset、perf_event_open、semtimedop_time64 の 32 ビット呼び出しは、32bit_abi ではなく KEXEC、capability_change_ebpf、perf_event_ebpf、T1559_Inter-Process_Communication を持つようになりました。データディレクトリ全体に対する elasticsearch-data 監視は、両方の ABI で無効になっています。その警告によりオプトインとなっています。64 ビットホストでは、それまで取得していた elasticsearch-nodes と elasticsearch-data-deletion のキーが再び現れます。
カーネルは、イベントに一致する最も早くロードされたルールのキーを付加します。これは syscall ルールとパス監視の両方に当てはまります (kernel/auditfilter.c、kernel/auditsc.c)。したがって、早い段階に配置された広範なルールは、それ以降のすべての特定のルールからキーを奪います。2026-09-20 まで、フィルタリングされていない procmon execve ルールは 1,575 行目にあり、368 個のキーがレコードに現れることはありませんでした。
キャッチオールルールは現在、この順序でファイルを締めくくります:
user_exec:監視と昇格ルールのいずれも要求していない、ログインセッション (auid>=500、auid!=-1) のすべての execveprocmon:残りのすべての execve (デーモン、cron、ブート)setres*/setfs*、stime、および 32 ビットの umount ルールnetwork_changes (すべての socket と setsockopt) と elasticsearch-bind-success (すべての成功した bind)32bit_abi:arch=b32 に対する -S all。常にファイルの最後の -a ルール新しいルールはすべてこのブロックの上に追加してください。tools/auditd-rules-lint.sh は、キャッチオールが上に移動したファイルを失敗とします:キーのシャドーイングと、最後でない -S all ルールを報告します。
同じルールが、インストールにラベルを付ける者を決定します。インストールは root として実行され、特権コマンドセクションの euid=0 および auid!=uid の execve ルールがすべての root 実行 (T1548.001) を取得します。したがって、パッケージマネージャー (rpm、dnf、YaST/Zypper、dpkg と APT、Pacman、APK) は、Ceph ブロックと同様に、そのセクションの上に位置します:インストールは T1072_Software_Deployment_Tools を持ち、レコードには依然として euid=0 と人物の監査 ID が表示されます。2026-09-27 まで、それらはその下に位置し、インストールにラベルを付けることはありませんでした。pip、conda、npm は下に留まります:Python セクションもインタープリタを監視しており、その上ではインタープリタ監視が root の実行するすべての Python スクリプトにラベルを付けてしまうからです。
Syscall の引数は誤読しやすいものです。bind() では、a0 はファイルディスクリプタであり、ポートではありません。以前の 42 個の bind -F a0=<port> ルールはディスクリプタ番号に一致していたため、無効化されています。
T1068_Exploitation_for_Privilege_Escalation_AF_ALG:
a0=38 (AF_ALG) を持つ socketa2=88 (sockaddr_alg のサイズ) を持つ binda1=279 (SOL_ALG) を持つ setsockopt-S splice -F a0=0x3 -F a2=0x5 -F a3=0x0、キーは dirtypipe_CVE-2022-0847-S splice -F a1!=0、キーは T1068_Exploitation_for_Privilege_Escalation_splice_file_to_pipe。ディスクリプタ番号に関係なく、明示的なオフセットでパイプにコピーされたファイルを捕捉します。user_exec (上記参照)。ログインセッションとデーモンを区別します。レコード数は変わりません。sbom_tools Ansible ロールのパスベースのルール (syft、cdxgen、cargo-sbom、tern、grype、trivy、osv-scanner、bomber、bitvex、bomdrift、shieldbom、inspektr_cli、provenant、ORT、および jaq と sha3sum)。ロールのデフォルトレイアウト:
/opt/ndaal/sbom-tools/bin、/usr/local/bin、または /usr/bin からの各ツールの実行 (T1518.001_Security_Software_Discovery)T1554_Compromise_Host_Software_Binary) とその設定への書き込み (T1685_Disable_or_Modify_Tools)T1565.001…)T1070.004…)、および人物による SBOM とレポートの読み取り (T1005…)