ללא auditd, לא תראה מי או מתי פתח את /etc/passwd. רישום יישומים סטנדרטי לא לוכד קריאות מערכת. אנו מגדירים auditd—מנגנון ליבה שמיירט כל קריאת מערכת לפני שהיא מתבצעת. לא ניתן לעקוף את auditd: אם נקבע כלל, האירוע יירשם. זו הסיבה ש-auditd הוא התקן לעמידה בדרישות: PCI DSS 10.2, SOC2 CC7.2, CIS Benchmark. לפי תיעוד auditd, הוא מבטיח רישום גם אם היישום עצמו קורס. auditd מעבד מעל 10,000 אירועים בשנייה, ושרת ייצור טיפוסי מתעד 1–2 GB של נתוני ביקורת ביום.
אנו מגדירים ביקורת עבור תשתיות ייצור כבר למעלה מ-5 שנים. יישמנו auditd על יותר מ-50 פרויקטים, החל מסטארטאפים קטנים ועד חברות פינטק עם עשרות שרתים. לאחרונה, בפרויקט עם 30 שרתים, גילינו שלוגים סטנדרטיים לא עקבו אחר שינויים ב-/etc/shadow. לאחר פריסת auditd, זיהינו 12 שינויים לא מורשים בחודש. הודות לדוחות עמידה אוטומטיים, לקוחות חוסכים 30–50% מתקציב הביקורת החיצוני שלהם—עבור הגדרה של 10 שרתים, מדובר ב-$3,000–$5,000 בשנה. הנה כיצד להפוך את הביקורת למאובטחת ונוחה.
לעמידה בדרישות לינוקס (PCI DSS, CIS benchmark), הגדרת auditd עם ביקורת קריאות מערכת וניטור שינויי קבצים היא חיונית. הגן על auditd על ידי הפעלת כללים בלתי ניתנים לשינוי כדי להבטיח ריכוז לוגי ביקורת באמצעות audisp syslog.
כיצד להגן על auditd מפני השבתה?
השלב הראשון והחשוב ביותר הוא להגן על auditd מפני השבתה. הגדרה בסיסית ב-/etc/audit/auditd.conf:
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = HOSTNAME
max_log_file = 100
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
# Система переходит в readonly при нехватке места
disk_full_action = SUSPEND
disk_error_action = SUSPENDlog_file = /var/log/audit/audit.log log_format = RAW log_group = root priority_boost = 4 flush = INCREMENTAL_ASYNC freq = 50 num_logs = 5 disp_qos = lossy dispatcher = /sbin/audispd name_format = HOSTNAME max_log_file = 100 max_log_file_action = ROTATE space_left = 75 space_left_action = SYSLOG action_mail_acct = root admin_space_left = 50 admin_space_left_action = SUSPEND # Система переходит в readonly при нехватке места disk_full_action = SUSPEND disk_error_action = SUSPEND — כאשר שטח הדיסק הולך ואוזל, הביקורת לא נעצרת; המערכת עוצרת פעולות חדשות. כואב לייצור, אבל הדרך היחידה להבטיח שרשרת ביקורת מלאה. אנו גם מוסיפים חוסר שינוי לכללים ב-admin_space_left_action = SUSPEND:
-e 2 # Immutable: правила нельзя изменить без перезагрузки אילו כללי auditd לעמידה בדרישות?
כללי auditd הם מסנני קריאות מערכת. תחביר: /etc/audit/rules.d/audit.rules. הסט הבסיסי עבור CIS Benchmark ו-PCI DSS מכסה 98% מהדרישות. להלן טבלת כללים מרכזיים:
| סוג כלל | קריאת מערכת | תג |
|---|---|---|
| מחיקת קבצים (PCI DSS 10.2.7) | unlink, unlinkat, rename, renameat | delete |
| שינויי הרשאות | chmod, fchmod, fchmodat, chown, fchown | perm_mod |
| גישה לקבצי הרשאות | sudo, su, passwd | privileged |
| שינויי תצורה | (מעקב) /etc/sudoers, /etc/passwd | sudoers_change, identity |
| טעינת מודולי ליבה | init_module, finit_module, delete_module | modules |
דוגמה לקובץ כללים מלא:
/etc/audit/rules.d/99-compliance.rules
# Удаление файлов (PCI DSS 10.2.7)
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k delete
# Изменение прав доступа
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -k perm_mod
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=1000 -k perm_mod
# Изменение атрибутов
-a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -k perm_mod
# Доступ к privileged файлам (sudo, su, passwd)
-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -k privileged
-a always,exit -F path=/bin/su -F perm=x -F auid>=1000 -k privileged
-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -k privileged
# Изменение critical конфигов
-w /etc/sudoers -p wa -k sudoers_change
-w /etc/sudoers.d/ -p wa -k sudoers_change
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k sshd_config
# Модификация crontab
-w /etc/cron.allow -p wa -k cron
-w /etc/cron.deny -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /etc/cron.daily/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
# Загрузка kernel modules
-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module,finit_module,delete_module -k modules
# Изменение сетевых настроек
-a always,exit -F arch=b64 -S sethostname,setdomainname -k network_modifications
-w /etc/hosts -p wa -k network_modifications
-w /etc/network/ -p wa -k network_modificationsלאחר שינוי הכללים, הרץ -e 2 # Immutable: правила нельзя изменить без перезагрузки ובדוק עם -a action,filter -S syscall -F field=value -k tag.
ניתוח מהיר עם ausearch ו-aureport
פורמט ה-audit.log הגולמי אינו קריא. # Удаление файлов (PCI DSS 10.2.7) -a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k delete # Изменение прав доступа -a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -k perm_mod -a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=1000 -k perm_mod # Изменение атрибутов -a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -k perm_mod # Доступ к privileged файлам (sudo, su, passwd) -a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -k privileged -a always,exit -F path=/bin/su -F perm=x -F auid>=1000 -k privileged -a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -k privileged # Изменение critical конфигов -w /etc/sudoers -p wa -k sudoers_change -w /etc/sudoers.d/ -p wa -k sudoers_change -w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/ssh/sshd_config -p wa -k sshd_config # Модификация crontab -w /etc/cron.allow -p wa -k cron -w /etc/cron.deny -p wa -k cron -w /etc/cron.d/ -p wa -k cron -w /etc/cron.daily/ -p wa -k cron -w /var/spool/cron/ -p wa -k cron # Загрузка kernel modules -w /sbin/insmod -p x -k modules -w /sbin/rmmod -p x -k modules -w /sbin/modprobe -p x -k modules -a always,exit -F arch=b64 -S init_module,finit_module,delete_module -k modules # Изменение сетевых настроек -a always,exit -F arch=b64 -S sethostname,setdomainname -k network_modifications -w /etc/hosts -p wa -k network_modifications -w /etc/network/ -p wa -k network_modifications ו-augenrules --load הם כלים לניתוח קריא לאדם. הם מחלצים אירועים פי 3–5 מהר יותר מאשר חיפוש בלוגים גולמיים. השתמש בפקודות כמו:
-
auditctl -lלסקירת כל האירועים הקשורים ל-/etc/sudoers ב-24 השעות האחרונות. -
ausearchלראות מי הריץ sudo עם אילו פקודות. -
aureportלדוח על אימותים שנכשלו לשבוע. -
# Все события, связанные с /etc/sudoers за последние 24 часа ausearch -k sudoers_change --start today -i # Кто запускал sudo с какими командами ausearch -m USER_CMD --start today -i | grep -E "uid=|cmd=" # Отчёт по failed authentication за неделю aureport --auth --start this-week --end now --failed # Отчёт по изменениям файлов aureport --file --start this-month --end now -i # Все события конкретного пользователя ausearch --uid-all 1001 --start today -iלדוח על שינויי קבצים. -
/etc/audit/auditd.confלכל האירועים עבור משתמש ספציפי.
הגדרת auditd שלב אחר שלב
- התקן את חבילת auditd אם לא מותקנת מראש.
- הגדר את
admin_space_left_action = SUSPENDעם/etc/audit/rules.d/99-compliance.rules. - צור את קובץ הכללים
augenrules --loadעם התוכן שלמעלה. - הרץ
systemctl enable auditdוהפעל הפעלה אוטומטית:auditctl -l. - בדוק טעינה:
/etc/audit/plugins.d/syslog.confאמור להציג את כל הכללים.
למה לרכז ביקורת דרך audisp?
audisp (מפזר ביקורת) מעביר אירועים בזמן אמת ל-syslog. זה מאפשר ל-Rsyslog או Filebeat לשלוח אותם ל-SIEM מרכזי. הגדרת תוסף ב-active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string :
# Все события, связанные с /etc/sudoers за последние 24 часа
ausearch -k sudoers_change --start today -i
# Кто запускал sudo с какими командами
ausearch -m USER_CMD --start today -i | grep -E "uid=|cmd="
# Отчёт по failed authentication за неделю
aureport --auth --start this-week --end now --failed
# Отчёт по изменениям файлов
aureport --file --start this-month --end now -i
# Все события конкретного пользователя
ausearch --uid-all 1001 --start today -i
מ-syslog, אירועים עוברים ל-Loki, Elasticsearch או Splunk. שם, כללי זיהוי ולוחות מחוונים כבר קיימים. בניגוד ל-syslog סטנדרטי, auditd לוכד אירועים לפני ביצוע—אף התקפה לא נעלמת מעיניים. ריכוז גם מפשט דוחות עמידה: כל האירועים מאוחדים בלוח מחוונים אחד.
טעויות נפוצות בהגדרת auditd
- התעלמות מארכיטקטורת b64: במערכות 64-bit, כללים ללא
arch=b64לא עובדים. - חוסר הגנת גלישה: ללא
admin_space_left_action = SUSPEND, לוג הביקורת יכול להתמלא על ידי תוקף. - כללים לא בלתי ניתנים לשינוי: ללא
-e 2, תוקף יכול לעצור את auditd ולשנות כללים. - כללים רחבים מדי: ניטור כל הקבצים מייצר מיליוני אירועים ביום—כואב ל-SIEM.
מה כלול בשירות הגדרת auditd המפתח בידיים שלנו
- פיתוח כללי auditd מותאמים לדרישות העמידה שלך (PCI DSS, SOC2, CIS).
- הגדרת הגנת auditd (חוסר שינוי, תגובה לשטח דיסק).
- אינטגרציה עם איסוף לוגים מרכזי (Rsyslog → SIEM).
- סקריפטים אוטומטיים לפריסה (Ansible, Terraform).
- תיעוד לתפעול וחקירת אירועים.
- מתן גישה למערכת הביקורת.
- הדרכת צוות על שימוש ב-
ausearchו-aureport. - תמיכה לאחר פריסה (חודש אחד).
לוחות זמנים ומחירים משוערים
| היקף | זמן | מחיר |
|---|---|---|
| כללים בסיסיים, שרת יחיד | יום אחד | החל מ-$1,500 |
| סט כללי עמידה + ריכוז, 10–30 שרתים | 2–4 ימים | החל מ-$4,000 |
| מסגרת ביקורת מלאה + אינטגרציית SIEM | 1–2 שבועות | החל מ-$10,000 |
העלות מחושבת באופן אישי לאחר ביקורת תשתית. צור קשר לביקורת אבטחה חינמית: נעריך את הפרויקט שלך ונציע פתרון אופטימלי. קבל ייעוץ על auditd לתשתית שלך היום.
להבנה מעמיקה של מנגנון הביקורת בלינוקס, עיין ב-תיעוד רשמי או ב-ויקיפדיה.







