سؤال تحقق مما إذا كان المنفذ مفتوحًا أو مغلقًا على خادم Linux؟


كيف يمكنني التحقق مما إذا كان المنفذ يستمع على خادم Linux؟


175
2017-09-07 17:24


الأصل


ليس من الواضح ما الذي تطلبه. ماذا تقصد ب "فتح"؟ هل تقصد أن بعض الخادم يستمع على هذا المنفذ؟ أو تقصد أنه مسموح به من قبل جدار حماية النظام؟ أو ماذا؟ - David Schwartz
أعتقد أن المنفذ يتم حظره على الخادم الخاص بي وأريد إلغاء حظره / فتحه مرة أخرى. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen إذا كان الإخراج فارغًا ، يكون المنفذ قيد الاستخدام. - automatix


الأجوبة:


يمكنك التحقق مما إذا كانت العملية تستمع على منفذ TCP أو UDP باستخدام netstat -tuplen.

لمعرفة ما إذا كان يمكن الوصول إلى بعض المنافذ من الخارج (وهذا على الأرجح ما تريد) يمكنك استخدام ماسح منفذ مثل NMAP من عند آخر النظام. تشغيل Nmap على نفس المضيف الذي تريد التحقق منه هو عديم الفائدة تماما لغرضك.


159
2017-09-07 17:31



GNU netstat يعرف المعلمات -t، -u، -p، -l، -eو -n. بفضل محلل الخيارات يمكن التعبير عنه -tuplen. linux.die.net/man/8/netstat - joschi
أيضا ، و telnet عادةً ما يدعم الأمر TCP فقط ، لذلك أنت خارج الحظ إذا كانت الخدمة التي تريد التحقق عليها تعمل على بروتوكول آخر. - joschi
نعم ، كنت أستخدم النوافذ ومن ثم ارتبك. - Dexter
nc هو بديل (أفضل) للتلنت. وهو يدعم UDP أيضا. - Tsvetomir Dimitrov
استخدامه مع sudo: sudo netstat -tuplen. سيعطيك ذلك العمليات التي تملكها ليس فقط أنت ، ولكن أيضًا من قبل الآخرين ، وستقوم بطباعة تفاصيل إضافية (مثل PID / Program Name) إذا لم تكن معروضة بالفعل كمستخدم غير أساسي. - John Red


أسرع طريقة لاختبار ما إذا كان منفذ TCP مفتوحًا (بما في ذلك أي جدران حماية للأجهزة لديك) ، هو الكتابة من كمبيوتر بعيد (مثل سطح المكتب):

telnet myserver.com 80

الذي سيحاول فتح اتصال بالمنفذ 80 على ذلك الخادم. إذا حصلت على مهلة أو رفض ، فإن المنفذ ليس مفتوحًا :)


84
2017-09-07 17:33



يقول أنه لا يتعرف "Telnet" كأمر ... - James Anderson
"yum install telnet" لتثبيت حزمة عميل telnet. - cjc
يقول: التلنت: الاتصال إلى عنوان 82.165.148.224: رفض الاتصال - James Anderson
مكتوب أعلاه: if you get a time out or deny, the port is not open - Industrial
ماذا لو لم يكن لديك إذن بتثبيت telnet؟ هل هناك وسيلة قياسية أخرى؟ - KC Baltz


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

netstat -nlp

هذا سوف تظهر قائمة عمليات الاستماع على منافذ TCP و UDP. يمكنك مسح (أو grep) من أجل العملية التي تهمك و / أو أرقام المنافذ التي تتوقع رؤيتها.

إذا لم تكن العملية التي تتوقعها موجودة ، فيجب عليك بدء هذه العملية والتحقق من netstat مرة أخرى. إذا كانت العملية موجودة ، لكنها تستمع على واجهة ومنفذ لم تتوقعه ، فهناك مشكلة في التكوين (على سبيل المثال ، يمكن أن يكون الاستماع ، ولكن فقط على واجهة الاسترجاع ، لذلك سترى 127.0.0.1:3306 و لا توجد خطوط أخرى للمنفذ 3306 ، في حالة التكوين الافتراضي ل MySQL).

إذا كانت العملية قد انتهت ، وتستمع إلى المنفذ الذي تتوقعه ، يمكنك محاولة تشغيل "telnet" على هذا المنفذ من Macbook في مكتبك / منزلك ، على سبيل المثال ،

 telnet xxxxxxxxxxxx.co.uk 443

سيختبر ذلك إذا كان هناك (بافتراض المنافذ القياسية) أن هناك خادم ويب تم تكوينه لـ SSL. لاحظ أن هذا الاختبار باستخدام telnet سيعمل فقط إذا كانت العملية تستمع على منفذ TCP. إذا كان منفذ UDP ، فيمكنك تجربة أي عميل تريد استخدامه للاتصال به. (أرى أنك استخدمت المنفذ 224. هذا هو masqdialer ، وليس لدي أي فكرة عن ما هو).

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

 iptables -L -n

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

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

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

إذا كان جدار الحماية الخاص بك على الصندوق يسمح بحركة المرور التي تريدها ، فستقوم شركة الاستضافة بتشغيل جدار حماية (على سبيل المثال ، تسمح فقط بـ SSH (22 / tcp) ، HTTP (80 / tcp) و HTTPS (443 / tcp) وإنكار جميع حركة المرور الواردة الأخرى). في هذه الحالة ، ستحتاج إلى فتح تذكرة مكتب مساعدة معهم لحل هذه المشكلة ، على الرغم من أنني أفترض أنه قد يكون هناك شيء ما في cPanel قد يسمح لك بذلك.


23
2017-09-07 20:01



هل يمكن أن الثابتة والمتنقلة إضافة كيفية التراجع عن الأمر iptables -I؟ شكر!! - Evgeny
"iptables -D" متبوعة بأي شيء آخر لديك بعد "-I" في الأمر الأصلي. في الأساس ، ابحث عن الوثائق. - cjc


أنا استخدم السرد من netstatو lsof:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

لمعرفة ما إذا كان المنفذ قيد الاستخدام وما الذي يستخدمه.


8
2018-03-28 19:32



لا شيء يطالب مع أو بدون sudo - Dheeraj Thedijje
تضمين التغريدةDheerajThedijje - ثم هذا المنفذ غير مفتوح - warren
نعم لم يكن ، فهمت. - Dheeraj Thedijje


إذا كنت متصلاً بالنظام ويمكنك تشغيل الأمر كجذر ، فيمكنك التحقق من إخراج iptables

iptables -L -vn

هذا سوف يسرد قواعد جدار الحماية والمنافذ المستهدفة المفتوحة ACCEPT وأي منافذ مغلقة بشكل صريح REJECT.


7
2017-09-07 17:57



وإذا كان لديك firewalld ، فهو أبسط firewall-cmd --query-port=port/protocolعلى سبيل المثال firewall-cmd --query-port=80/tcp. - Agostino


lsof -i :ssh سوف تسرد جميع العمليات مع فتح منفذ ssh ، كل من الاستماع والاتصالات النشطة.


5
2018-01-25 21:45



اختصار sudo إذا لم يرد أي إخراج. - Elijah Lynn