লিনাক্স সার্ভারে পোর্টটি খোলা বা বন্ধ আছে কিনা তা পরীক্ষা করে দেখুন?


209

কোনও পোর্ট লিনাক্স সার্ভারে শুনছে কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


2
আপনি কী জিজ্ঞাসা করছেন এটি পুরোপুরি পরিষ্কার নয়। "খোলা" বলতে কী বোঝ? আপনি বোঝাতে চাইছেন যে কোনও সার্ভার সেই বন্দরে শুনছে? অথবা আপনি কি বোঝাতে চেয়েছেন এটি সিস্টেম ফায়ারওয়াল দ্বারা অনুমোদিত? অথবা কি?
ডেভিড শোয়ার্টজ

আমি মনে করি যে আমার সার্ভারে একটি পোর্ট ব্লক করা হচ্ছে এবং এটি পুনরায় অবরোধ মুক্ত / খুলতে চাই।
জেমস অ্যান্ডারসন

14
netstat -an | grep PORTNUMBER | grep -i listenযদি আউটপুট খালি থাকে তবে পোর্টটি ব্যবহার হচ্ছে না।
অটোম্যাটিক্স

উত্তর:


187

কোনও প্রক্রিয়া টিসিপি বা ইউডিপি পোর্ট সহ শুনতে পায় কিনা তা আপনি পরীক্ষা করতে পারেন netstat -tuplen

কিছু বন্দর বাইরে থেকে অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করতে (এটি সম্ভবত আপনি চান) অন্য সিস্টেম থেকে এনএমএপের মতো পোর্ট স্ক্যানার ব্যবহার করতে পারেন । আপনি যে হোস্টটি যাচাই করতে চান তার উপর এনএম্যাপ চালানো আপনার উদ্দেশ্যটির জন্য যথেষ্ট অকেজো।


54
গনুহ netstat কমান্ড পরামিতি জানে -t, -u, -p, -l, -eএবং, -n। অপশন পার্সারকে ধন্যবাদ হিসাবে এটি প্রকাশ করা যেতে পারে -tuplenlinux.die.net/man/8/netstat
joschi

3
এছাড়াও, telnetকমান্ডটি কেবলমাত্র টিসিপি সমর্থন করে, তাই যদি আপনি যাচাই করতে চান যে পরিষেবাটি অন্য কোনও প্রোটোকলে চালিত হয় তবে আপনি ভাগ্যছাড়া।
joschi

1
হ্যাঁ, আমি উইন্ডোজটি ব্যবহার করছিলাম তাই বিভ্রান্তি।
ডেক্সটার

2
এনসি হ'ল টেলনেটের বিকল্প (আরও ভাল)। এটি ইউডিপিও সমর্থন করে।
Tsvetomir Dimitrov

1
উবুন্টু দিয়ে ব্যবহার করুন: sudo netstat -tuplen। এটি আপনাকে কেবল নিজেরাই নয়, অন্যদেরও মালিকানাধীন প্রক্রিয়াগুলি দেবে এবং এটি অতিরিক্ত বিবরণ (যেমন পিআইডি / প্রোগ্রামের নাম হিসাবে) প্রিন্ট করবে যদি সেগুলি ইতিমধ্যে কোনও অ-রুট ব্যবহারকারী হিসাবে প্রদর্শিত না হয়।
জন রেড

102

কোনও টিসিপি পোর্ট খোলা থাকলে পরীক্ষার দ্রুততম উপায় (আপনার কাছে থাকা কোনও হার্ডওয়্যার ফায়ারওয়াল সহ) দূরবর্তী কম্পিউটার থেকে টাইপ করা (যেমন আপনার ডেস্কটপ):

telnet myserver.com 80

যা সেই সার্ভারে 80 পোর্টের সাথে একটি সংযোগ খোলার চেষ্টা করবে। আপনি যদি সময় বের করেন বা অস্বীকার করেন তবে পোর্টটি খোলা নেই :)


1
বলে যে এটি "টেলনেট" কে কমান্ড হিসাবে স্বীকৃতি দেয় না ...
জেমস অ্যান্ডারসন

6
"yum ইনস্টল টেলনেট" টেলনেট ক্লায়েন্ট প্যাকেজ ইনস্টল করতে।
সিজেসি

8
উপরে লিখিত:if you get a time out or deny, the port is not open
শিল্প

2
আপনার যদি টেলনেট ইনস্টল করার অনুমতি নেই? অন্য কোন মানক সরঞ্জাম আছে?
কেসি বাল্টজ

3
আমি "টেলনেট মাইহোস্ট 22" চেষ্টা করেছি এবং একটি সময়সীমা পেয়েছি। কিন্তু আমি যে মেশিনে ssh করতে পারেন। !
টর্স্টেন ব্রোঞ্জার

29

ঠিক আছে, সংক্ষেপে, আপনার একটি সার্ভার রয়েছে যাতে আপনি লগ ইন করতে পারেন। কিছু বন্দরে কিছু শুনছে কিনা তা আপনি দেখতে চান। রুট হিসাবে, চালান:

netstat -nlp

এটি টিসিপি এবং ইউডিপি পোর্টগুলিতে শোনার প্রক্রিয়াগুলির একটি তালিকা দেখায়। আপনার আগ্রহী প্রক্রিয়া এবং / অথবা আপনি যে বন্দর নম্বর দেখতে চান তার জন্য আপনি এটি স্ক্যান করতে (বা গ্রেপ) করতে পারেন।

আপনি যে প্রক্রিয়াটি প্রত্যাশা করেছেন তা যদি না থাকে তবে আপনার সেই প্রক্রিয়াটি শুরু করা উচিত এবং আবার নেটস্ট্যাট পরীক্ষা করা উচিত। যদি প্রক্রিয়াটি থাকে তবে এটি এমন একটি ইন্টারফেস এবং পোর্টে শুনছে যা আপনি প্রত্যাশা করেননি, তবে একটি কনফিগারেশন সমস্যা রয়েছে (যেমন, এটি শোনা যায় তবে কেবল লুপব্যাক ইন্টারফেসে, তাই আপনি দেখতে পাবেন 127.0.0.1:3306 এবং মাইএসকিউএলের জন্য ডিফল্ট কনফিগারেশনের ক্ষেত্রে 3306 পোর্টের জন্য অন্য কোনও লাইন নেই)।

যদি প্রক্রিয়াটি শেষ হয়ে যায় এবং আপনি যে বন্দরের প্রত্যাশা করেন সেটি শুনতে পেল, আপনি নিজের অফিস / বাড়িতে আপনার ম্যাকবুক থেকে সেই বন্দরে "টেলনেট" চালানোর চেষ্টা করতে পারেন, যেমন,

 telnet xxxxxxxxxxxx.co.uk 443

এটি যদি (স্ট্যান্ডার্ড পোর্টগুলি ধরে নিচ্ছে) পরীক্ষা করে দেখবে যে এসএসএলের জন্য একটি ওয়েব সার্ভার কনফিগার করা আছে। নোট করুন যে টেলনেট ব্যবহার করে এই পরীক্ষাটি কেবল তখনই কাজ করবে যদি প্রক্রিয়াটি টিসিপি পোর্টে শুনছে। যদি এটি কোনও ইউডিপি বন্দর হয় তবে আপনি যে ক্লায়েন্টের সাথে এটি সংযোগ স্থাপন করতে যাচ্ছিলেন তার সাথে আপনি চেষ্টা করতে পারেন। (আমি দেখতে পাচ্ছি যে আপনি 224 বন্দরটি ব্যবহার করেছেন This এটি মাস্কডিলার, এবং এটি কী তা আমার কোনও ধারণা নেই)।

যদি পরিষেবাটি থাকে তবে আপনি এটি বাহ্যিকভাবে পেতে না পারেন তবে ফায়ারওয়াল আপনাকে অবরুদ্ধ করছে। সেক্ষেত্রে চালান:

 iptables -L -n

এটি আপনার সিস্টেমে সংজ্ঞায়িত হিসাবে ফায়ারওয়াল সংক্রান্ত সমস্ত বিধি প্রদর্শন করবে। আপনি এটি পোস্ট করতে পারেন, তবে, সাধারণত, আপনি যদি ইনপুট চেইনে সমস্ত কিছু মঞ্জুরি না দিয়ে থাকেন তবে সম্ভবত আপনাকে সম্ভবত বন্দরে ট্র্যাফিকের অনুমতি দিতে হবে:

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

বা এই লাইন বরাবর কিছু। কিছু অচেনা ব্যক্তি আপনাকে ইন্টারনেটে যা বলেছে তার ভিত্তিতে আপনার ফায়ারওয়াল কমান্ডগুলি অন্ধভাবে চালাবেন না। আপনি কি করছেন তা বিবেচনা করুন।

যদি বাক্সে আপনার ফায়ারওয়াল আপনার পছন্দসই ট্র্যাফিকের অনুমতি দিচ্ছে, তবে আপনার হোস্টিং সংস্থা ফায়ারওয়াল চালাচ্ছে (উদাহরণস্বরূপ, তারা কেবল এসএসএইচ (22 / টিসিপি), এইচটিটিপি (80 / টিসিপি) এবং এইচটিটিপিএস (443 / টিসিপি) অনুমতি দিচ্ছে এবং অন্যান্য সমস্ত আগত ট্র্যাফিক অস্বীকার করে)। এই ক্ষেত্রে, এই সমস্যাটি সমাধান করার জন্য আপনাকে তাদের সাথে একটি হেল্পডেস্কের টিকিট খুলতে হবে, যদিও আমি মনে করি আপনার সিপ্যানেলে কিছু থাকতে পারে যা এটির অনুমতি দিতে পারে।


আপনি কীভাবে আইপিটিবেলস-আই কমান্ডটি পূর্বাবস্থায় আনতে পারবেন? ধন্যবাদ !!
ইভজেনি

1
"আইপিটিবেল-ডি" এর পরে মূল কমান্ডে "-I" এর পরে আপনার যা কিছু ছিল। মূলত, ডকুমেন্টেশন সন্ধান করুন।
সিজেসি

11

আমি কম্বো ব্যবহার করি netstatএবং lsof:

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

বন্দরটি ব্যবহার হচ্ছে এবং এটি কী ব্যবহার করছে তা দেখতে।



1
@ ধীরাজ থেদিজজে - তারপরে সেই বন্দরটি খোলা নেই
ওয়ারেন

হ্যাঁ তা ছিল না, বুঝেছি।
ধীররাজ থেদিজে

7

আপনি যদি সিস্টেমের সাথে সংযুক্ত থাকেন এবং রুট হিসাবে একটি কমান্ড চালাতে পারেন তবে আপনি iptables এর আউটপুট পরীক্ষা করতে পারেন

iptables -L -vn

এই ফায়ারওয়ালের নিয়মনীতি তালিকা প্রস্তুত করা যাবে এবং যা পোর্ট খোলা লক্ষ্য হয় ACCEPTএবং কোন স্পষ্টভাবে বন্ধ পোর্ট লক্ষ্য REJECT


এবং যদি আপনি firewalld, এটি সহজ ব্যাপার firewall-cmd --query-port=port/protocol, যেমন firewall-cmd --query-port=80/tcp
Agostino

6

lsof -i :ssh শোনার এবং সক্রিয় সংযোগ উভয়ই এসএস পোর্টের সাথে সমস্ত প্রক্রিয়া তালিকাবদ্ধ করবে।


প্রিফিক্স sudoযদি এটি কোনও আউটপুট না ফেরায়।
এলিজা লিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.