في خوادم Linux، تعتبر مراقبة أمان الملفات الحرجة وحمايتها من التغييرات غير المصرح بها أمرًا بالغ الأهمية. هنا يأتي دور auditd، وهي آلية تدقيق قوية مقدمة من نواة Linux. يقوم auditd بتسجيل التغييرات في الملفات واستدعاءات النظام وإجراءات المستخدمين بتفصيل. في هذا الدليل، سنشرح خطوة بخطوة كيفية استخدام auditd لمراقبة تغييرات الملفات.
ما هو Auditd ولماذا هو مهم؟
auditd هي خدمة تقوم بجمع وإدارة سجلات التدقيق في أنظمة Linux. إنها مثالية لمراقبة التغييرات في الملفات الحساسة مثل /etc/passwd و /etc/shadow و /etc/ssh/sshd_config. إذا قام مهاجم بتعديل هذه الملفات، يمكنك من خلال auditd اكتشاف الحادث ومعرفة من قام بالتغيير ومتى وكيف. هذا يتيح الكشف المبكر عن الاختراقات الأمنية.
التثبيت والتكوين الأولي
في معظم توزيعات Linux، يكون auditd مثبتًا بشكل افتراضي. إذا لم يكن مثبتًا، يمكنك تثبيته باستخدام الأوامر التالية:
sudo apt install auditd audispd-plugins # لأنظمة Debian/Ubuntu
sudo yum install audit audit-libs # لأنظمة RHEL/CentOS
بعد التثبيت، قم بتشغيل الخدمة وجعلها تبدأ تلقائيًا مع النظام:
sudo systemctl enable auditd
sudo systemctl start auditd
الآن auditd يعمل. ملف التكوين الأساسي هو /etc/audit/auditd.conf. يمكنك تعديل إعدادات مثل حجم السجل وفترة الاحتفاظ به.
قواعد مراقبة تغييرات الملفات
أضف القواعد كملفات بامتداد .rules داخل الدليل /etc/audit/rules.d/. على سبيل المثال، لمراقبة التغييرات في ملف /etc/passwd:
sudo nano /etc/audit/rules.d/watch-passwd.rules
ضع القاعدة التالية:
-w /etc/passwd -p wa -k passwd_changes
في هذه القاعدة: -w تحدد الملف المراقب، -p wa تعني مراقبة الكتابة وتغيير السمات (write, attribute)، و -k تحدد كلمة مفتاحية. وبالمثل لملف /etc/shadow:
-w /etc/shadow -p wa -k shadow_changes
لتحميل القواعد، أعد تشغيل auditd:
sudo systemctl restart auditd
يمكنك أيضًا مراقبة دليل معين. على سبيل المثال:
-w /etc/ssh -p wa -k ssh_config_changes
عرض السجلات وتحليلها
تُحفظ السجلات في ملف /var/log/audit/audit.log. يمكنك الاستعلام باستخدام أدوات ausearch و aureport. على سبيل المثال، لعرض السجلات المرتبطة بالكلمة المفتاحية passwd_changes:
sudo ausearch -k passwd_changes
المخرجات مفصلة للغاية؛ كل حدث يحتوي على النوع (syscall)، المستخدم (uid)، العملية (pid)، الطابع الزمني والنتيجة (success/fail). مثال لسطر:
type=SYSCALL msg=audit(1609459200.123:456): arch=c000003e syscall=2 success=yes exit=0 ... uid=1000 comm="vim" ... key="passwd_changes"
هذا يوضح أن المستخدم ذا UID 1000 فتح الملف باستخدام vim. يمكنك الحصول على تقارير موجزة باستخدام aureport:
sudo aureport -k -i
سيناريوهات نموذجية
1. تغيير غير مصرح به في إعدادات SSH: إذا قام مهاجم بتعديل ملف /etc/ssh/sshd_config للسماح بتسجيل الدخول كجذر، فإن auditd يسجل التغيير فورًا. يمكنك التحقق باستخدام ausearch -k ssh_config_changes.
2. مراقبة الملفات الثنائية للنظام: يمكن مراقبة المسارات الحرجة مثل /usr/bin أو /usr/sbin. على سبيل المثال:
-w /usr/bin -p wa -k binary_changes
لكن هذا قد ينتج عنه سجلات كثيرة؛ لذا من الأفضل مراقبة ملفات محددة فقط.
3. تدوير السجلات والاحتفاظ بها: يمكن ضبط حجم السجل وعدد ملفات السجل عبر المعاملات max_log_file و num_logs في ملف auditd.conf. على سبيل المثال، للاحتفاظ بـ 5 ملفات سجل بحجم 50 ميغابايت لكل منها:
max_log_file = 50
num_logs = 5
الخلاصة
يعد auditd أداة لا غنى عنها لمراقبة تغييرات الملفات على خوادم Linux. باستخدام القواعد الصحيحة، يمكنك اكتشاف الهجمات مبكرًا وتوفير الأدلة اللازمة للتحليل الجنائي. تذكر أن السجلات تحتاج إلى مراجعة منتظمة. يمكنك تعزيز العملية عن طريق إعداد أنظمة تنبيه تلقائية (مثل التوجيه إلى syslog باستخدام audispd). في HostingServer.com.tr، نوصي باستخدام auditd لتعزيز أمان خادمك.