ما الذي ستبنيه
يتعرّض كل خادم متصل بالإنترنت للفحص خلال دقائق من تشغيله — إذ تبحث البرامج الآلية عن المنافذ المفتوحة وتنهال على خدمة SSH بمحاولات تخمين كلمات المرور. توجد أداتان خفيفتان ومجرّبتان تتوليان معظم هذه الحماية نيابةً عنك:
- UFW (جدار الحماية غير المعقّد) — واجهة سهلة الاستخدام لـ
iptables/nftablesتتحكم في المنافذ المفتوحة. - Fail2ban — يراقب ملفات السجل بحثاً عن محاولات الدخول الفاشلة المتكررة، ويحظر عناوين IP المسيئة مؤقتاً.
يشرح هذا الدليل إعداد كلتيهما على خادم Debian أو Ubuntu (الأوامر متطابقة تقريباً على التوزيعات الأخرى). ينطبق سواء كنت تشغّل خادماً سحابياً أو افتراضياً أو مخصّصاً، وهو جزء من مجموعة المعرفة الخاصة بنا حول الخوادم الافتراضية والسحابية في السعودية.
المتطلبات المسبقة
- خادم لينكس يمكنك الوصول إليه عبر SSH.
- مستخدم يملك صلاحيات
sudo(لا تنفّذ ذلك بصفتكrootعبر اتصال مكشوف دون وجود وسيلة احتياطية). - منفذ SSH الخاص بك (الافتراضي هو
22؛ وإذا غيّرته فاستخدم قيمتك الفعلية في كل الخطوات).
تحذير: قد يمنعك جدار الحماية من الوصول إلى خادمك. قبل تفعيل UFW، تأكد من وجود القاعدة التي تسمح باتصال SSH. وإذا كنت تستخدم مزوّداً سحابياً، فأبقِ وحدة التحكم عبر الويب أو وصول الاستعادة متاحاً لتتمكن من التعافي إذا ارتكبت خطأ.
الخطوة الأولى — تثبيت UFW وإعداده
تأتي أداة UFW ضمن معظم نسخ Ubuntu. ثبّتها عند الحاجة:
sudo apt update
sudo apt install ufw
اضبط الإعدادات الافتراضية السليمة — رفض كل حركة المرور الواردة، والسماح بكل الصادرة:
sudo ufw default deny incoming
sudo ufw default allow outgoing
هذا هو جوهر السياسة الجيدة لجدار الحماية: لا شيء يصل إلى خدماتك ما لم تسمح به صراحةً.
الخطوة الثانية — السماح بالخدمات التي تحتاجها فعلاً
قبل تشغيل جدار الحماية، افتح المنافذ التي يستخدمها خادمك. اسمح بـ SSH أولاً دائماً وإلا ستُقطع عنك الجلسة:
sudo ufw allow OpenSSH
تقرأ UFW ملفات تعريف التطبيقات المسمّاة من /etc/ufw/applications.d. اعرض المتاح منها عبر sudo ufw app list. وإذا غيّرت منفذ SSH، فاسمح به صراحةً بدلاً من ذلك:
sudo ufw allow 2222/tcp
افتح حركة الويب إذا كنت تشغّل موقعاً أو خدمات البريد الإلكتروني للأعمال والويب:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
يمكنك حصر القاعدة على مصدر موثوق — مثلاً، السماح بالوصول إلى قاعدة البيانات من خادم التطبيق لديك فقط:
sudo ufw allow from 10.0.0.5 to any port 3306 proto tcp
الخطوة الثالثة — تحديد معدل SSH وتفعيل جدار الحماية
تعمل قاعدة limit في UFW على تقييد الاتصالات من أي عنوان IP يحاول الاتصال أكثر من 6 مرات خلال 30 ثانية — وهي عقبة رخيصة وفعّالة في وجه أدوات التخمين:
sudo ufw limit OpenSSH
والآن فعّل جدار الحماية:
sudo ufw enable
تأكّد من قواعدك عبر عرض مرقّم:
sudo ufw status numbered
يشبه الناتج المتوقّع ما يلي:
Status: active
To Action From
-- ------ ----
[ 1] OpenSSH LIMIT Anywhere
[ 2] 80/tcp ALLOW Anywhere
[ 3] 443/tcp ALLOW Anywhere
لحذف قاعدة، أشِر إلى رقمها: sudo ufw delete 2.
الخطوة الرابعة — تثبيت Fail2ban
تغلق UFW المنافذ، لكن المنافذ التي يجب أن تبقى مفتوحة (مثل SSH) لا تزال معرّضة للتخمين. يراقب Fail2ban السجلات ويحظر المسيئين المتكررين:
sudo apt install fail2ban
على الأنظمة الحديثة يقرأ Fail2ban سجلّه عبر systemd، لذا يعمل مباشرةً دون إعداد إضافي. تأكّد من أن الخدمة قيد التشغيل:
sudo systemctl status fail2ban
الخطوة الخامسة — إعداد Fail2ban عبر ملف jail.local
لا تعدّل ملف jail.conf مباشرةً أبداً — فهو يُستبدل عند الترقية. أنشئ بدلاً منه ملف تجاوز محلي:
sudo nano /etc/fail2ban/jail.local
أضف ما يلي:
[DEFAULT]
# لا تحظر شبكاتك الموثوقة. أضف عنوان مكتبك أو منزلك.
ignoreip = 127.0.0.1/8 ::1
# مدة استمرار الحظر (10 دقائق).
bantime = 10m
# النافذة الزمنية لاحتساب الإخفاقات.
findtime = 10m
# عدد الإخفاقات المسموح بها قبل الحظر.
maxretry = 5
# اطلب من Fail2ban التنفيذ عبر UFW.
banaction = ufw
[sshd]
enabled = true
تستخدم منظومة [sshd] مرشّح sshd المدمج الموجود في /etc/fail2ban/filter.d/sshd.conf. وضبط banaction = ufw يجعل Fail2ban يُدرج قواعد الرفض عبر جدار حمايتك القائم بدلاً من العبث بـ iptables الخام.
أعد التشغيل لتطبيق التغييرات:
sudo systemctl restart fail2ban
الخطوة السادسة — التحقق والمراقبة
تحقّق من الحالة العامة ومن منظومة SSH تحديداً:
sudo fail2ban-client status
sudo fail2ban-client status sshd
تُظهر حالة المنظومة عناوين IP الفاشلة والمحظورة حالياً:
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 23
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 4
`- Banned IP list: 203.0.113.42
لرفع الحظر عن عنوان يدوياً:
sudo fail2ban-client set sshd unbanip 203.0.113.42
الخط الأساسي الموصى به
| الإعداد | القيمة | السبب |
|---|---|---|
| الوارد الافتراضي في UFW | deny |
مغلق افتراضياً |
| قاعدة SSH | limit |
تبطئ التخمين |
bantime |
10m–1h |
تعاقب المسيئين المتكررين |
maxretry |
3–5 |
صارمة لكنها تتسامح مع الأخطاء المطبعية |
ignoreip |
عناوين الإدارة لديك | تجنّب حظر نفسك |
خطوات إضافية متقدمة
في خوادم الإنتاج، فعّل أيضاً منظومات (jails) لأي خدمة تكشفها (مثل nginx-http-auth أو منظومة البريد لديك)، واستخدم مفاتيح SSH بدلاً من كلمات المرور، وفكّر في bantime أطول أو تصاعدي. يُعدّ UFW وFail2ban خطاً أساسياً قوياً، لكنهما ليسا برنامجاً أمنياً متكاملاً — أبقِ الحزم محدّثة بالتصحيحات وانسخ بياناتك احتياطياً بانتظام عبر النسخ الاحتياطي السحابي.
تُعدّ استضافة أعمالك داخل المملكة أمراً مهماً للأداء ولتلبية متطلبات إقامة البيانات الخاصة بـ نظام حماية البيانات الشخصية (PDPL) والهيئة الوطنية للأمن السيبراني (NCA) والهيئة السعودية للبيانات والذكاء الاصطناعي (SDAIA). تشغّل سكايلاين كلاود خوادم سحابية وافتراضية وأجهزة مخصّصة داخل السعودية مع دعم محلي بالعربية وتسعير شفّاف.
هل أنت مستعد لنشر خادم محصّن؟ أنشئ حسابك في سكايلاين كلاود وأطلق خادماً افتراضياً خلال دقائق.
Comments
0 total · 0 threads