
مجموعة قواعد Linux Auditd وفق أفضل الممارسات مع 14,956 قاعدة مرتبطة بـ MITRE ATT&CK، ودور نشر Ansible، وأدوات lint/test لمراقبة الأمان وتدقيق الامتثال.
يوفر هذا المستودع أفضل الممارسات الشاملة لإعداد ونشر Linux Audit Daemon (Auditd)، بما في ذلك مجموعة واسعة من قواعد التدقيق الأمني، ودور Ansible للنشر الآلي، والأدوات التي تختبر القواعد على نوى حقيقية.
التغييرات على مجموعة القواعد والدور والاختبارات مدرجة في CHANGELOG.md.
Auditd هو نظام تدقيق قوي لنظام Linux يوفر إمكانات شاملة لمراقبة النظام وتسجيله. وهو مصمم لتتبع الأحداث ذات الصلة بالأمان، وهو ضروري من أجل:
قواعد التدقيق الشاملة لدينا (/ndaal/audit_best_practices.rules أو /dataset/audit_best_practices.rules) مصممة لتلبية معايير أمنية وأفضل ممارسات متنوعة، بما في ذلك:
| الملف | المحتوى |
|---|---|
dataset/audit_best_practices.rules | مجموعة القواعد الرئيسية: 14,956 قاعدة نشطة مع 903 مفاتيح، مكتوبة كأزواج arch=b32/arch=b64. هذا هو الملف الذي يقوم دور Ansible بتنزيله. |
dataset/audit_best_practices_high_volume.rules | ملف مرافق يحتوي على المجموعة غير المفلترة: كل execve لمستخدم غير نظامي، وkill/tkill/tgkill وconnect الصادر. كل قاعدة فيه معلّقة، لذا الملف معطّل افتراضيًا. يشرح ترويسته كيفية تمكين كتلة واحدة في كل مرة. |
ndaal/ | نسخ متطابقة بايت ببايت من كلا الملفين. |
*.rules.sha-256 | ملفات SHA-256 جانبية بصيغة sha256sum. يتحقق دور Ansible من كل تنزيل مقابلها. بعد تعديل ملف قواعد، شغّل tools/update_rules_checksums.sh لإعادة توليدها. |
tools/key-decisions.tsv | قرار واحد لكل زوج تعارض مفاتيح، يُطبَّق بواسطة tools/resolve_key_collisions.py. |
القاعدة التي أثبت قياس أنها خاطئة تُعلَّق مع ملاحظة مؤرخة توضح السبب. لا يُحذف أي شيء، لذا يحتفظ الملف بتاريخ كل قرار.
المفتاح الذي يبدأ بمعرّف تقنية يتبع MITRE ATT&CK Enterprise 19.2. ألغت ATT&CK v19 ستة معرّفات كان الملف يستخدمها. في 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.004_Disable_or_Modify_Tools_Disable_or_Modify_Linux_Audit_System_Log، وهي التقنية الفرعية v19 لسجل التدقيق نفسه، بدلاً من T1685.006. الملاحظات المؤرخة المكتوبة قبل إعادة التسمية، والقواعد المعلّقة التي تشرحها، تحتفظ بالأسماء القديمة.
أيضًا في 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 وأقفال الشاشة، يقرأ /etc/shadow بمعرّف التدقيق الخاص بالشخص، لذا يصل كل فحص لكلمة المرور الآن كـ T1003.008. فلتر exe=/usr/sbin/unix_chkpwd في قاعدة SIEM الخاصة باستخراج بيانات الاعتماد. القواعد الـ 34 الأخرى التي تحمل مفتاحًا بصيغة T1234_567 لم تسمِّ أي سجل قط، لأن قاعدة أسبق تطابق نفس الأحداث. وهي معلّقة مع ملاحظة تسمّي تلك القاعدة.
استدعاءات 32-بت لـ kexec_load وcapset وperf_event_open وsemtimedop_time64 تحمل الآن KEXEC وcapability_change_ebpf وperf_event_ebpf وT1559_Inter-Process_Communication بدلاً من 32bit_abi. مراقبة 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: كل execve لجلسة تسجيل دخول (auid>=500، auid!=-1) لم تطالب بها أي مراقبة ولا أي قاعدة رفع صلاحياتprocmon: كل execve المتبقي (الخدمات الخلفية، cron، الإقلاع)setres*/setfs* وstime وumount 32-بت على مستوى المضيفnetwork_changes (كل socket وsetsockopt) وelasticsearch-bind-success (كل bind ناجح)32bit_abi: -S all لـ arch=b32، دائمًا آخر قاعدة -a في الملفأضف كل قاعدة جديدة فوق هذه الكتلة. يُفشل tools/auditd-rules-lint.sh أي ملف تتحرك فيه قاعدة التقاط شامل إلى الأعلى: يبلّغ عن حجب المفاتيح وعن قاعدة -S all ليست الأخيرة.
القاعدة نفسها تحدد من يسمّي عملية تثبيت. تعمل عملية التثبيت كـ root، وقواعد execve الخاصة بـ euid=0 وauid!=uid في قسم الأوامر المميزة تأخذ كل تنفيذ root (T1548.001). لذا تقف مديرو الحزم (rpm وdnf وYaST/Zypper وdpkg وAPT وPacman وAPK) فوق ذلك القسم، مثل كتلة Ceph: تحمل عملية التثبيت T1072_Software_Deployment_Tools، ولا يزال السجل يُظهر euid=0 ومعرّف التدقيق الخاص بالشخص. حتى 2026-09-27 كانت تقف تحته ولم تسمِّ أي عملية تثبيت قط. يبقى pip وconda وnpm في الأسفل: قسم Python يراقب المفسّرات أيضًا، وهناك في الأعلى ستمنح مراقبة مفسّر مفتاحًا لكل سكربت Python يشغّله root.
من السهل إساءة قراءة وسائط استدعاءات النظام. في bind()، a0 هو واصف الملف، وليس المنفذ. قواعد bind -F a0=<port> الـ 42 السابقة كانت تطابق أرقام الواصفات، لذا فهي معطّلة.