انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

تصليب أمان الخادم: قائمة تحقق شاملة

دليل تصليب أمان خادم Linux: تقوية SSH، تعطيل تسجيل دخول root، Fail2Ban، التحديثات التلقائية، قواعد جدار الحماية والخدمات غير الضرورية.

وقت القراءة: 16 دقيقة إدارة الخادم
أمانتصليبhardeningsshfail2banجدار الحمايةlinuxقائمة تحقق

جدول المحتويات

تصليب أمان الخادم: قائمة تحقق شاملة

عند إعداد خادم Linux جديد، لا يكون الإعداد الافتراضي مُحسَّناً من الناحية الأمنية. يشمل تصليب الخادم تغييرات منهجية في الإعداد لتقليل سطح الهجوم وإغلاق الثغرات الأمنية. يوفر هذا الدليل قائمة تحقق أمنية شاملة لخوادم REXE.

لماذا تصليب الخادم؟

قد تحتوي تثبيتات Linux الافتراضية على:

  • خدمات غير ضرورية قيد التشغيل
  • SSH مفتوح للمصادقة بكلمة المرور
  • تسجيل دخول root مُفعَّل
  • قواعد جدار حماية بسيطة
  • تحديثات تلقائية معطّلة

لا تغلق اتصال SSH الحالي أثناء التصليب. بعد كل خطوة، اختبر الاتصال من طرفية جديدة.

✅ قائمة التحقق 1: تحديثات النظام

hljs bash
# تحديث النظام
sudo apt update && sudo apt upgrade -y

# تثبيت التحديثات الأمنية التلقائية
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

✅ قائمة التحقق 2: تقوية SSH

hljs bash
sudo nano /etc/ssh/sshd_config
# إعدادات أمان SSH

# تعطيل تسجيل دخول root
PermitRootLogin no

# تعطيل المصادقة بكلمة المرور (بعد إعداد مفتاح SSH)
PasswordAuthentication no

# عدم السماح بكلمات المرور الفارغة
PermitEmptyPasswords no

# تعطيل توجيه X11
X11Forwarding no

# الحد الأقصى لمحاولات تسجيل الدخول
MaxAuthTries 3

# الحد الأقصى للجلسات المتزامنة
MaxSessions 5

# مهلة تسجيل الدخول (ثانية)
LoginGraceTime 30

# إصدار البروتوكول
Protocol 2

# السماح لمستخدمين محددين فقط
AllowUsers admin deploy

# تغيير منفذ SSH (اختياري)
# Port 2222

# خوارزميات تشفير قوية
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
hljs bash
# اختبار إعداد SSH
sudo sshd -t

# إعادة تشغيل SSH
sudo systemctl restart sshd

✅ قائمة التحقق 3: إعداد جدار الحماية

hljs bash
# تثبيت وإعداد UFW
sudo apt install ufw -y

# السياسات الافتراضية
sudo ufw default deny incoming
sudo ufw default allow outgoing

# السماح بـ SSH أولاً!
sudo ufw allow ssh

# خدمات الويب
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# السماح بالوصول من IP محدد
sudo ufw allow from 192.168.1.0/24 to any port 3306

# تفعيل UFW
sudo ufw enable

# التحقق من الحالة
sudo ufw status verbose

قواعد UFW المتقدمة

hljs bash
# تحديد المعدل للحماية من القوة الغاشمة
sudo ufw limit ssh

# حجب IP محدد
sudo ufw deny from 1.2.3.4

# حذف قاعدة
sudo ufw delete allow 80/tcp

✅ قائمة التحقق 4: إعداد Fail2Ban

hljs bash
# تثبيت Fail2Ban
sudo apt install fail2ban -y

# إنشاء إعداد محلي
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
hljs ini
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
hljs bash
# تشغيل Fail2Ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

# التحقق من الحالة
sudo fail2ban-client status
sudo fail2ban-client status sshd

# عرض عناوين IP المحجوبة
sudo fail2ban-client status sshd | grep "Banned IP"

# رفع الحجب عن IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

✅ قائمة التحقق 5: تعطيل الخدمات غير الضرورية

hljs bash
# سرد الخدمات قيد التشغيل
sudo systemctl list-units --type=service --state=running

# تعطيل الخدمات غير الضرورية
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
sudo systemctl disable --now rpcbind

# التحقق من المنافذ المفتوحة
sudo ss -tlnp

✅ قائمة التحقق 6: أمان نظام الملفات

hljs bash
# البحث عن ملفات SUID/SGID
find / -perm /4000 -type f 2>/dev/null
find / -perm /2000 -type f 2>/dev/null

# البحث عن الملفات القابلة للكتابة من الجميع
find / -perm -0002 -type f 2>/dev/null

# جعل الملفات الحيوية غير قابلة للتغيير
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow

✅ قائمة التحقق 7: معاملات أمان النواة

hljs bash
sudo nano /etc/sysctl.d/99-security.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.suid_dumpable = 0
hljs bash
sudo sysctl -p /etc/sysctl.d/99-security.conf

✅ قائمة التحقق 8: مراقبة السجلات

hljs bash
tail -f /var/log/auth.log
tail -f /var/log/fail2ban.log
tail -f /var/log/ufw.log

# عدّ محاولات SSH الفاشلة
grep "Failed password" /var/log/auth.log | wc -l

# تثبيت Logwatch
sudo apt install logwatch -y
sudo logwatch --output stdout --format text --range today

✅ قائمة التحقق 9: فحص الأمان

hljs bash
# تدقيق أمني مع Lynis
sudo apt install lynis -y
sudo lynis audit system

# فحص rootkit مع rkhunter
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check

يجب أن تكون درجة أمان Lynis 70+. شغّله بانتظام (شهرياً).

قائمة التحقق السريعة

  • تطبيق تحديثات النظام
  • تفعيل التحديثات الأمنية التلقائية
  • تعطيل تسجيل دخول root عبر SSH
  • تعطيل تسجيل الدخول بكلمة المرور (المفتاح مثبّت)
  • تعيين SSH MaxAuthTries على 3
  • تفعيل وإعداد جدار حماية UFW
  • تثبيت Fail2Ban وتشغيله
  • تعطيل الخدمات غير الضرورية
  • إعداد معاملات أمان النواة
  • إعداد مراقبة السجلات
  • إتمام تدقيق أمان Lynis

الخلاصة

تصليب الخادم ليس مهمة تُنجز مرة واحدة بل عملية مستمرة. طبّق قائمة التحقق هذه عند إعداد خوادم جديدة وأجرِ عمليات تدقيق أمني منتظمة. ستُحسّن هذه الخطوات أمان خوادم REXE بشكل ملحوظ.