
14,956개의 MITRE ATT&CK 매핑 규칙, Ansible 배포 역할, 보안 모니터링 및 규정 준수 감사를 위한 lint/test 도구를 갖춘 모범 사례 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. 이 파일의 모든 규칙은 주석 처리되어 있으므로 기본적으로 비활성화되어 있습니다. 헤더에 한 번에 하나의 블록을 활성화하는 방법이 설명되어 있습니다. |
ndaal/ | 두 파일의 바이트 단위로 동일한 복사본. |
*.rules.sha-256 | sha256sum 형식의 SHA-256 사이드카. Ansible 역할은 모든 다운로드를 이들과 대조하여 확인합니다. 규칙 파일을 편집한 후 tools/update_rules_checksums.sh를 실행하여 재생성하십시오. |
tools/key-decisions.tsv | 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 |
sudo 및 화면 잠금의 비밀번호 검사인 unix_chkpwd는 사용자의 감사 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 키가 다시 나타납니다.
커널은 이벤트와 일치하는 가장 먼저 로드된 규칙의 키를 첨부합니다. 이는 시스템 호출 규칙과 경로 감시 모두에 적용됩니다 (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 스크립트에 레이블을 지정하게 됩니다.
시스템 호출 인수는 잘못 읽기 쉽습니다. 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…)