লিনাক্সে পোর্ট কীভাবে বন্ধ করবেন?


38

বন্ধ বন্দরে আমার কিছু প্রশ্ন আছে, আমি মনে করি কিছু অদ্ভুত জিনিস পেয়েছি।

যখন আমি এক্সিকিউট ব্যবহার করি

nmap --top-ports 10 192.168.1.1

এটি দেখায় যে 23 / টিসিপি পোর্ট খোলা আছে।

তবে আমি যখন মৃত্যুদন্ড কার্যকর করি

nmap --top-ports 10 localhost

এটি দেখায় যে 23 / টিসিপি পোর্ট বন্ধ রয়েছে।

এর মধ্যে কোনটি সত্য? আমি আমার পুরো সিস্টেমটিতে এই বন্দরটি বন্ধ করতে চাই, আমি এটি কীভাবে করব?


10
তারা উভয় সত্য। টিসিপি পোর্টগুলি হোস্টের সাথে সম্পর্কিত নয়। তারা নেটওয়ার্ক ইন্টারফেসের সাথে যুক্ত। পার্থক্যটি সূক্ষ্ম তবে গুরুত্বপূর্ণ। ইন্টারফেসগুলি প্রায়শই হোস্টের মতো হয় তবে সর্বদা হয় না। এই ক্ষেত্রে (উত্তর হিসাবে বর্ণিত হয়েছে) (লুপব্যাক) ইন্টারফেস localhostঅ্যাক্সেস করা হয় lo। আইপি অ্যাড্রেসটি আপনার আসল ইন্টারফেসটি সম্ভবত সম্ভবত eth0বা কিছুটা অ্যাক্সেস করছে wlan0
strugee

3
এই প্রশ্নের আপাত নিরপেক্ষতা কিছু ভয়াবহ উত্তরের দিকে পরিচালিত করেছিল। এই প্রশ্নের জন্য আপনাকে ধন্যবাদ!
ডটানকোহেন

উত্তর:


47

এনএম্যাপ হ'ল দুর্দান্ত পোর্ট স্ক্যানার তবে কখনও কখনও আপনি আরও কিছু প্রামাণিক চাই। netstatইউটিলিটিটি ব্যবহার করে কোন পোর্টগুলি কোন পোর্টগুলি খোলে তা কার্নেলকে জিজ্ঞাসা করতে পারেন :

me @ myhost: ~ $ sudo netstat -tlnp
সক্রিয় ইন্টারনেট সংযোগ (কেবল সার্ভার)
প্রোটো রেক-কিউ প্রেরণ-কি স্থানীয় ঠিকানা বিদেশী ঠিকানা রাজ্যের পিআইডি / প্রোগ্রামের নাম
tcp 0 0 127.0.0.1:53 0.0.0.0:* তালিকাভুক্ত 1004 / dnsmasq    
tcp 0 0 0.0.0.0:22 0.0.0.0:* তালিকা 380 / এসএসডি        
tcp 0 0 127.0.0.1:631 0.0.0.0:* তালিকা 822 / কাপএসডি       
tcp6 0 0 ::: 22 ::: * তালিকা 380 / এসএসডি        
tcp6 0 0 :: 1: 631 ::: * তালিকা 822 / কাপএসডি       

আমি যে বিকল্পগুলি দিয়েছি সেগুলি হ'ল:

  • -t টিসিপি কেবল
  • -l কেবল পোর্ট শোনাচ্ছে
  • -n পরিষেবা এবং হোস্টের নামগুলি সন্ধান করবেন না, কেবল সংখ্যা প্রদর্শন করুন
  • -p প্রক্রিয়া সম্পর্কিত তথ্য দেখান (মূল অধিকার প্রয়োজন)

এই ক্ষেত্রে, আমরা দেখতে পারি যে sshdকোনো ইন্টারফেস (উপর শুনছে 0.0.0.0) পোর্ট 22, এবং cupsdলুপব্যাক (চালু শুনছে 127.0.0.1) পোর্ট 631. আপনার আউটপুট যে দেখাতে পারে telnetdস্থানীয় ঠিকানা আছে 192.168.1.1:23, যার অর্থ এটি লুপব্যাক অ্যাডাপ্টারের উপর সংযোগ উত্তর করা হবে না (যেমন আপনি পারবেন না telnet 127.0.0.1)

অন্যান্য সরঞ্জাম রয়েছে যা অনুরূপ তথ্য প্রদর্শন করবে (উদাহরণস্বরূপ lsofবা /proc), তবে নেটস্প্যাট সবচেয়ে বেশি উপলব্ধ widely এমনকি এটি উইন্ডোজ ( netstat -anb) এও কাজ করে । বিএসডি নেটস্যাটটি কিছুটা আলাদা: পরিবর্তে প্রক্রিয়া সম্পর্কিত তথ্য পেতে আপনাকে সোকস্ট্যাট (1) ব্যবহার করতে হবে।

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

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


14

একটি লিনাক্স সিস্টেমের একটি তথাকথিত লুপব্যাক ইন্টারফেস রয়েছে, যা অভ্যন্তরীণ যোগাযোগের জন্য। এর হোস্টনামটি localhostএবং এর আইপি ঠিকানা 127.0.0.1

আপনি যখন চালনা nmapকরেন localhost, আপনি আসলে ভার্চুয়াল লুপব্যাক ইন্টারফেসে পোর্টস্ক্যান চালান । 192.168.1.1আপনার শারীরিক (সম্ভবত eth0) ইন্টারফেসের আইপি ঠিকানা ।

সুতরাং আপনি nmapদুটি পৃথক নেটওয়ার্ক ইন্টারফেস চালিয়েছেন, এ কারণেই খোলা বন্দরের মধ্যে পার্থক্য রয়েছে। তারা উভয়ই সত্য।

যদি আপনার টিসিপি পোর্ট 23 খোলা থাকে তবে সম্ভবত আপনার কোনও telnetসার্ভার চলমান রয়েছে (এটি এনক্রিপশনের অভাবে কোনও ভাল জিনিস নয়) বা আপনার মেশিনে আপনার একরকম ট্রোজান ঘোড়া রয়েছে।


1
তাহলে আমি কীভাবে এটি বন্ধ করতে পারি?
ব্যবহারকারী74080

4
@ user74080 আপনি iptablesকাছের উত্তর হিসাবে পরামর্শ হিসাবে আপনি একটি বিধি যুক্ত করতে পারেন , তবে এটি পরিষেবা অব্যবহৃত রাখবে, যা সম্পদ গ্রহণ করে। আপনার যদি telnetdচলমান থাকে তবে কেবল এটি বন্ধ করুন।
জিমুম

12

পোর্টটি "বন্ধ" করতে আপনি ব্যবহার করতে পারেন iptables

sudo iptables -A INPUT -p tcp --dport 23 -m state --state NEW,ESTABLISHED -j DROP

1
এই উত্তরে, "বন্দরটি বন্ধ করা" এর অর্থ "এতে কোনও ট্র্যাফিক উপেক্ষা করা"। বন্দরটি এখনও উন্মুক্ত, তবে এটি আর পৌঁছানো যায় না। DROPএটি নোট করুন যা এটি যেমন বলেছে তেমন করে, এটি প্যাকেটটি দেখে এবং তারপরে এড়িয়ে যায়। সাধারণত (iptables সক্ষম ব্যতীত), কার্নেল একটি ICMP পোর্টটি অ্যাক্সেসযোগ্য প্যাকেটটি ফেরত পাঠাত (যা REJECTপরিবর্তে লক্ষ্য সহ সিমুলেট করা যায় DROP)।
লেকেনস্টেইন

3
@ লেকেনস্টেইন আইসিএমপি পোর্টটি ইউডিপির পক্ষে পৌঁছনীয় নয়। এর সাথে উত্তর দেওয়ার উপযুক্ত প্যাকেটটি একটি টিসিপি আরএসটি প্যাকেট, যা REJECTলেখার মাধ্যমে লক্ষ্যটি ব্যবহার করে তৈরিও করা যায় -j REJECT --reject-with tcp-reset
কাস্পার্ড

এটির কম স্কোর থাকা সত্ত্বেও, আসলে প্রশ্নের উত্তর দেওয়ার এটিই প্রথম উত্তর। যে কেউ এখানে আরও স্কোর যুক্ত করতে পারে, দয়া করে এটি করুন।
এনজোরআর

2

আপনি যদি nmap localhostএটি করেন তবে এটি আপনাকে একটি পৃথক পরিস্থিতি সম্পর্কে বলে: লিনাক্সের কিছু প্রোগ্রাম সার্ভার হিসাবে কাজ করে যদিও সেগুলি কেবল স্থানীয়ভাবে ব্যবহৃত হয়। এটি কারণ অন্যান্য প্রোগ্রামগুলি সেগুলিতে সংযুক্ত হওয়া সার্ভারের মতো ব্যবহার করে। সুতরাং উভয় উত্তর সত্য, যেহেতু আপনি আলাদা কিছু জিজ্ঞাসা করছেন।

পোর্ট 23 টেলনেটের জন্য ব্যবহৃত হয়। সাধারণত আর ব্যবহার করা হয় না। কাজ করার চেষ্টা করুন nmap -sV 192.168.1.1খুঁজে বের করতে কোন প্রোগ্রাম বন্দর প্রর্দশিত হবে।

(192 ... একটি স্থানীয় নেটওয়ার্ক আইপি, তাই nmap <your outside world IP>ফলসও সম্ভাব্য ফায়ারওয়াল সেটিংস ইত্যাদির কারণে পৃথক ফলাফল দেবে)


1

যদি আপনি চলমান একটি সেবা এবং পোর্ট 23 শোনা আছে, এটা তর্কসাপেক্ষ ক্লিনার হয় বন্ধ প্রক্রিয়া যা বন্দর 23 (সম্ভবত কথা শোনে telnet) চলমান রাখতে চেয়ে এবং ঘনিষ্ঠ অথবা অবরোধ বন্দর 23 ব্যবহার iptables

এমনকি একটি ফায়ারওয়াল ব্লক অনুপস্থিতিতে পোর্ট কোন প্রক্রিয়া শোনা আছে, তখন কোন প্রচেষ্টা (সংযুক্ত হওয়ার জন্য তা একটি তাৎক্ষণিক ফলে উচিত "সংযোগ প্রত্যাখ্যান করেছে" ECONNREFUSEDথেকে connect(2))

প্রক্রিয়াটি (এবং এর পিড) সন্ধান করার একটি উপায় যা পোর্ট 23-এ শোনে, যদি এমন প্রক্রিয়া থাকে তবে তা হ'ল:

sudo lsof -i -P | grep ':23 '

উপরের -iতালিকাগুলিতে খোলা ইন্টারনেট বন্দরগুলি (ইউডিপি এবং টিসিপি উভয়ই), এবং -পি পরিষেবাগুলির নামগুলিতে পোর্টগুলির অনুবাদ (মাধ্যমে /etc/services) বাধা দেয়

23 পোর্টে চলমান প্রক্রিয়াটি শোনার পরে, আপনি প্রক্রিয়া গাছটি দেখে (কীভাবে বলে) দেখুন তা কীভাবে শুরু হয়েছিল তা বুঝতে পারবেন pstree। যদি এর পিতামাতা init(খুব সম্ভবত) হয় তবে আপনি অধীনে প্রক্রিয়াটির নামটি অনুসন্ধান করতে পারেন /etc। উদাহরণ:

sudo grep -r telnet /etc

এটি আপনাকে প্রথম স্থানে দৌড়ানো থেকে অক্ষম করার সর্বোত্তম উপায়ে নিয়ে যাওয়া উচিত।


গ্রেপ ব্যবহার করার দরকার নেই (এবং যদি থাকে তবে কোটের প্রয়োজন হয় না)। আপনি ব্যবহার করতে পারেন sudo lsof -Pi :23
থিওফিল

উদ্ধৃতিগুলি একটি ভাল কারণে রয়েছে। শুধুমাত্র টেলনেট পোর্ট ( 23) মেলে কিনা তা নিশ্চিত করার জন্য । তোমার পরে একটি স্পেস অন্তর্ভুক্ত করবেন না তাহলে :23এটা ম্যাচ হবে :234, :2345ইত্যাদি
arielf

আহ আমি দেখি. এটি গ্রেপের জন্য অর্থবোধ করে। ঘটনাচক্রে, দেখে মনে হচ্ছে যে গ্রেপ ( lsof -Pi :23) ব্যতীত কমান্ডটি একটি সঠিক মিলের সন্ধান করে।
থিওফিল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.