- 1 1. مقدمة
- 2 2. ما هو المنفذ (Port)؟
- 3 3. كيفية التحقق من المنافذ في Ubuntu
- 4 4. التحقق من إعدادات جدار الحماية
- 5 5. أمثلة عملية: التحقق من حالة منفذ معين
- 6 6. فتح وإغلاق المنافذ والأمان
- 7 7. الخلاصة
- 8 الأسئلة الشائعة: أسئلة متكررة حول التحقق من المنافذ في Ubuntu
- 8.1 س1. ماذا أفعل إذا كان المنفذ غير مفتوح في Ubuntu؟
- 8.2 س2. ما الفرق بين ss و netstat؟
- 8.3 س3. هل توجد طريقة لاكتشاف فحص المنافذ؟
- 8.4 س4. كيف يمكنني التحقق من العملية التي تستخدم منفذًا معينًا؟
- 8.5 س5. كيف يمكنني السماح لعناوين IP محددة فقط باستخدام ufw؟
- 8.6 س6. ماذا أفعل إذا أردت تغيير رقم المنفذ؟
- 8.7 س7. هل يمكنني السماح بالعديد من المنافذ دفعة واحدة؟
1. مقدمة
في إدارة الشبكات وتشغيل الخوادم، من الضروري فهم حالة المنافذ بدقة. خاصة عند استخدام Ubuntu، يمكنك تعزيز الإجراءات الأمنية واستكشاف الأخطاء وإصلاحها بسرعة عن طريق التحقق من المنافذ المفتوحة والعمليات قيد الاستخدام.
يشرح هذا المقال بالتفصيل كيفية استخدام الأوامر والأدوات الأساسية للتحقق من المنافذ في Ubuntu. سنقدم إجراءات عملية وسهلة الفهم للمبتدئين والمتوسطين، لذا يرجى متابعة القراءة حتى النهاية.
2. ما هو المنفذ (Port)؟
2.1 المفهوم الأساسي للمنفذ
المنفذ هو فتحة اتصال افتراضية تستخدمها أجهزة الكمبيوتر وأجهزة الشبكة لإرسال واستقبال البيانات. على وجه التحديد، عند قيام تطبيقات متعددة بالاتصال في نفس الوقت على نفس عنوان IP، يلعب المنفذ دورًا في تحديد بيانات كل تطبيق وتوزيعها بشكل صحيح.
على سبيل المثال، يستخدم خادم الويب المنفذ 80 للتعامل مع اتصالات HTTP. إذا كان نفس الخادم يسمح باتصالات SSH، فإنه يستخدم المنفذ 22. بهذه الطريقة، يتم تمييز كل خدمة بواسطة رقم المنفذ، ولذلك فإن التحقق من حالة المنفذ أمر لا غنى عنه في إدارة الشبكة.
2.2 أنواع المنافذ وأدوارها
تنقسم المنافذ إلى ثلاث فئات رئيسية:
- المنافذ المعروفة (Well-known Ports) (0-1023)
- هي أرقام منافذ موحدة عالميًا ومخصصة للخدمات المستخدمة على نطاق واسع.
- أمثلة:
- HTTP: 80
- HTTPS: 443
- SSH: 22
- المنافذ المسجلة (Registered Ports) (1024-49151)
- هي منافذ تستخدمها تطبيقات أو شركات معينة.
- أمثلة:
- MySQL: 3306
- PostgreSQL: 5432
- المنافذ الديناميكية (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 أمثلة على استكشاف الأخطاء وإصلاحها
المشكلة: حلول إذا كان المنفذ غير مفتوح أو لا يمكن الاتصال به.
الخطوات:
- التحقق من إعدادات جدار الحماية.
sudo ufw status verbose
- إذا كان المنفذ المعني محظورًا، قم بإضافة إعداد السماح.
sudo ufw allow 22/tcp
- التحقق من حالة الخدمة وإعادة تشغيلها إذا لزم الأمر.
sudo systemctl restart ssh
6. فتح وإغلاق المنافذ والأمان
إدارة المنافذ ترتبط ارتباطًا مباشرًا بأمان الشبكة. هنا، سنشرح النقاط الأساسية لإدارة فتح وإغلاق المنافذ والأمان.
6.1 إغلاق المنافذ غير الضرورية
من المهم إغلاق المنافذ غير المستخدمة لتجنب مخاطر استغلالها من قبل المهاجمين.
مثال: لإغلاق المنفذ 80
sudo ufw deny 80/tcp
6.2 إجراءات مكافحة فحص المنافذ
فحص المنافذ هو أسلوب يستخدمه المهاجمون للبحث عن نقاط الضعف في النظام. لمكافحة ذلك، تكون الإجراءات التالية فعالة:
- تعزيز قواعد جدار الحماية:
sudo ufw default deny incoming
- مراقبة السجلات:
sudo tail -f /var/log/ufw.log
- تثبيت أدوات اكتشاف فحص المنافذ:
يمكنك استخدام أدوات مثلfail2ban
لحظر الوصول غير المصرح به تلقائيًا.
7. الخلاصة
في هذا المقال، شرحنا الإجراءات المحددة وكيفية استخدام الأوامر للتحقق من المنافذ في Ubuntu. كما أوضحنا بالتفصيل إدارة جدار الحماية باستخدام ufw
ونقاط تدابير الأمان.
7.1 مراجعة النقاط الرئيسية
- المفاهيم الأساسية وأنواع المنافذ
المنفذ هو نقطة دخول وخروج للاتصال، وينقسم إلى منافذ معروفة، منافذ مسجلة، ومنافذ ديناميكية. - كيفية استخدام أوامر التحقق من المنافذ
- يمكنك استخدام أوامر مثل
ss
،netstat
،lsof
،nmap
للتحقق من حالة المنفذ والعمليات. - كيفية إدارة جدار الحماية
- يمكنك استخدام
ufw
لتعيين السماح أو الحظر للمنافذ وتعزيز الأمان. - أهمية تدابير الأمان
- الحفاظ على بيئة شبكة آمنة من خلال إغلاق المنافذ غير الضرورية ومراقبة السجلات وتثبيت أدوات مكافحة الهجمات.
7.2 الاستخدام المستقبلي
إدارة المنافذ هي أساس أمان الشبكة. استخدم المعلومات التي تعلمتها في هذا المقال للحفاظ على بيئة خادم آمنة.
الأسئلة الشائعة: أسئلة متكررة حول التحقق من المنافذ في Ubuntu
س1. ماذا أفعل إذا كان المنفذ غير مفتوح في Ubuntu؟
ج:
إذا كان المنفذ غير مفتوح، جرب الخطوات التالية:
- التحقق من إعدادات جدار الحماية:
sudo ufw status verbose
إذا كان المنفذ محظورًا بواسطة جدار الحماية، اسمح به بالأمر التالي:
sudo ufw allow [رقم المنفذ]/tcp
- التحقق مما إذا كانت الخدمة المستهدفة قيد التشغيل:
sudo systemctl status [اسم الخدمة]
مثال: لـ SSH، sudo systemctl status ssh
إذا لزم الأمر، أعد تشغيله بالأمر التالي:
sudo systemctl restart [اسم الخدمة]
- التحقق مما إذا كانت الخدمة تستخدم المنفذ الصحيح:
تحقق من ملف التكوين (مثل/etc/ssh/sshd_config
لـ SSH) للتأكد من تحديد رقم المنفذ الصحيح.
س2. ما الفرق بين ss
و netstat
؟
ج:
كل من ss
و netstat
أدوات للتحقق من اتصالات الشبكة، ولكن لديهما الاختلافات التالية:
ss
:- الأداة الموصى بها في أنظمة Linux الحديثة.
- تعمل بسرعة ويمكنها عرض معلومات مفصلة.
- مثال:
sudo ss -ltn
netstat
:- أداة مستخدمة منذ فترة طويلة ولكنها أصبحت مهملة تدريجيًا.
- متوافقة بشكل كبير مع أنظمة Linux القديمة.
- مثال:
sudo netstat -ltn
في الأنظمة الجديدة، يوصى باستخدام ss
.
س3. هل توجد طريقة لاكتشاف فحص المنافذ؟
ج:
لاكتشاف فحص المنافذ، توجد الطرق التالية:
- التحقق من سجلات جدار الحماية:
sudo tail -f /var/log/ufw.log
تحقق من وجود عناوين IP مشبوهة أو محاولات اتصال متكررة.
- تثبيت أدوات IDS/IPS:
- استخدم أدوات مثل
fail2ban
أوSnort
لتعيين حظر تلقائي للاتصالات غير المصرح بها.
- مسح الخادم الخاص بك باستخدام 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:
- تحرير ملف التكوين:
sudo nano /etc/ssh/sshd_config
- ابحث عن إعداد
Port
وقم بتعيين رقم المنفذ الجديد:
Port 2222
- أعد تشغيل خدمة SSH:
sudo systemctl restart ssh
- السماح بالمنفذ الجديد في جدار الحماية:
sudo ufw allow 2222/tcp
س7. هل يمكنني السماح بالعديد من المنافذ دفعة واحدة؟
ج:
نعم، من الممكن السماح بالعديد من المنافذ دفعة واحدة. استخدم الطرق التالية:
- للسماح بنطاق معين:
sudo ufw allow 1000:2000/tcp
الشرح: يسمح بنطاق المنافذ من 1000 إلى 2000.
- للسماح بشكل فردي:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp