معرفة كيفية فحص المنافذ المفتوحة على Linux مهارة أساسية لكل من يدير خوادم، أو يحل مشكلات الشبكة، أو يعمل على تقوية أمان الأنظمة. المنفذ المفتوح هو بوابة دخول إلى نظامك - وإن كنت لا تعرف أي البوابات مفتوحة، فلن تستطيع تأمينها بشكل صحيح. سواء كنت تشغّل خادم ويب على Ubuntu، أو تدير VPS، أو تشخّص مشكلة اتصال، فإن عرض قائمة المنافذ المفتوحة يمنحك صورة واضحة عما يكشفه نظامك للشبكة. يستعرض هذا الدليل أربع طرق عملية، ويشرح كيفية تصفية النتائج، وكيفية إغلاق المنافذ التي لا تحتاجها.
أبرز النقاط:
- الأمر
ssهو الطريقة الحديثة والأسرع لعرض المنافذ المفتوحة على Linux. nmapيتيح لك فحص المنافذ من منظور خارجي، مما يكشف ما يراه المهاجمون فعلياً.- استخدم
lsofلمعرفة أي عملية تستخدم منفذاً معيناً بشكل فوري. - إغلاق المنافذ غير الضرورية باستخدام
ufwأوiptablesهو الطريقة الأكثر مباشرة لتقليص سطح الهجوم.
جدول المحتويات
- لماذا يهم فحص المنافذ المفتوحة على Linux
- الطريقة الأولى: الأمر ss (حديث وموصى به)
- الطريقة الثانية: الأمر netstat (قديم لكن شائع)
- الطريقة الثالثة: فحص المنافذ بـ nmap (منظور خارجي)
- الطريقة الرابعة: الأمر lsof (ربط العمليات بالمنافذ)
- كيفية تصفية النتائج حسب المنفذ أو TCP أو UDP
- كيفية إغلاق أو حجب منفذ باستخدام ufw أو iptables
- خلاصة
- الأسئلة الشائعة
لماذا يهم فحص المنافذ المفتوحة على Linux
كل خدمة تعمل على جهازك الذي يشغّل Linux تستمع على منفذ واحد أو أكثر. SSH يستمع على المنفذ 22، و HTTP على المنفذ 80، و HTTPS على المنفذ 443. لكن بعد أشهر من تثبيت البرامج وإزالتها، كثيراً ما تنتهي الخوادم بمنافذ مفتوحة لم يقصد أحد تهيئتها. daemon قاعدة بيانات منسي يستمع على المنفذ 5432 دون قاعدة جدار حماية هو خطر حقيقي أدى إلى اختراقات بيانات فعلية.
فحص المنافذ المفتوحة على Linux يساعدك على:
- مراجعة الخدمات التي تعمل فعلاً وتكون مكشوفة للشبكة.
- تشخيص سبب عدم قدرة تطبيق ما على الاتصال بخدمة أخرى.
- التحقق من أن قواعد جدار الحماية تعمل كما هو مقصود.
- الاستعداد لتدقيق أمني أو اختبار اختراق.
الطرق التالية تغطي كلاً من الفحص المحلي (ما يُبلّغ عنه الجهاز نفسه) والفحص الخارجي (ما يستطيع مضيف بعيد رؤيته). كلا المنظورين مهمان.
الطريقة الأولى: الأمر ss (حديث وموصى به)
الأمر ss (إحصاءات المقابس - socket statistics) حلّ محل netstat في معظم توزيعات Linux الحديثة. إنه أسرع وأكثر تفصيلاً، ومدمج في حزمة iproute2 التي تُثبَّت افتراضياً على Ubuntu و Debian و CentOS و Fedora.
لعرض جميع المنافذ المفتوحة مع أسماء العمليات المرتبطة بها، نفّذ:
sudo ss -tulnpشرح الخيارات:
-t- عرض مقابس TCP-u- عرض مقابس UDP-l- عرض المقابس التي تستمع فقط-n- عرض أرقام المنافذ بدلاً من أسماء الخدمات-p- عرض العملية التي تستخدم كل مقبس
مثال عملي: على خادم Ubuntu جديد يشغّل Nginx و PostgreSQL، قد يبدو الناتج هكذا:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=5678,fd=5))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=910,fd=3))لاحظ أن PostgreSQL مرتبط بـ 127.0.0.1 فقط، مما يعني أنه غير قابل للوصول من الخارج. بينما SSH و Nginx مرتبطان بـ 0.0.0.0، أي أنهما يقبلان الاتصالات من أي عنوان IP. هذا الناتج وحده يخبرك الكثير عن مستوى الكشف لديك.
للاطلاع على مرجع شامل لجميع خيارات ss، راجع صفحة man الرسمية للأمر ss.
الطريقة الثانية: الأمر netstat (قديم لكن شائع)
الأمر netstat جزء من حزمة net-tools القديمة. لم يعد مثبتاً افتراضياً في كثير من التوزيعات، لكنه لا يزال مستخدماً على نطاق واسع ويستحق المعرفة - خاصة عند العمل على أنظمة قديمة.
ثبّته إن لزم الأمر:
sudo apt install net-tools # Debian/Ubuntu
sudo yum install net-tools # CentOS/RHELلعرض المنافذ المفتوحة على Linux باستخدام netstat:
sudo netstat -tulnpالخيارات لها نفس المعنى تماماً كما في ss. تنسيق الناتج مختلف قليلاً لكنه يقدم نفس المعلومات الأساسية: البروتوكول، العنوان المحلي، المنفذ، والعملية المالكة.
قيد عملي واحد: على الخوادم المشغولة جداً ذات آلاف الاتصالات، قد يكون netstat أبطأ بشكل ملحوظ من ss. في المهام اليومية على خادم عادي، الفرق لا يُذكر.
الطريقة الثالثة: فحص المنافذ بـ nmap (منظور خارجي)
الأدوات السابقة تعرض ما يُبلّغ عنه جهازك داخلياً. أما nmap فيتبع نهجاً مختلفاً - يفحص المنافذ عبر الشبكة، محاكياً ما يراه مهاجم خارجي أو عميل بعيد. هذا أمر بالغ الأهمية لأن جدار الحماية قد يحجب منفذاً لا يزال ss يُظهره في حالة استماع.
تثبيت nmap:
sudo apt install nmap # Debian/Ubuntu
sudo yum install nmap # CentOS/RHELفحص خادم من جهاز آخر على نفس الشبكة:
nmap -sT -p 1-1024 192.168.1.10لفحص أكثر 1000 منفذ شيوعاً مع الكشف عن إصدارات الخدمات:
nmap -sV 192.168.1.10الخيار -sV يحاول الكشف عن إصدار البرنامج الذي يعمل على كل منفذ مفتوح. هذا مفيد لتحديد الخدمات القديمة التي تحتاج إلى تحديث.
تنبيه مهم: لا تستخدم nmap إلا على الخوادم التي تملكها أو لديك إذن صريح بفحصها. فحص أنظمة الغير دون تصريح قد يكون مخالفاً للقانون في بلدك.
إن كنت تريد التحقق من إمكانية الوصول إلى منفذ معين من خارج شبكتك دون تثبيت nmap، فإن أداة فحص المنافذ المجانية لدينا تتولى ذلك فوراً - دون أي إعداد مسبق.
الطريقة الرابعة: الأمر lsof (ربط العمليات بالمنافذ)
الأمر lsof (عرض الملفات المفتوحة - list open files) يتعامل مع مقابس الشبكة كملفات، وهو ما يتسق مع فلسفة Linux القائمة على "كل شيء ملف". إنه مفيد بشكل خاص حين تحتاج إلى الإجابة على السؤال: "أي عملية تستخدم المنفذ 8080؟"
عرض جميع اتصالات الشبكة:
sudo lsof -iمعرفة العملية التي تستخدم منفذاً معيناً (مثلاً المنفذ 3000):
sudo lsof -i :3000هذا مفيد جداً حين يكون تطبيق Node.js الخاص بأحد المطورين يحجز منفذاً وتحتاج إلى تحديد العملية وإيقافها قبل إعادة تشغيل خدمة ما.
كيفية تصفية النتائج حسب المنفذ أو TCP أو UDP
الناتج الخام من أي من هذه الأدوات قد يكون كثيفاً. إليك أكثر أنماط التصفية فائدة:
عرض منافذ TCP التي تستمع فقط (ss):
sudo ss -tlnpعرض منافذ UDP فقط (ss):
sudo ss -ulnpالتحقق من منفذ معين (grep مع ss):
sudo ss -tulnp | grep :443التصفية حسب المنفذ مع nmap:
nmap -p 80,443,8080 192.168.1.10هذه الأنماط تغطي الغالبية العظمى من احتياجات التصفية اليومية. لاستكشاف أخطاء HTTP على المنفذ 80، راجع دليل استكشاف أخطاء HTTP على المنفذ 80.
إن كنت تعمل على Windows وتحتاج إلى دليل مشابه، اطلع على الدليل الشامل لفحص المنافذ المفتوحة على Windows 2026.
كيفية إغلاق أو حجب منفذ باستخدام ufw أو iptables
اكتشاف منفذ مفتوح لا تحتاجه هو نصف المهمة فقط. إليك كيفية إغلاقه باستخدام أكثر أدوات جدار الحماية شيوعاً على Linux.
استخدام ufw (جدار الحماية المبسّط) - موصى به على Ubuntu
حجب حركة المرور الواردة على المنفذ 8080:
sudo ufw deny 8080/tcpالسماح بـ SSH و HTTPS فقط وحجب كل شيء آخر:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw enableالتحقق من حالة جدار الحماية الحالية:
sudo ufw status verboseاستخدام iptables - للتحكم المتقدم
إسقاط جميع حركة المرور الواردة على المنفذ 3306 (MySQL):
sudo iptables -A INPUT -p tcp --dport 3306 -j DROPحفظ القواعد لتبقى سارية بعد إعادة التشغيل:
sudo iptables-save | sudo tee /etc/iptables/rules.v4للاطلاع على مرجع أعمق حول صياغة قواعد iptables وترتيبها، يُعدّ التوثيق الرسمي لـ Netfilter المرجع الموثوق.
تلميح: حجب منفذ بـ ufw أو iptables لا يوقف الخدمة العاملة عليه - بل يمنع الاتصالات الخارجية من الوصول إليها فقط. إن أردت إيقاف الخدمة كلياً، استخدم sudo systemctl stop servicename و sudo systemctl disable servicename.
خلاصة
فحص المنافذ المفتوحة على Linux لا يتطلب أدوات معقدة أو خبرة متعمقة. الأمر ss يمنحك رؤية محلية سريعة وموثوقة. nmap يكشف ما يستطيع العالم الخارجي الوصول إليه. lsof يحدد بدقة أي عملية تمتلك منفذاً معيناً. و ufw أو iptables يتيح لك إغلاق أي منفذ لا ينبغي أن يكون مكشوفاً. إجراء هذه الفحوصات بانتظام - خاصة بعد تثبيت برامج جديدة أو تغيير إعدادات الشبكة - من أبسط العادات التي يمكنك بناؤها للحفاظ على أمان خوادم Linux لديك. ابدأ الآن بتنفيذ sudo ss -tulnp وشاهد ما يكشفه خادمك فعلاً.
افحص أي منفذ على خادم Linux الخاص بك - فوراً
لست متأكداً إن كان المنفذ قابلاً للوصول من الخارج فعلاً؟ أداة فحص المنافذ المجانية لدينا تفحص خادمك من منظور خارجي في ثوانٍ - دون تثبيت أو إعداد.
جرّب أداة فحص المنافذ المجانية ←
الأسئلة الشائعة
نفّذ sudo ss -tulnp في الطرفية. يستخدم هذا الأمر الحديث ss لعرض جميع منافذ TCP و UDP التي تستمع مع اسم العملية المرتبطة بكل منها. إنه أسرع من netstat ومتاح افتراضياً في معظم توزيعات Linux الحالية بما فيها Ubuntu و Debian.
كلا الأمرين يعرضان المنافذ المفتوحة ومعلومات المقابس، لكن ss هو البديل الحديث لـ netstat. يقرأ البيانات مباشرة من النواة، مما يجعله أسرع وأكثر دقة على الأنظمة المشغولة. netstat يتطلب حزمة net-tools المنفصلة التي لم تعد مثبتة افتراضياً في كثير من التوزيعات.
استخدم nmap -p PORT TARGET_IP من جهاز آخر على الشبكة. للفحص الخارجي السريع دون تثبيت أي شيء، استخدم أداة فحص المنافذ عبر الويب. هذا النهج يختبر إمكانية الوصول إلى المنفذ من الخارج مع مراعاة قواعد جدار الحماية التي لا تعكسها الأدوات المحلية كـ ss.
استخدم sudo lsof -i :PORT أو sudo ss -tulnp | grep :PORT. كلا الأمرين يعرضان اسم العملية ومعرّفها (PID) المرتبط بذلك المنفذ. طريقة lsof واضحة بشكل خاص لأنها تعرض الأمر والـ PID والمستخدم في تنسيق مقروء.
لا. حجب منفذ بـ ufw أو iptables يمنع الاتصالات الخارجية من الوصول إلى الخدمة، لكن الخدمة نفسها تستمر في العمل. لإيقافها كلياً، استخدم sudo systemctl stop servicename. لمنعها من الإقلاع عند إعادة التشغيل، نفّذ أيضاً sudo systemctl disable servicename.