تجيب مراقبة السلامة عن سؤال لا يجيب عنه مضاد الفيروسات ولا جدار الحماية: ما الذي تغيّر على هذا الخادم منذ الأسبوع الماضي. فماسح التواقيع يبحث عن سيّئ معروف؛ أما AIDE فلا يعرف شيئًا عن السوء، بل يعرف أن هذا الملف كان مختلفًا أمس. ولإيجاد باب خلفي أُلحق بملف موجود، هذا هو النهج الوحيد الذي يعمل.
يُثبَّت AIDE بأمرين. أما ضبطه بحيث تُقرأ تقاريره فهو الجزء الأصعب — وهو ما يقتله عادة: يصل التقرير الأول بعشرة آلاف سطر، ولا يفتح أحد الثاني، وبعد شهر تُحذف المهمة.
التثبيت وقاعدة البيانات الأولى
sudo apt install aide aide-common
sudo aideinit
تستغرق التهيئة من دقائق قليلة إلى نصف ساعة: إذ تُحسب البصمات لكل ملف. وتوضع النتيجة بجوار قاعدة العمل باللاحقة .new، ويجب وضعها موضع التنفيذ:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
ومن ثم يُشغَّل الفحص بـ:
sudo aide --check
ماذا تستثني كي يبقى التقرير مقروءًا
تعيش الإعدادات في /etc/aide/aide.conf وفي الدليل /etc/aide/aide.conf.d/. وإعداد Debian القياسي يفحص أكثر من اللازم، وأول ما ينبغي فعله هو إزالة ما يتغيّر من تلقاء نفسه باستمرار:
/var/log— يتغيّر كل ثانية؛/var/libبأكمله — قواعد البيانات، وحالة الحزم، وحالة الخدمات؛/var/cache،/tmp،/proc،/sys،/run؛- أدلة الرفع والتخزين المؤقت للموقع — فمحتواها يغيّره الزوّار.
وما يستحق الفحص بأشد الإعدادات صرامة قائمة ضيّقة:
/bin،/sbin،/usr/bin،/usr/sbin— ملفات النظام التنفيذية؛/lib،/usr/lib— المكتبات؛/etc— الإعدادات؛/root/.sshوأدلة.sshلمستخدميك؛- شيفرة الموقع، لكن دون أدلة الرفع والتخزين المؤقت.
والمعيار: ينبغي أن يتّسع التقرير اليومي العادي في شاشة واحدة. فإن كان أطول فالاستثناءات غير كافية وسيتوقف الناس عن قراءته.
أين تحتفظ بقاعدة البيانات
نقطة مهمة كثيرًا ما تُغفل. فإن كان لدى شخص آخر صلاحيات root، فلن يكلّفه شيئًا أن يستبدل ملفًا ثم يحدّث قاعدة AIDE فورًا — وسيبلّغ الفحص بعدها أن كل شيء على ما يرام. وقاعدة موجودة على الآلة نفسها وقابلة للكتابة لا تحمي إلا من الحوادث العرضية.
الحد الأدنى المعقول لخادم واحد:
- انسخ القاعدة إلى آلة أخرى بعد كل تحديث وشغّل الفحص بتلك النسخة موضوعة في مكانها؛
- أو على الأقل احتفظ بالمجموع الاختباري للقاعدة على حدة وتحقّق منه قبل الفحص:
sha256sum /var/lib/aide/aide.db
وحتى إجراء بهذه البساطة يحوّل استبدالًا صامتًا إلى حدث ملحوظ.
تحديث القاعدة فعل واعٍ
بعد تغييرات مشروعة — تحديث للنظام، أو نشر لنسخة جديدة من الموقع — يُعاد بناء القاعدة:
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
ومتى يجري ذلك أمر مهم. الصحيح: اقرأ التقرير، وتأكّد أن كل تغيير قابل للتفسير، ثم حدّث بعد ذلك فقط. والخطأ الشائع جدًا: تشغيل aide --update وفق جدول كي تخرج التقارير نظيفة. وفي الحالة الثانية يعمل النظام، وتصل التقارير، وتُسجَّل التغييرات كأمر طبيعي في اللحظة نفسها التي تقع فيها — أي أن المعنى ضاع تمامًا.
الجدولة والحمل
تثبّت الحزمة aide-common مهمة يومية بنفسها. والفحص يحمّل القرص والمعالج لعدة دقائق، لذا يستحق تشغيله في ساعة هادئة وبأولوية منخفضة:
0 4 * * * ionice -c3 nice -n19 /usr/bin/aide --check
كيف يُقرأ التقرير
ثلاثة أقسام: ملفات مضافة ومحذوفة ومتغيّرة. ولكل تغيير يُبيَّن ما الذي يختلف بالضبط: المحتوى، والأذونات، والمالك، والوقت.
وما ينبغي الاستجابة له أولًا:
- تغيّر أي ملف في
/bin،/sbin،/usr/binخارج نافذة تحديث؛ - ملفات جديدة في أدلة النظام؛
- تغييرات في
authorized_keys،/etc/passwd،/etc/sudoers،/etc/crontabو/etc/cron.d؛ - ظهور ملف
/etc/ld.so.preload— فهو لا يظهر من تلقاء نفسه أبدًا.
ومئة ملف متغيّر بعد apt upgrade مباشرة أمر طبيعي، وطابع وقت التقرير يؤكد ذلك. أما ثلاثة ملفات متغيّرة في /usr/bin يوم أربعاء بلا أي تحديثات فهو سبب للتوقف والتحقيق.
AIDE و debsums
تعالج الأداتان مسألتين متجاورتين، لكن مرجعهما مختلف. فـ AIDE يقارن بلقطة خاصة بك — ولذلك يرى التغييرات في أي ملفات، بما فيها شيفرة الموقع. أما debsums فيقارن بالمجاميع الاختبارية من حزم التوزيعة — ولذلك يرى ملفات النظام المستبدلة دون أي إعداد مسبق إطلاقًا، لكنه لا يعرف شيئًا عمّا ثبّته خارج الحزم. ومن المعقول الاحتفاظ بكليهما؛ وعمليًا يأتي debsums أولًا عادة، لأنه لا يحتاج إعدادًا ولا قاعدة بيانات.
ولهما ضعف مشترك أيضًا: يصل التقرير بالبريد، والبريد يضيع. فالمهم ليس أن الفحص جرى بل أن يوجد مكان تُرى فيه نتيجته الأخيرة. وشكل ذلك تعرضه صفحة العرض التوضيحي أدناه.