أهلاً بكم يا مهندسي الأنظمة!
اليوم بنتكلم عن موضوع مهم جداً لأي مسؤول أنظمة لينكس: اكتشاف التطفل. مو بس نكتشفه، بنستخدم أدوات قوية مثل Fail2Ban و AIDE عشان نحمي سيرفراتنا ونعرف وش قاعد يصير فيها.
أولاً: Fail2Ban - الحارس الذكي
Fail2Ban أداة رهيبة تراقب ملفات السجلات (logs) وتدور على محاولات اختراق متكررة، مثل محاولات تسجيل الدخول الفاشلة على SSH أو محاولات الوصول لخدمات الويب بشكل غير مشروع. لما يكتشف محاولات مشبوهة، يقوم Fail2Ban بحظر عنوان IP المصدر لفترة معينة باستخدام جدار الحماية (iptables أو firewalld).
التثبيت (Installation)
عادةً، Fail2Ban موجود في مستودعات التوزيعات المختلفة:
# على أنظمة Debian/Ubuntu
sudo apt update
sudo apt install fail2ban
# على أنظمة CentOS/RHEL
sudo dnf install epel-release
sudo dnf install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
الإعدادات الأساسية (Basic Configuration)
الملف الرئيسي للإعدادات هو /etc/fail2ban/jail.conf، لكن الأفضل إنك ما تعدل عليه مباشرة. بدلاً من ذلك، سوي ملف اسمه jail.local في نفس المجلد عشان تكون تعديلاتك محفوظة وما تروح مع تحديثات الحزمة.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
داخل jail.local، بتلاقي قسم [DEFAULT]. هنا تقدر تحط إعدادات عامة زي:
bantime: المدة اللي ينحظر فيها الـ IP (بالثواني). مثلاً،bantime = 10mيعني 10 دقائق.findtime: المدة اللي يراقبها Fail2Ban عشان يكتشف المحاولات الفاشلة قبل ما يحظر (بالثواني). مثلاً،findtime = 10m.maxretry: عدد المحاولات الفاشلة قبل الحظر. مثلاً،maxretry = 5.
[DEFAULT]
# مدة الحظر (10 دقائق)
bantime = 10m
# عدد المحاولات الفاشلة قبل الحظر
maxretry = 5
# المدة اللي يتم فيها تجميع المحاولات (10 دقائق)
findtime = 10m
# الإجراء الافتراضي (حظر باستخدام iptables)
action = %(action_mwl)s
بعدين، بتلاقي أقسام خاصة بكل خدمة (jails). مثلاً، عشان تحمي SSH، ابحث عن قسم [sshd] وتأكد إنه enabled = true:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
بعد أي تغيير، لازم تعيد تشغيل Fail2Ban:
sudo systemctl restart fail2ban
مراقبة Fail2Ban
عشان تشوف حالة Fail2Ban والـ IPs المحظورة:
sudo fail2ban-client status
sudo fail2ban-client status sshd
ملاحظة: لا تنسى تضيف عنوان IP الخاص بك إلى قائمة التجاهل (
ignoreip) في ملفjail.localعشان ما تنحظر بالغلط!ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
ثانياً: AIDE - مدقق سلامة الملفات
AIDE (Advanced Intrusion Detection Environment) أداة قوية جداً لمراقبة سلامة الملفات والدلائل (File and Directory Integrity Checker). الفكرة الأساسية هي إنه يسوي "بصمة" (hash) لكل الملفات المهمة على نظامك، ويخزنها في قاعدة بيانات آمنة. بعدين، بشكل دوري، يقارن الحالة الحالية للملفات بالبصمات المخزنة. إذا لقى أي تغيير (إضافة، حذف، تعديل)، بيبلغك فوراً. هذا يساعدك تكتشف أي ملفات تم تعديلها أو إضافتها من قبل متطفل.
التثبيت (Installation)
تثبيت AIDE سهل على معظم التوزيعات:
# على أنظمة Debian/Ubuntu
sudo apt update
sudo apt install aide aide-common
# على أنظمة CentOS/RHEL
sudo dnf install aide
إنشاء قاعدة البيانات الأولية (Initial Database Generation)
هذي أهم خطوة. لازم تسويها والنظام في أنظف حالاته (يعني ما فيه أي تطفل). هذا الكوماند بيسوي قاعدة البيانات الأولية:
sudo aide --init
بعد ما يخلص، بيسوي ملف اسمه aide.db.new في مسار الإعدادات (غالباً /var/lib/aide/aide.db.new.gz). لازم تعيد تسميته للملف الأساسي عشان AIDE يقدر يستخدمه:
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
ملاحظة هامة جداً: بعد إنشاء قاعدة البيانات الأولية، من الأفضل إنك تنسخها لمكان آمن خارج السيرفر (مثل USB drive مشفر أو تخزين سحابي آمن) في حال تم اختراق السيرفر بالكامل وتعديل قاعدة بيانات AIDE.
الإعدادات (Configuration)
ملف الإعدادات الرئيسي هو /etc/aide/aide.conf. هذا الملف يحدد أي مسارات لازم AIDE يراقبها، وأي خصائص للملفات (مثل الصلاحيات، المالك، التوقيت، الـ hashes) لازم يركز عليها. عادةً، الإعدادات الافتراضية تكون جيدة كنقطة بداية، لكن ممكن تحتاج تعدلها حسب احتياجاتك.
مثلاً، هذا جزء من ملف الإعدادات يوضح كيف تحدد القواعد:
# تعريف مجموعات القواعد
# Perms: p = permissions, i = inode, n = num links, u = user, g = group, s = size, b = block count, a = atime, m = mtime, c = ctime
# Hashes: md5, sha1, sha256, sha512, rmd160, tiger
# Checksum: crc32, rmd160
NORMAL = p+i+n+u+g+s+b+m+c+acl+xattrs+sha512
DIR = p+i+n+u+g+acl+xattrs
VAR = p+i+n+u+g+s+b+m+c+acl+xattrs+sha512
# تعريف المسارات للمراقبة
/boot NORMAL
/etc NORMAL
/bin NORMAL
/sbin NORMAL
/usr NORMAL
/var/www VAR # مثال لموقع ويب
!/var/log # تجاهل ملفات السجل لأنها تتغير باستمرار
تشغيل فحص AIDE (Running an AIDE Check)
لتشغيل فحص يدوي ومقارنة الحالة الحالية بالبصمات المخزنة:
sudo aide --check
إذا لقى أي تغيير، بيوريك تقرير مفصل. إذا كل شيء تمام، بيوريك رسالة إنه ما لقى أي تغيير.
تحديث قاعدة البيانات (Updating the Database)
لما تسوي تحديثات للنظام، أو تثبت برامج جديدة، أو تعدل على ملفات إعدادات بشكل مقصود، AIDE بيشوف هذي التغييرات كـ "اختراق". عشان كذا، بعد أي تغييرات شرعية، لازم تحدث قاعدة بيانات AIDE:
sudo aide --update
هذا الكوماند بيسوي ملف aide.db.new.gz بقاعدة بيانات جديدة. لازم تنقله للملف الأساسي بعد ما تتأكد إن التغييرات شرعية:
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
جدولة الفحوصات (Scheduling Checks with Cron)
عشان تخلي AIDE يشتغل بشكل آلي، الأفضل إنك تجدوله باستخدام cron. مثلاً، تشغله مرة كل يوم أو مرة في الأسبوع. النتائج ممكن تنرسل لك بالإيميل.
sudo crontab -e
أضف السطر التالي (مثلاً، لتشغيل الفحص كل يوم الساعة 3 فجراً):
0 3 * * * /usr/bin/aide --check | mail -s "AIDE Integrity Check Report for $(hostname)" your_email@example.com
ملاحظة: تأكد إن برنامج إرسال الإيميل (مثل
postfixأوsendmail) شغال ومعدّ صح على سيرفرك عشان توصلك التقارير.
الخلاصة
Fail2Ban و AIDE أداتين تكملان بعضهما البعض بشكل ممتاز في استراتيجية اكتشاف التطفل. Fail2Ban يركز على منع الهجمات المتكررة على مستوى الشبكة، بينما AIDE يركز على الكشف عن أي تعديلات غير مصرح بها على مستوى الملفات داخل النظام. استخدامهم معاً بيعطيك طبقة دفاع قوية جداً وبيساعدك تكون على علم بأي نشاط مشبوه على سيرفراتك.
أتمنى يكون الدرس مفيد ومباشر. الآن، طبقوا اللي تعلمتوه وحموا أنظمتكم!