تأمين الخدمات العامة: إغلاق المنافذ غير المستخدمة وتغيير إعدادات SSH الافتراضية

دقائق القراءة: 6

يُعد تأمين الخدمات العامة على خوادم لينكس من أولى خطوات الحماية العملية التي تقلل مساحة الهجوم قبل التفكير في الأدوات المتقدمة. كثير من الاختراقات لا تبدأ من ثغرة معقدة، بل من خدمة غير ضرورية تعمل في الخلفية أو من إعداد افتراضي تُرك كما هو بعد التثبيت. لذلك فإن إغلاق المنافذ غير المستخدمة، ومراجعة إعدادات SSH الافتراضية، يمثلان خط دفاع أساسي لأي مسؤول نظام يريد بناء بيئة أكثر صلابة واعتمادية.

إذا كنت قد قرأت سابقاً مقال أساسيات شبكات لينكس: العناوين، المنافذ، والبروتوكولات (IP, SSH, DNS) فستعرف أن كل منفذ مفتوح هو نقطة اتصال محتملة مع العالم الخارجي. كما أن خدمة SSH، رغم أهميتها في الإدارة عن بُعد، قد تصبح هدفاً مباشراً لهجمات التخمين والقوة الغاشمة إذا لم تُضبط بعناية. في هذا الدليل سنركز على خطوات عملية وآمنة قابلة للتطبيق على أغلب توزيعات لينكس.

لماذا يجب تقليل عدد الخدمات العامة المكشوفة؟

كل خدمة تستمع على منفذ عام تضيف عبئاً أمنياً جديداً. حتى لو كانت الخدمة محدثة، فإن وجودها دون حاجة فعلية يعني زيادة احتمالات الاستطلاع، الفحص الآلي، ومحاولات الاستغلال. لهذا تتبع المؤسسات الأمنية مبدأ تقليل السطح المعرض للهجوم Attack Surface Reduction.

الهدف ليس إغلاق كل شيء عشوائياً، بل السماح فقط بالخدمات التي تخدم وظيفة حقيقية وواضحة. على سبيل المثال، خادم ويب يحتاج عادة إلى 80 و443، وربما منفذ SSH للإدارة، لكنه لا يحتاج بالضرورة إلى خدمات قديمة أو أدوات تجريبية ما زالت نشطة.

الخطوة الأولى: معرفة المنافذ والخدمات المفتوحة

قبل إغلاق أي منفذ، يجب تحديد ما الذي يعمل فعلاً على النظام. هذه الخطوة تمنع التغييرات العشوائية وتُظهر العلاقة بين المنفذ والخدمة أو العملية المرتبطة به. ويمكنك هنا الاستفادة من فهم الخدمات في مقال إدارة الخدمات باستخدام (systemd) و (systemctl).

فحص المنافذ المفتوحة بالأمر ss

يُعد الأمر ss من أفضل الأدوات الحديثة لمعرفة الاتصالات والمنافذ المستمعة. استخدم الأمر التالي لعرض المنافذ النشطة مع أسماء العمليات:

sudo ss -tulpn

هذا الأمر يعرض:

  • المنافذ المعتمدة على TCP وUDP.
  • الخدمات التي تستمع حالياً.
  • معرّف العملية PID واسم البرنامج المسؤول عنها.

بدائل مفيدة للفحص والتحقق

في بعض البيئات قد تحتاج إلى أدوات مساعدة إضافية بحسب ما هو متوفر على النظام:

sudo lsof -i -P -n
sudo netstat -tulpn

وإذا أردت فحص ما إذا كان منفذ معين يعمل من خارج الخادم، فيمكن استخدام أدوات اختبار الشبكة أو مراجعة قواعد الجدار الناري كما شرحنا في مقال جدار الحماية (Firewall) وتأمين النظام (UFW, Firewalld, Iptables).

كيف تُغلق المنافذ غير المستخدمة بشكل صحيح؟

إغلاق المنفذ لا يعني فقط منعه عبر الجدار الناري، بل من الأفضل إيقاف الخدمة ذاتها إذا لم تكن مطلوبة. فالجدار الناري يضيف طبقة منع، لكن الخدمة نفسها إذا استمرت بالعمل ستستهلك موارد وقد تظهر مجدداً في إعدادات أخرى.

1) تحديد الخدمة المرتبطة بالمنفذ

بعد تنفيذ ss -tulpn ابحث عن اسم العملية. إذا وجدت خدمة لا تحتاجها، فتأكد أولاً من دورها. أحياناً تكون الخدمة جزءاً من تطبيق آخر، لذلك لا تتعجل في تعطيلها دون مراجعة.

2) إيقاف الخدمة ومنع تشغيلها التلقائي

sudo systemctl stop service_name
sudo systemctl disable service_name

استبدل service_name باسم الخدمة الفعلي. وبعد ذلك تحقق من حالتها:

sudo systemctl status service_name

3) إزالة الحزمة إذا كانت غير ضرورية

إذا كنت متأكداً أن الخدمة غير مطلوبة نهائياً، فمن الأفضل إزالة الحزمة المرتبطة بها لتقليل التعقيد الأمني. وتفاصيل إدارة الحزم مشروحة في إدارة الحزم البرمجية وتحديث النظام (APT, YUM/DNF, Pacman).

sudo apt remove package_name
sudo dnf remove package_name

4) تقييد الوصول عبر الجدار الناري

إذا كانت الخدمة مطلوبة داخلياً فقط، فلا تتركها مكشوفة للعامة. يمكنك تقييد الوصول إليها حسب المنفذ أو عنوان IP:

sudo ufw deny 8080/tcp
sudo ufw allow from 192.168.1.10 to any port 22 proto tcp

لا تُغلق أي منفذ إداري مهم على خادم بعيد قبل التأكد من وجود جلسة وصول بديلة، خصوصاً عند تعديل قواعد الجدار الناري أو إعدادات SSH. فقد يؤدي خطأ بسيط إلى فقدان الوصول الكامل للخادم.

لماذا يحتاج SSH إلى تغيير الإعدادات الافتراضية؟

خدمة SSH هي بوابتك الأساسية للإدارة عن بُعد، ولهذا فهي من أكثر الخدمات تعرضاً للمسح الآلي. الإعدادات الافتراضية قد تعمل جيداً من ناحية التشغيل، لكنها ليست بالضرورة الأنسب من ناحية الأمان. ومن المفيد هنا الرجوع أيضاً إلى مقال النقل الآمن للملفات وإدارة الاتصال عن بُعد (SSH, SCP, SFTP) لفهم السياق العملي لاستخدام SSH.

الفكرة ليست في “إخفاء” الخدمة فقط، بل في تقوية سياسات الدخول وتقليل فرص النجاح أمام المهاجمين الآليين.

أهم إعدادات SSH التي يُنصح بمراجعتها

تعديل ملف الإعدادات

ملف إعدادات الخادم يوجد غالباً في المسار /etc/ssh/sshd_config. ويمكن تحريره باستخدام أدوات مثل أدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail).

sudo nano /etc/ssh/sshd_config

1) تغيير المنفذ الافتراضي

المنفذ الافتراضي لـ SSH هو 22. تغييره لا يعتبر بديلاً عن الحماية الحقيقية، لكنه يقلل من الضوضاء الناتجة عن الهجمات الآلية الشائعة.

Port 2222

بعد تغييره، لا تنسَ فتح المنفذ الجديد في الجدار الناري قبل إعادة تشغيل الخدمة.

2) منع تسجيل الدخول المباشر للمستخدم root

السماح للمستخدم root بالدخول المباشر يزيد المخاطر بشكل واضح. الأفضل هو الدخول بحساب عادي ثم استخدام sudo، وهو ما يرتبط مباشرة بمقال إدارة الصلاحيات والملكية (Chmod, Chown, Sudo).

PermitRootLogin no

3) تعطيل تسجيل الدخول بكلمة المرور إن أمكن

إذا كنت تستخدم مفاتيح SSH، فمن الأفضل تعطيل المصادقة بكلمة المرور لتقليل مخاطر التخمين والهجمات الآلية.

PasswordAuthentication no
PubkeyAuthentication yes

هذه الخطوة قوية جداً، لكن يجب تنفيذها فقط بعد التأكد من أن المفاتيح العامة والخاصة تعمل بشكل صحيح.

4) السماح لمستخدمين محددين فقط

بدلاً من ترك الخدمة متاحة لكل الحسابات المحلية، يمكنك تقييد الوصول إلى مستخدم أو مجموعة بعينها. وهذا يتكامل مع ما ورد في إدارة المستخدمين والمجموعات (Users and Groups Management).

AllowUsers adminuser
# أو
AllowGroups sshadmins

5) تقليل محاولات المصادقة والمهلة الزمنية

هذه الإعدادات تقلل فرص استمرار المحاولة من طرف عميل غير موثوق:

MaxAuthTries 3
LoginGraceTime 30

تطبيق الإعدادات واختبارها بأمان

بعد تعديل الملف، افحص صحة الإعدادات قبل إعادة تشغيل الخدمة:

sudo sshd -t

إذا لم تظهر أخطاء، أعد تحميل أو تشغيل الخدمة:

sudo systemctl restart ssh
sudo systemctl restart sshd

يختلف اسم الخدمة بين التوزيعات، لذلك استخدم الاسم الموجود على نظامك. بعد ذلك جرّب فتح جلسة SSH جديدة من نافذة أخرى قبل إغلاق الجلسة الحالية:

ssh -p 2222 adminuser@server_ip

أخطر خطأ شائع هو حفظ إعدادات SSH الجديدة ثم إغلاق الجلسة الحالية قبل اختبار الاتصال الجديد. احتفظ دائماً بجلسة مفتوحة حتى تتأكد أن تسجيل الدخول على المنفذ الجديد يعمل بنجاح.

المراقبة بعد التعديل لا تقل أهمية عن التعديل نفسه

بعد تقليل المنافذ المفتوحة وتحديث إعدادات SSH، راقب السجلات للتأكد من عدم وجود محاولات فاشلة غير متوقعة أو أخطاء تشغيل. يمكنك الاستفادة من مقال مراقبة السجلات (Logs) وتحليل الأخطاء (journalctl, /var/log) لمراجعة سلوك النظام بعد التعديلات.

sudo journalctl -u ssh -n 50
sudo journalctl -u sshd -n 50

كما يُنصح بمراجعة الخدمات المفتوحة دورياً، خصوصاً بعد تثبيت برامج جديدة أو تحديثات كبيرة، لأن بعض الحزم قد تفعّل خدمات شبكية بشكل تلقائي.

خاتمة

تأمين الخدمات العامة لا يعتمد على حل واحد، بل على سلسلة قرارات صغيرة لكنها مؤثرة: تعرف ما الذي يعمل، أوقف ما لا تحتاجه، قيّد ما يجب أن يبقى، ثم شدد إعدادات SSH بحيث لا تبقى على الوضع الافتراضي. بهذه المقاربة، أنت لا تجعل الخادم “محصناً بالكامل”، لكنك تقلل بشكل كبير من فرص الاستهداف السهل وتبني أساساً عملياً لأي خطة تقوية أمنية لاحقة.

ابدأ دائماً من البساطة: منفذ أقل، خدمة أقل، وصلاحيات أقل. هذه القاعدة وحدها كفيلة برفع مستوى الأمان بصورة ملحوظة على أي خادم لينكس متصل بالإنترنت.

12 comments

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *