تم اختراق الخادم: الاستجابة الطارئة والاستعادة
خطوات الاستجابة الطارئة عند اختراق خادمك: الكشف، العزل، التحليل الجنائي والتنظيف.
جدول المحتويات
مقدمة
اكتشاف أن خادمك قد تم اختراقه هو موقف مرهق، لكن باتباع الخطوات الصحيحة يمكنك تقليل الضرر واستعادة نظامك. في هذا الدليل، سنغطي العملية بأكملها من كشف الاختراق إلى التنظيف وتعزيز الأمان.
علامات الاختراق
المؤشرات الشائعة لاختراق الخادم:
- عمليات أو خدمات غير معروفة تعمل
- استخدام غير طبيعي لـ CPU/RAM (تعدين العملات المشفرة)
- إنشاء حسابات مستخدمين غير معروفة
- مفاتيح غير معروفة في ملفات SSH authorized_keys
- مهام غير معروفة في crontab
- ملفات نظام معدلة
- حركة شبكة صادرة غير طبيعية
- تشويه الموقع أو إعادة التوجيه
- إرسال بريد عشوائي
الخطوة 1: لا تصب بالذعر ووثّق
الخطوة الأولى والأهم هي البقاء هادئاً وتوثيق كل شيء:
# حفظ الحالة الحالية
date > /tmp/incident_$(date +%Y%m%d_%H%M%S).log
who >> /tmp/incident_*.log
w >> /tmp/incident_*.log
last -20 >> /tmp/incident_*.log
ps auxf >> /tmp/incident_*.log
netstat -tlnp >> /tmp/incident_*.log
ss -tlnp >> /tmp/incident_*.log
لا تقم بإيقاف تشغيل الخادم أو إعادة تشغيله فوراً! قد تُفقد الأدلة الجنائية. وثّق الحالة الحالية أولاً.
الخطوة 2: العزل
اعزل الخادم لمنع المهاجم من إحداث مزيد من الضرر:
عزل الشبكة
# حظر جميع الاتصالات الصادرة (باستثناء SSH)
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -j DROP
إنهاء الجلسات النشطة
# فحص جلسات SSH النشطة
who
w
# إنهاء الجلسات المشبوهة
sudo pkill -u مستخدم_مشبوه
الخطوة 3: التحليل الجنائي
فحص حسابات المستخدمين
# قائمة جميع المستخدمين
cat /etc/passwd | grep -v nologin | grep -v false
# فحص المستخدمين بـ UID 0 (صلاحيات root)
awk -F: '($3 == 0) {print}' /etc/passwd
# المستخدمون المنشأون حديثاً
ls -lt /home/
# المستخدمون بصلاحيات sudo
grep -v '^#' /etc/sudoers
ls -la /etc/sudoers.d/
# فحص SSH authorized_keys
for user_home in /home/*; do
if [ -f "$user_home/.ssh/authorized_keys" ]; then
echo "=== $user_home ==="
cat "$user_home/.ssh/authorized_keys"
fi
done
cat /root/.ssh/authorized_keys
تحليل العمليات
# عرض جميع العمليات الجارية بشكل شجري
ps auxf
# البحث عن عمليات مشبوهة
ps aux | grep -E '(mine|xmr|crypto|kinsing|kdevtmpfsi)'
# العمليات ذات الاستخدام العالي لـ CPU
top -b -n 1 | head -20
# فحص العمليات المخفية
ls -la /proc/*/exe 2>/dev/null | grep deleted
# فحص مسارات ملفات العمليات
ls -la /proc/[0-9]*/exe 2>/dev/null | grep -v '/usr\|/bin\|/sbin\|/lib'
فحص crontab
# crontab الجذر
crontab -l
# crontab جميع المستخدمين
for user in $(cut -f1 -d: /etc/passwd); do
crontab -l -u $user 2>/dev/null | grep -v '^#'
done
# مجلدات cron النظام
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
cat /etc/crontab
# مؤقتات systemd
systemctl list-timers --all
تحليل اتصالات الشبكة
# فحص الاتصالات النشطة
ss -tanp
netstat -tanp
# الاتصالات الصادرة
ss -tanp | grep ESTABLISHED | grep -v '127.0.0.1'
# المنافذ المستمعة
ss -tlnp
تحليل نظام الملفات
# الملفات المعدلة في آخر 24 ساعة
find / -mtime -1 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
# الملفات المنشأة في آخر 7 أيام
find / -ctime -7 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
# فحص ملفات SUID/SGID
find / -perm -4000 -type f 2>/dev/null
# ملفات مشبوهة في /tmp
ls -la /tmp/
ls -la /var/tmp/
ls -la /dev/shm/
تحليل السجلات
# محاولات تسجيل الدخول عبر SSH
grep 'Failed password' /var/log/auth.log | tail -50
grep 'Accepted' /var/log/auth.log | tail -50
# تسجيلات الدخول الناجحة عبر SSH
last -20
lastlog
# سجلات النظام
journalctl --since "24 hours ago" | grep -i -E '(error|warning|fail|denied)'
الخطوة 4: التنظيف
إيقاف العمليات الضارة
# إنهاء العمليات المشبوهة
sudo kill -9 <PID>
# البحث عن عمليات تعدين العملات المشفرة وإنهاؤها
sudo pkill -9 -f 'xmr\|mine\|crypto\|kinsing'
# تعطيل الخدمات المشبوهة
sudo systemctl stop خدمة_مشبوهة
sudo systemctl disable خدمة_مشبوهة
إزالة المستخدمين الضارين
# قفل المستخدم المشبوه
sudo usermod -L مستخدم_مشبوه
# حذف المستخدم
sudo userdel -r مستخدم_مشبوه
# تغيير كلمة مرور root
sudo passwd root
تنظيف مفاتيح SSH
# فحص وتنظيف جميع ملفات authorized_keys
find / -name authorized_keys -exec cat {} \;
# الاحتفاظ بمفتاحك فقط
echo "ssh-rsa مفتاحك" > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
الخطوة 5: تعزيز الأمان
أمان SSH
# /etc/ssh/sshd_config
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3
AllowUsers اسم_المستخدم
sudo systemctl restart sshd
تثبيت Fail2ban
sudo apt install fail2ban -y
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
findtime = 600
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
تحديث النظام
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt install unattended-upgrades -y
الخطوة 6: الاستعادة من النسخة الاحتياطية
إذا لم يكن التنظيف كافياً، قد تحتاج إلى تثبيت نظيف:
# 1. نسخ احتياطي للبيانات المهمة
tar -czf /tmp/backup_data.tar.gz /var/www/ /home/
# 2. إعادة تثبيت نظام التشغيل من لوحة REXE
# my.rexe.tr > الخدمات > إعادة تثبيت نظام التشغيل
# 3. تعزيز الأمان بعد التثبيت النظيف
# 4. استعادة ملفات البيانات فقط (ليس ملفات التكوين)
عند الاستعادة من النسخة الاحتياطية، لا تستعد ملفات التكوين! قد يكون المهاجم قد أضاف أبواباً خلفية.
الخلاصة
الاستجابة السريعة والمنهجية أمر بالغ الأهمية في حوادث اختراق الخوادم. اتبع خطوات التوثيق والعزل والتحليل الجنائي والتنظيف وتعزيز الأمان بالترتيب. لمنع حوادث مماثلة في المستقبل، قم بإجراء عمليات تدقيق أمنية منتظمة وطبّق ضوابط وصول قوية.
مقالات ذات صلة
مشكلة اتصال SSH: لا يمكن الاتصال بالخادم — الحل
دليل حل مشاكل اتصال SSH: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ SSH وخطوات استكشاف الأخطاء وإصلاحها.
مشكلة اتصال RDP: لا يمكن الاتصال بـ Windows Server
دليل حل مشاكل اتصال RDP: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ RDP وخطوات استكشاف الأخطاء وإصلاحها.
كيفية إجراء اختبار MTR وإرسال النتائج للدعم
دليل اختبار الشبكة باستخدام WinMTR وLinux MTR، إنشاء قاعدة فلترة ICMP وإرسال النتائج لفريق الدعم. تشخيص فقدان الحزم والتأخير في الشبكة.