[সম্পূর্ণ গাইড] উবুন্টুতে ওপেন পোর্ট কীভাবে চেক করবেন এবং সমস্যার সমাধান

目次

১. ভূমিকা

নেটওয়ার্ক ব্যবস্থাপনা এবং সার্ভার প্রশাসনের ক্ষেত্রে, পোর্টের অবস্থা সঠিকভাবে বোঝা অত্যন্ত গুরুত্বপূর্ণ। বিশেষ করে উবুন্টু ব্যবহার করার সময়, খোলা পোর্ট এবং সক্রিয় প্রক্রিয়া পরীক্ষা করা নিরাপত্তা ব্যবস্থা উন্নত করতে সাহায্য করে এবং দ্রুত সমস্যা সমাধান সক্ষম করে।

এই নিবন্ধটি উবুন্টুতে পোর্ট পরীক্ষা করার জন্য ব্যবহৃত মৌলিক কমান্ড এবং টুলসমূহের বিস্তারিত ব্যাখ্যা প্রদান করে। শিক্ষানবিস থেকে মধ্যবর্তী ব্যবহারকারীদের জন্য ডিজাইন করা, এটি ব্যবহারিক এবং অনুসরণ করা সহজ ধাপ প্রদান করে, তাই শেষ পর্যন্ত পড়ুন।

年収訴求

২. পোর্ট কী?

২.১ পোর্টের মৌলিক ধারণা

পোর্ট হলো কম্পিউটার এবং নেটওয়ার্ক ডিভাইসগুলো যা ডেটা পাঠানো এবং গ্রহণ করার জন্য ব্যবহার করে এমন একটি ভার্চুয়াল যোগাযোগ গেটওয়ে। বিশেষ করে, এটি একই আইপি অ্যাড্রেসে একই সাথে একাধিক অ্যাপ্লিকেশন যোগাযোগ করতে সক্ষম করে যাতে ডেটা সঠিক অ্যাপ্লিকেশনে চিহ্নিত এবং পরিচালিত হয়।

উদাহরণস্বরূপ, একটি ওয়েব সার্ভার এইচটিটিপি যোগাযোগের জন্য পোর্ট ৮০ ব্যবহার করে। যদি একই সার্ভার এসএসএইচ সংযোগ অনুমোদন করে, তাহলে এটি পোর্ট ২২ ব্যবহার করে। যেহেতু বিভিন্ন পরিষেবা তাদের পোর্ট নম্বর দ্বারা পৃথক করা হয়, তাই নেটওয়ার্ক ব্যবস্থাপনার জন্য পোর্টের অবস্থা পরীক্ষা করা অপরিহার্য।

২.২ পোর্টের প্রকারভেদ এবং ভূমিকা

পোর্টগুলোকে তিনটি প্রধান প্রকারে বিভক্ত করা হয়:

  1. সুপরিচিত পোর্ট (০–১০২৩)
  • বিশ্বব্যাপী মানকীকৃত এবং ব্যাপকভাবে ব্যবহৃত পরিষেবাগুলোর জন্য নির্ধারিত।

  • উদাহরণ:

  • এইচটিটিপি: ৮০
  • এইচটিটিপিএস: ৪৪৩
  • এসএসএইচ: ২২
  1. নিবন্ধিত পোর্ট (১০২৪–৪৯১৫১)
  • নির্দিষ্ট অ্যাপ্লিকেশন বা সংস্থাগুলো দ্বারা ব্যবহৃত।

  • উদাহরণ:

  • মায়াসিকুয়েল: ৩৩০৬
  • পোস্টগ্রেসিকুয়েল: ৫৪৩২
  1. গতিশীল পোর্ট (৪৯১৫২–৬৫৫৩৫)
  • ক্লায়েন্ট-সাইড যোগাযোগের জন্য প্রায়শই অস্থায়ী পোর্ট ব্যবহার করা হয়।

এই শ্রেণিবিভাগগুলো বোঝা পোর্টের ব্যবহার নির্ধারণ করতে সহজ করে।

৩. উবুন্টুতে পোর্ট কীভাবে পরীক্ষা করবেন

উবুন্টুতে পোর্টের অবস্থা পরীক্ষা করার জন্য বিভিন্ন টুল উপলব্ধ। এখানে আমরা চারটি ব্যবহারিক কমান্ড ব্যাখ্যা করব।

৩.১ ss কমান্ড ব্যবহার করে

ss কমান্ডটি লিনাক্সে একটি শক্তিশালী নেটওয়ার্ক ব্যবস্থাপনা টুল। এটি দ্রুত এবং বিস্তারিত সংযোগ তথ্য প্রদান করে।

মৌলিক কমান্ড:

sudo ss -ltn

অপশনের ব্যাখ্যা:

  • -l : শুধুমাত্র শোনা পোর্টগুলো প্রদর্শন করে।
  • -t : শুধুমাত্র টিসিপি প্রোটোকল সংযোগ দেখায়।
  • -n : ঠিকানা এবং পোর্ট নম্বর সংখ্যাতাত্ত্বিক ফরম্যাটে প্রদর্শন করে।

উদাহরণ আউটপুট:

State       Recv-Q Send-Q      Local Address:Port        Peer Address:Port  
LISTEN      0      128              0.0.0.0:22               0.0.0.0:*

৩.২ 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

৩.৩ 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)

৩.৪ 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

মূল বিষয়:

  • খোলা পোর্ট এবং তাদের সম্পর্কিত পরিষেবা প্রদর্শন করে।
  • বাহ্যিক সার্ভার স্ক্যান করার জন্য পূর্বানুমতি প্রয়োজন।

৪. ফায়ারওয়াল সেটিংস পরীক্ষা করা

উবুন্টুতে, নিরাপত্তা উন্নত করার জন্য ফায়ারওয়াল সাধারণত ব্যবহৃত হয়। ufw (আনকমপ্লিকেটেড ফায়ারওয়াল) একটি ব্যাপকভাবে ব্যবহৃত, সহজ কিন্তু শক্তিশালী টুল। এই বিভাগে 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

ব্যাখ্যা:

  • পোর্ট ২২-এ (SSH) TCP সংযোগ অনুমোদন করে।

একটি নির্দিষ্ট পোর্ট ব্লক করুন:

sudo ufw deny 80/tcp

ব্যাখ্যা:

  • পোর্ট ৮০-এ (HTTP) অ্যাক্সেস ব্লক করে।

শুধুমাত্র একটি নির্দিষ্ট IP অ্যাড্রেস অনুমোদন করুন:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

ব্যাখ্যা:

  • শুধুমাত্র IP অ্যাড্রেস 192.168.1.100 থেকে SSH সংযোগ অনুমোদন করে।

4.3 ফায়ারওয়াল সেটিংস রিসেট এবং পর্যালোচনা করা

ফায়ারওয়াল সেটিংস রিসেট করে নতুন করে শুরু করতে, নিম্নলিখিত কমান্ড ব্যবহার করুন:

sudo ufw reset

এই কমান্ডটি সকল নিয়ম মুছে ফেলে এবং ফায়ারওয়ালকে তার ডিফল্ট অবস্থায় পুনরুদ্ধার করে। পরিবর্তন করার পর সর্বদা নিয়মগুলো পর্যালোচনা করুন।

5. ব্যবহারিক উদাহরণ: একটি নির্দিষ্ট পোর্ট চেক করা

এখানে, আমরা SSH (পোর্ট ২২)-এর অবস্থা চেক করার উদাহরণ হিসেবে দেখাব।

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 হলো SSH সংযোগ পরিচালনাকারী ডেমন প্রসেস।
  • প্রসেস আইডি (PID) সার্ভিস বন্ধ বা পুনরায় শুরু করতে ব্যবহার করা যায়।

প্রসেস বন্ধ করতে:

sudo kill 1234

5.3 সমস্যা সমাধানের উদাহরণসমূহ

সমস্যা: পোর্টটি খোলা নয় বা অ্যাক্সেসযোগ্য নয়।

সমাধানের ধাপসমূহ:

  1. ফায়ারওয়াল সেটিংস চেক করুন:
sudo ufw status verbose
  1. যদি পোর্টটি ব্লক করা থাকে, তাহলে এটি অনুমোদন করুন:
sudo ufw allow 22/tcp
  1. প্রয়োজনে সার্ভিস চেক এবং পুনরায় শুরু করুন:
sudo systemctl restart ssh

6. পোর্ট নিরাপত্তার সেরা অনুশীলনসমূহ

পোর্ট পরিচালনা সরাসরি নেটওয়ার্ক নিরাপত্তার সাথে যুক্ত। নিম্নে নিরাপত্তা বাড়ানোর মূল পয়েন্টসমূহ দেওয়া হলো।

6.1 অপ্রয়োজনীয় পোর্ট বন্ধ করা

অব্যবহৃত পোর্টগুলো সম্ভাব্য আক্রমণ প্রতিরোধ করতে বন্ধ করা উচিত।

উদাহরণ: পোর্ট ৮০ বন্ধ করা

sudo ufw deny 80/tcp

6.2 পোর্ট স্ক্যানিং প্রতিরোধ করা

পোর্ট স্ক্যানিং হলো আক্রমণকারীদের দ্বারা সিস্টেমের দুর্বলতা খুঁজে বের করার একটি কৌশল। নিম্নলিখিত ব্যবস্থাগুলো এটি প্রতিরোধ করতে সাহায্য করতে পারে:

  1. ফায়ারওয়াল নিয়ম শক্তিশালী করা:
sudo ufw default deny incoming
  1. লগ পর্যবেক্ষণ করা:
sudo tail -f /var/log/ufw.log
  1. আক্রমণ সনাক্তকরণ টুলস ব্যবহার করা:
  • fail2ban-এর মতো টুলস সন্দেহজনক অ্যাক্সেস চেষ্টা স্বয়ংক্রিয়ভাবে ব্লক করতে পারে।

7. উপসংহার

এই নিবন্ধে Ubuntu-এ পোর্ট চেক করার বিস্তারিত ধাপসমূহ, ufw ব্যবহার করে ফায়ারওয়াল সেটিংস পরিচালনা এবং নিরাপত্তা ব্যবস্থা প্রয়োগ করার বিষয়ে আলোচনা করা হয়েছে।

7.1 মূল শিক্ষণীয় বিষয়সমূহ

  • পোর্ট বোঝা: পোর্টগুলি যোগাযোগের গেটওয়ে হিসেবে কাজ করে এবং এগুলি সুপরিচিত, নিবন্ধিত এবং গতিশীল পোর্টে বিভক্ত।
  • কমান্ড ব্যবহার করে পোর্ট চেক করা:
  • ss , netstat , lsof , এবং nmap এর মতো কমান্ডগুলি পোর্টের স্থিতি এবং চলমান প্রক্রিয়াগুলি চেক করতে সাহায্য করে।
  • ফায়ারওয়াল ব্যবস্থাপনা:
  • ufw ব্যবহার করে নির্দিষ্ট পোর্টগুলি অনুমোদন বা ব্লক করা যায়, যা নিরাপত্তা বাড়ায়।
  • নিরাপত্তা ব্যবস্থা:
  • অপ্রয়োজনীয় পোর্ট বন্ধ করা, লগ মনিটরিং করা এবং নিরাপত্তা টুলস ব্যবহার করা একটি নিরাপদ নেটওয়ার্ক পরিবেশ বজায় রাখতে সাহায্য করে।

৭.২ ভবিষ্যতের প্রয়োগ

পোর্ট ব্যবস্থাপনা নেটওয়ার্ক নিরাপত্তার একটি মৌলিক দিক। এই গাইড থেকে জ্ঞান প্রয়োগ করে একটি নিরাপদ সার্ভার পরিবেশ বজায় রাখুন।

FAQ: উবুন্টুতে পোর্ট চেক করা সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন

Q1. উবুন্টুতে যদি একটি পোর্ট খোলা না থাকে তাহলে আমি কী করব?

A:
যদি একটি পোর্ট খোলা না থাকে, তাহলে এই ধাপগুলি অনুসরণ করুন:

  1. ফায়ারওয়াল সেটিংস চেক করুন:
sudo ufw status verbose

যদি ফায়ারওয়াল পোর্টটি ব্লক করছে, তাহলে নিম্নলিখিত কমান্ড দিয়ে এটি অনুমোদন করুন:

sudo ufw allow [port number]/tcp
  1. সংশ্লিষ্ট সার্ভিস চলছে কিনা তা যাচাই করুন:
sudo systemctl status [service name]

উদাহরণ: SSH-এর জন্য, ব্যবহার করুন:

sudo systemctl status ssh

যদি সার্ভিস চলছে না, তাহলে এটি পুনরায় শুরু করুন:

sudo systemctl restart [service name]
  1. সার্ভিসটি সঠিক পোর্ট ব্যবহার করছে কিনা তা চেক করুন:

কনফিগারেশন ফাইল যাচাই করুন (যেমন, SSH-এর জন্য /etc/ssh/sshd_config চেক করুন) যাতে সঠিক পোর্ট সেট করা আছে তা নিশ্চিত করুন।

Q2. ss এবং netstat-এর মধ্যে পার্থক্য কী?

A:
ss এবং netstat উভয়ই নেটওয়ার্ক সংযোগ চেক করার টুল, কিন্তু এদের মধ্যে মূল পার্থক্য রয়েছে:

  • ss:
  • আধুনিক লিনাক্স সিস্টেমের জন্য সুপারিশকৃত।
  • দ্রুত এবং আরও বিস্তারিত তথ্য প্রদান করে।
  • উদাহরণ কমান্ড: sudo ss -ltn
  • netstat:
  • একটি পুরনো টুল যা ধীরে ধীরে অপ্রচলিত হচ্ছে।
  • সামঞ্জস্যতার জন্য অনেক সিস্টেমে এখনও উপলব্ধ।
  • উদাহরণ কমান্ড: sudo netstat -ltn

নতুন সিস্টেমের জন্য ss পছন্দনীয়।

Q3. আমার পোর্টগুলি স্ক্যান করছে কিনা তা কীভাবে শনাক্ত করব?

A:
পোর্ট স্ক্যানিং শনাক্ত করতে, নিম্নলিখিত পদ্ধতিগুলি চেষ্টা করুন:

  1. ফায়ারওয়াল লগ চেক করুন:
sudo tail -f /var/log/ufw.log

অস্বাভাবিক আইপি অ্যাড্রেস বা পুনরাবৃত্ত সংযোগের চেষ্টা খুঁজুন।

  1. একটি আক্রমণ শনাক্তকরণ সিস্টেম (IDS) ব্যবহার করুন:
  • fail2ban বা Snort-এর মতো টুল ইনস্টল এবং কনফিগার করুন যাতে দূষিত অ্যাক্সেস স্বয়ংক্রিয়ভাবে ব্লক করা যায়।
  1. আপনার নিজের সার্ভার nmap ব্যবহার করে স্ক্যান করুন:
sudo nmap localhost

খোলা পোর্টগুলি চেক করুন এবং অপ্রয়োজনীয় কোনোটি বন্ধ করুন।

Q4. একটি নির্দিষ্ট পোর্ট কোন প্রক্রিয়া ব্যবহার করছে তা কীভাবে চেক করব?

A:
একটি নির্দিষ্ট পোর্ট ব্যবহারকারী প্রক্রিয়াগুলি শনাক্ত করতে lsof কমান্ড ব্যবহার করুন:

sudo lsof -i :[port number]

উদাহরণ: পোর্ট ৮০ চেক করতে:

sudo lsof -i :80

উদাহরণ আউটপুট:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2   1234  www    4u   IPv4  12345 0t0      TCP *:http (LISTEN)

Q5. ufw ব্যবহার করে কেবল একটি নির্দিষ্ট আইপি অ্যাড্রেস কীভাবে অনুমোদন করব?

A:
কেবল একটি নির্দিষ্ট আইপি অ্যাড্রেস থেকে অ্যাক্সেস অনুমোদন করতে, নিম্নলিখিত কমান্ড ব্যবহার করুন:

sudo ufw allow from [IP address] to any port [port number] proto tcp

উদাহরণ: আইপি অ্যাড্রেস 192.168.1.100 থেকে কেবল SSH অ্যাক্সেস (পোর্ট ২২) অনুমোদন করুন:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

Q6. একটি সার্ভিসের পোর্ট নম্বর কীভাবে পরিবর্তন করব?

A:
একটি সার্ভিসের পোর্ট নম্বর পরিবর্তন করতে, এর কনফিগারেশন ফাইল সম্পাদনা করুন। SSH-এর জন্য এখানে একটি উদাহরণ:

  1. কনফিগারেশন ফাইল খুলুন:
sudo nano /etc/ssh/sshd_config
  1. Port সেটিং খুঁজে পোর্ট নম্বর পরিবর্তন করুন:
Port 2222
  1. SSH সার্ভিস পুনরায় শুরু করুন:
sudo systemctl restart ssh
  1. ফায়ারওয়ালে নতুন পোর্ট অনুমোদন করুন:
sudo ufw allow 2222/tcp

Q7. একসাথে একাধিক পোর্ট কি অনুমোদন করতে পারি?

A:
হ্যাঁ, আপনি নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করে একসাথে একাধিক পোর্ট অনুমোদন করতে পারেন:

  1. পোর্টের একটি পরিসর অনুমোদন করুন:
sudo ufw allow 1000:2000/tcp

ব্যাখ্যা: পোর্ট ১০০০ থেকে ২০০০-এ TCP সংযোগ অনুমোদন করে।

  1. একাধিক নির্দিষ্ট পোর্ট অনুমোদন করুন:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp