הגדרת ביקורת מערכת קבצים (auditd) בלינוקס

ללא auditd לא תדעו מי שינה קבצים קריטיים ומתי—יומנים רגילים לא לוכדים זאת. אנו מגדירים ביקורת מערכת קבצים על Linux כך שכל אירוע מתועד לפני שהוא קורה. הצוות שלנו מספק את הפרויקט במפתח מלא, מפיתוח כללים ועד ריכוז יומנים ותמיכה מתמשכת.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

ללא 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 = SUSPEND

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 = 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 שלב אחר שלב

  1. התקן את חבילת auditd אם לא מותקנת מראש.
  2. הגדר את admin_space_left_action = SUSPEND עם /etc/audit/rules.d/99-compliance.rules.
  3. צור את קובץ הכללים augenrules --load עם התוכן שלמעלה.
  4. הרץ systemctl enable auditd והפעל הפעלה אוטומטית: auditctl -l.
  5. בדוק טעינה: /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 לתשתית שלך היום.

להבנה מעמיקה של מנגנון הביקורת בלינוקס, עיין ב-תיעוד רשמי או ב-ויקיפדיה.