উবুন্টুতে ওপেন পোর্ট কীভাবে চেক করবেন: অপরিহার্য কমান্ড ও নিরাপত্তা টিপস

目次

১. পরিচিতি

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

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

২. পোর্ট কী?

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

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

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

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

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

  1. ওয়েল-নোন পোর্টস (০–১০২৩)
  • সাধারণভাবে ব্যবহৃত সার্ভিসগুলোর জন্য বিশ্বব্যাপী স্ট্যান্ডার্ডাইজড পোর্ট নম্বর নির্ধারিত। wp:list /wp:list

    • উদাহরণসমূহ:
    • এইচটিটিপি: ৮০
    • এইচটিটিপিএস: ৪৪৩
    • এসএসএইচ: ২২
  1. রেজিস্টার্ড পোর্টস (১০২৪–৪৯১৫১)
  • নির্দিষ্ট অ্যাপ্লিকেশন বা কোম্পানিগুলোর দ্বারা ব্যবহৃত পোর্ট। wp:list /wp:list

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

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

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

উবুন্টুতে পোর্ট স্ট্যাটাস চেক করার জন্য বিভিন্ন টুলস প্রদান করে। এই বিভাগে চারটি বিশেষভাবে উপযোগী কমান্ড ব্যাখ্যা করা হয়েছে।

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

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 কমান্ডটি অনেক বছর ধরে নেটওয়ার্ক ম্যানেজমেন্ট টুল হিসেবে ব্যাপকভাবে ব্যবহৃত হয়েছে। যদিও এটি ধীরে ধীরে 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 নির্দিষ্ট পোর্টগুলো ব্যবহার করা প্রসেসগুলো চিহ্নিত করার জন্য উপযোগী।

একটি নির্দিষ্ট পোর্ট চেক করুন:

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 একটি নেটওয়ার্ক স্ক্যানিং টুল যা প্রায়শই নিরাপত্তা ডায়াগনস্টিক্সের জন্য ব্যবহৃত হয়।

লোকালহোস্ট স্ক্যান করুন:

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 (Uncomplicated Firewall), বিশেষ করে, একটি সহজ তবে শক্তিশালী ব্যবস্থাপনা টুল যা এই উদ্দেশ্যে ব্যাপকভাবে ব্যবহৃত হয়। এই বিভাগে ufw ব্যবহার করে পোর্টের অবস্থা কীভাবে পরীক্ষা করা যায় এবং কনফিগারেশন কীভাবে পরিবর্তন করা যায় তা ব্যাখ্যা করা হয়েছে।

4.1 Check ufw Status

ফায়ারওয়াল অবস্থা পরীক্ষা করার কমান্ড:

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 Allowing or Blocking Ports

একটি পোর্ট অনুমোদনের কমান্ড:

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 Resetting and Reviewing Settings

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

sudo ufw reset

এটি সব নিয়ম মুছে দেয় এবং ফায়ারওয়ালকে তার ডিফল্ট অবস্থায় ফিরিয়ে দেয়। যদি আপনি সেটিংস রিসেট করেন, তবে প্রয়োজনীয় নিয়মগুলি পুনরায় পর্যালোচনা এবং প্রয়োগ করতে নিশ্চিত হন।

5. Practical Example: Checking the Status of a Specific Port

এই বিভাগে SSH (পোর্ট ২২) ব্যবহার করে একটি ব্যবহারিক উদাহরণ দেওয়া হয়েছে, যাতে পোর্টের অবস্থা কীভাবে যাচাই করা যায় তা দেখানো হয়।

5.1 Check Port Status

উদাহরণ কমান্ড:

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 Check Running Process

উদাহরণ কমান্ড:

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 Troubleshooting Example

সমস্যা: পোর্ট বন্ধ বা অপ্রাপ্য হলে কী করা উচিত।

ধাপসমূহ:

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

6. Port Management and Security

পোর্ট ব্যবস্থাপনা সরাসরি নেটওয়ার্ক নিরাপত্তার সাথে যুক্ত। এই বিভাগে পোর্ট খোলা ও বন্ধ করা এবং নিরাপদ কনফিগারেশন বজায় রাখার মূল বিষয়গুলো ব্যাখ্যা করা হয়েছে।

6.1 Closing Unused Ports

যে পোর্টগুলি ব্যবহার করা হচ্ছে না, সেগুলি বন্ধ করা উচিত যাতে অননুমোদিত অ্যাক্সেসের ঝুঁকি কমে।

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

sudo ufw deny 80/tcp

6.2 Countermeasures Against Port Scanning

পোর্ট স্ক্যানিং হল একটি কৌশল, যার মাধ্যমে আক্রমণকারীরা সিস্টেমের দুর্বলতা শনাক্ত করার চেষ্টা করে। নিম্নলিখিত পদ্ধতিগুলি আপনার সার্ভারকে রক্ষা করতে সহায়তা করে:

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

৭. সারাংশ

এই প্রবন্ধে উবুন্টুতে পোর্ট চেক করার নির্দিষ্ট পদ্ধতি ও কমান্ড ব্যাখ্যা করা হয়েছে। এছাড়াও ufw ব্যবহার করে ফায়ারওয়াল ব্যবস্থাপনা এবং ব্যবহারিক নিরাপত্তা ব্যবস্থা নিয়ে আলোচনা করা হয়েছে।

৭.১ মূল বিষয়বস্তু

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

৭.২ ব্যবহারিক প্রয়োগ

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

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

প্রশ্ন ১. উবুন্টুতে কোনো পোর্ট খোলা না থাকলে আমি কী করব?

উত্তর:
নিম্নলিখিত ধাপগুলি চেষ্টা করুন:

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

পোর্টটি ব্লক করা থাকলে, নিম্নলিখিত কমান্ড দিয়ে অনুমোদন করুন:

sudo ufw allow [portnumber]/tcp
  1. সার্ভিসটি চালু আছে কিনা যাচাই করুন:
    sudo systemctl status [servicename]
    

SSH এর উদাহরণ:
sudo systemctl status ssh

প্রয়োজন হলে রিস্টার্ট করুন:

sudo systemctl restart [servicename]
  1. সঠিক পোর্ট কনফিগার করা হয়েছে কিনা নিশ্চিত করুন: SSH এর জন্য /etc/ssh/sshd_config এর মতো সার্ভিস কনফিগারেশন ফাইল চেক করে সঠিক পোর্ট নম্বর নিশ্চিত করুন।

প্রশ্ন ২. ss এবং netstat এর মধ্যে পার্থক্য কী?

উত্তর:
উভয় টুল নেটওয়ার্ক সংযোগ পরীক্ষা করতে ব্যবহৃত হয়, তবে তাদের পার্থক্য নিম্নরূপ:

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

নতুন সিস্টেমের জন্য ss সুপারিশ করা হয়।

প্রশ্ন ৩. কীভাবে পোর্ট স্ক্যানিং সনাক্ত করা যায়?

উত্তর:
নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন:

  1. ফায়ারওয়াল লগ পরীক্ষা করুন:
    sudo tail -f /var/log/ufw.log
    

সন্দেহজনক IP ঠিকানা বা পুনরাবৃত্তি অ্যাক্সেস প্রচেষ্টা খুঁজুন।

  1. IDS/IPS টুল ইনস্টল করুন:
  • fail2ban বা Snort এর মতো টুল ব্যবহার করে অননুমোদিত অ্যাক্সেস প্রচেষ্টা স্বয়ংক্রিয়ভাবে ব্লক করুন।
  1. nmap দিয়ে আপনার নিজস্ব সার্ভার স্ক্যান করুন:
    sudo nmap localhost
    

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

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

উত্তর:
lsof কমান্ড ব্যবহার করুন:

sudo lsof -i :[portnumber]

পোর্ট ৮০ এর উদাহরণ:

sudo lsof -i :80

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

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

প্রশ্ন ৫. ufw ব্যবহার করে কীভাবে শুধুমাত্র নির্দিষ্ট IP ঠিকানাকে অনুমতি দেব?

উত্তর:
নিম্নলিখিত কমান্ড ব্যবহার করুন:

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

উদাহরণ: 192.168.1.100 থেকে SSH অ্যাক্সেস অনুমোদন করুন:

sudo ufw allow from 192.168.1.100 to any port 22 proto tcp

প্রশ্ন ৬. পোর্ট নম্বর কীভাবে পরিবর্তন করা যায়?

উত্তর:
প্রাসঙ্গিক সার্ভিসের কনফিগারেশন ফাইল সম্পাদনা করুন।
SSH এর উদাহরণ:

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

প্রশ্ন ৭. কি একসাথে একাধিক পোর্ট অনুমোদন করা যায়?

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

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

ব্যাখ্যা: ১০০০ থেকে ২০০০ পর্যন্ত পোর্ট অনুমোদন করে।

  1. পোর্টগুলোকে আলাদাভাবে অনুমোদন করা:
    sudo ufw allow 22/tcp
    sudo ufw allow 80/tcp