Ubuntu: كيفية فحص وإدارة المنافذ لتعزيز أمان الشبكة

目次

1. مقدمة

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

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

2. ما هو المنفذ (Port)؟

2.1 المفهوم الأساسي للمنفذ

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

على سبيل المثال، يستخدم خادم الويب المنفذ 80 للتعامل مع اتصالات HTTP. إذا كان نفس الخادم يسمح باتصالات SSH، فإنه يستخدم المنفذ 22. بهذه الطريقة، يتم تمييز كل خدمة بواسطة رقم المنفذ، ولذلك فإن التحقق من حالة المنفذ أمر لا غنى عنه في إدارة الشبكة.

2.2 أنواع المنافذ وأدوارها

تنقسم المنافذ إلى ثلاث فئات رئيسية:

  1. المنافذ المعروفة (Well-known Ports) (0-1023)
  • هي أرقام منافذ موحدة عالميًا ومخصصة للخدمات المستخدمة على نطاق واسع.
    • أمثلة:
    • HTTP: 80
    • HTTPS: 443
    • SSH: 22
  1. المنافذ المسجلة (Registered Ports) (1024-49151)
  • هي منافذ تستخدمها تطبيقات أو شركات معينة.
    • أمثلة:
    • MySQL: 3306
    • PostgreSQL: 5432
  1. المنافذ الديناميكية (Dynamic Ports) (49152-65535)
  • هي منافذ تستخدمها التطبيقات مؤقتًا، وغالبًا ما تستخدم في اتصالات جانب العميل.

يساعد فهم هذا التصنيف في تحديد الغرض من استخدام أرقام المنافذ.

3. كيفية التحقق من المنافذ في Ubuntu

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

3.1 استخدام أمر ss

أمر ss هو أداة قوية لإدارة الشبكة تستخدم في أنظمة Linux. يعمل بسرعة ويوفر معلومات اتصال مفصلة.

الأمر الأساسي:

sudo ss -ltn

شرح الخيارات:

  • -l: يعرض فقط المنافذ في حالة الاستماع (listening).
  • -t: يعرض فقط بروتوكول TCP.
  • -n: يعرض العناوين وأرقام المنافذ بالشكل الرقمي.

مثال على الإخراج:

State       Recv-Q Send-Q      Local Address:Port        Peer Address:Port  
LISTEN      0      128              0.0.0.0:22               0.0.0.0:*

3.2 استخدام أمر netstat

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

الأمر الأساسي:

sudo netstat -ltn

مثال على الإخراج:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

3.3 استخدام أمر lsof

lsof مفيد لتحديد العملية التي تستخدم منفذًا معينًا.

التحقق من منفذ معين:

sudo lsof -i :80

مثال على الإخراج:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

3.4 استخدام أمر nmap

nmap هي أداة متخصصة في مسح الشبكات، وتستخدم أيضًا في التشخيص الأمني.

مسح المضيف المحلي:

sudo nmap localhost

مثال على الإخراج:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-12-21 18:00 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http

نقاط مهمة:

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

4. التحقق من إعدادات جدار الحماية

في Ubuntu، من الشائع استخدام جدار الحماية لتعزيز الأمان. على وجه الخصوص، يعد ufw (Uncomplicated Firewall) أداة إدارة بسيطة وقوية تستخدم على نطاق واسع. يشرح هذا القسم كيفية استخدام ufw للتحقق من حالة فتح وإغلاق المنافذ وتغيير الإعدادات عند الضرورة.

4.1 التحقق من حالة ufw

أمر التحقق من حالة جدار الحماية:

sudo ufw status verbose

مثال على الإخراج:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

الشرح:

  • Status: active: جدار الحماية مفعل.
  • Logging: on: تسجيل الدخول مفعل، ويتم تسجيل أنشطة جدار الحماية.
  • Default: deny (incoming), allow (outgoing): هذا الإعداد يرفض الاتصالات الواردة افتراضيًا ويسمح بالاتصالات الصادرة.
  • ALLOW: يشير إلى أن منافذ أو خدمات معينة مسموح بها (مثل SSH و HTTP).

نقطة مهمة:
إذا كان جدار الحماية غير مفعل (Status: inactive)، فقم بتفعيله باستخدام الأمر التالي:

sudo ufw enable

4.2 السماح بالمنافذ أو حظرها

أمر السماح بالمنفذ:

sudo ufw allow 22/tcp

الشرح:

  • يسمح باتصالات TCP على المنفذ 22 (SSH).

أمر حظر المنفذ:

sudo ufw deny 80/tcp

الشرح:

  • يحظر الوصول إلى المنفذ 80 (HTTP).

مثال على السماح بعنوان IP معين فقط:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

الشرح:

  • يسمح باتصالات SSH فقط من عنوان IP 192.168.1.100.

4.3 إعادة تعيين الإعدادات ومراجعتها

لإعادة تعيين الإعدادات وإعادة بنائها، قم بتنفيذ الأمر التالي:

sudo ufw reset

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

5. أمثلة عملية: التحقق من حالة منفذ معين

هنا، سنشرح خطوات التحقق من حالة SSH (المنفذ 22) كمثال عملي.

5.1 التحقق من حالة المنفذ

مثال على الأمر:

sudo ss -ltn | grep ':22'

مثال على الإخراج:

LISTEN      0      128        0.0.0.0:22            0.0.0.0:*

نقاط مهمة:

  • إذا ظهرت كلمة LISTEN في الإخراج، فهذا يعني أن المنفذ في حالة استماع وينتظر الاتصالات.
  • تعني 0.0.0.0 أن الإعداد يقبل الاتصالات من جميع عناوين IP.

5.2 التحقق من العملية

مثال على الأمر:

sudo lsof -i :22

مثال على الإخراج:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd      1234  root   3u   IPv4  56789 0t0      TCP *:ssh (LISTEN)

نقاط مهمة:

  • sshd هي عملية الخلفية (daemon) التي تدير اتصالات SSH.
  • من خلال التحقق من معرف العملية (PID)، يمكنك إيقافها أو إعادة تشغيلها.

مثال على إيقاف العملية:

sudo kill 1234

5.3 أمثلة على استكشاف الأخطاء وإصلاحها

المشكلة: حلول إذا كان المنفذ غير مفتوح أو لا يمكن الاتصال به.

الخطوات:

  1. التحقق من إعدادات جدار الحماية.
sudo ufw status verbose
  1. إذا كان المنفذ المعني محظورًا، قم بإضافة إعداد السماح.
sudo ufw allow 22/tcp
  1. التحقق من حالة الخدمة وإعادة تشغيلها إذا لزم الأمر.
sudo systemctl restart ssh

6. فتح وإغلاق المنافذ والأمان

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

6.1 إغلاق المنافذ غير الضرورية

من المهم إغلاق المنافذ غير المستخدمة لتجنب مخاطر استغلالها من قبل المهاجمين.

مثال: لإغلاق المنفذ 80

sudo ufw deny 80/tcp

6.2 إجراءات مكافحة فحص المنافذ

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

  1. تعزيز قواعد جدار الحماية:
sudo ufw default deny incoming
  1. مراقبة السجلات:
sudo tail -f /var/log/ufw.log
  1. تثبيت أدوات اكتشاف فحص المنافذ:
    يمكنك استخدام أدوات مثل fail2ban لحظر الوصول غير المصرح به تلقائيًا.

7. الخلاصة

في هذا المقال، شرحنا الإجراءات المحددة وكيفية استخدام الأوامر للتحقق من المنافذ في Ubuntu. كما أوضحنا بالتفصيل إدارة جدار الحماية باستخدام ufw ونقاط تدابير الأمان.

7.1 مراجعة النقاط الرئيسية

  • المفاهيم الأساسية وأنواع المنافذ
    المنفذ هو نقطة دخول وخروج للاتصال، وينقسم إلى منافذ معروفة، منافذ مسجلة، ومنافذ ديناميكية.
  • كيفية استخدام أوامر التحقق من المنافذ
  • يمكنك استخدام أوامر مثل ss، netstat، lsof، nmap للتحقق من حالة المنفذ والعمليات.
  • كيفية إدارة جدار الحماية
  • يمكنك استخدام ufw لتعيين السماح أو الحظر للمنافذ وتعزيز الأمان.
  • أهمية تدابير الأمان
  • الحفاظ على بيئة شبكة آمنة من خلال إغلاق المنافذ غير الضرورية ومراقبة السجلات وتثبيت أدوات مكافحة الهجمات.

7.2 الاستخدام المستقبلي

إدارة المنافذ هي أساس أمان الشبكة. استخدم المعلومات التي تعلمتها في هذا المقال للحفاظ على بيئة خادم آمنة.

الأسئلة الشائعة: أسئلة متكررة حول التحقق من المنافذ في Ubuntu

س1. ماذا أفعل إذا كان المنفذ غير مفتوح في Ubuntu؟

ج:
إذا كان المنفذ غير مفتوح، جرب الخطوات التالية:

  1. التحقق من إعدادات جدار الحماية:
sudo ufw status verbose

إذا كان المنفذ محظورًا بواسطة جدار الحماية، اسمح به بالأمر التالي:

sudo ufw allow [رقم المنفذ]/tcp
  1. التحقق مما إذا كانت الخدمة المستهدفة قيد التشغيل:
sudo systemctl status [اسم الخدمة]

مثال: لـ SSH، sudo systemctl status ssh
إذا لزم الأمر، أعد تشغيله بالأمر التالي:

sudo systemctl restart [اسم الخدمة]
  1. التحقق مما إذا كانت الخدمة تستخدم المنفذ الصحيح:
    تحقق من ملف التكوين (مثل /etc/ssh/sshd_config لـ SSH) للتأكد من تحديد رقم المنفذ الصحيح.

س2. ما الفرق بين ss و netstat؟

ج:
كل من ss و netstat أدوات للتحقق من اتصالات الشبكة، ولكن لديهما الاختلافات التالية:

  • ss:
  • الأداة الموصى بها في أنظمة Linux الحديثة.
  • تعمل بسرعة ويمكنها عرض معلومات مفصلة.
  • مثال: sudo ss -ltn
  • netstat:
  • أداة مستخدمة منذ فترة طويلة ولكنها أصبحت مهملة تدريجيًا.
  • متوافقة بشكل كبير مع أنظمة Linux القديمة.
  • مثال: sudo netstat -ltn

في الأنظمة الجديدة، يوصى باستخدام ss.

س3. هل توجد طريقة لاكتشاف فحص المنافذ؟

ج:
لاكتشاف فحص المنافذ، توجد الطرق التالية:

  1. التحقق من سجلات جدار الحماية:
sudo tail -f /var/log/ufw.log

تحقق من وجود عناوين IP مشبوهة أو محاولات اتصال متكررة.

  1. تثبيت أدوات IDS/IPS:
  • استخدم أدوات مثل fail2ban أو Snort لتعيين حظر تلقائي للاتصالات غير المصرح بها.
  1. مسح الخادم الخاص بك باستخدام nmap:
sudo nmap localhost

تحقق مما إذا كانت هناك منافذ غير ضرورية مفتوحة وأغلقها.

س4. كيف يمكنني التحقق من العملية التي تستخدم منفذًا معينًا؟

ج:
يمكنك استخدام أمر lsof للتحقق من العملية التي تستخدم منفذًا معينًا:

sudo lsof -i :[رقم المنفذ]

مثال: للمنفذ 80

sudo lsof -i :80

مثال على الإخراج:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

س5. كيف يمكنني السماح لعناوين IP محددة فقط باستخدام ufw؟

ج:
للسماح بالاتصالات فقط من عناوين IP محددة، استخدم الأمر التالي:

sudo ufw allow from [عنوان IP] to any port [رقم المنفذ] proto tcp

مثال: للسماح بالاتصالات إلى المنفذ 22 (SSH) من عنوان IP 192.168.1.100:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

س6. ماذا أفعل إذا أردت تغيير رقم المنفذ؟

ج:
لتغيير رقم المنفذ، قم بتحرير ملف تكوين الخدمة. إليك مثال لـ SSH:

  1. تحرير ملف التكوين:
sudo nano /etc/ssh/sshd_config
  1. ابحث عن إعداد Port وقم بتعيين رقم المنفذ الجديد:
Port 2222
  1. أعد تشغيل خدمة SSH:
sudo systemctl restart ssh
  1. السماح بالمنفذ الجديد في جدار الحماية:
sudo ufw allow 2222/tcp

س7. هل يمكنني السماح بالعديد من المنافذ دفعة واحدة؟

ج:
نعم، من الممكن السماح بالعديد من المنافذ دفعة واحدة. استخدم الطرق التالية:

  1. للسماح بنطاق معين:
sudo ufw allow 1000:2000/tcp

الشرح: يسمح بنطاق المنافذ من 1000 إلى 2000.

  1. للسماح بشكل فردي:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
侍エンジニア塾