পোর্ট: কোনগুলো খুলবেন এবং কীভাবে চেক করবেন
সাধারণ সার্ভিসগুলোর কোন পোর্ট প্রয়োজন, মেশিন কী লিসেন করছে তা কীভাবে দেখবেন, বাহ্যিক অ্যাভেইলেবিলিটি কীভাবে চেক করবেন, এবং পোর্ট বন্ধ থাকলে কী করবেন।
আপডেট: ২৩ আগস্ট, ২০২৬
একটি পোর্ট হলো একটি সংখ্যা, যা সিস্টেমকে জানায় কোন সার্ভিসটি আগত কানেকশন গ্রহণ করবে। নিয়মটি সহজ: আপনি আসলে যা ব্যবহার করেন, কেবল সেটিই খোলা থাকা উচিত। প্রতিটি অতিরিক্ত খোলা পোর্ট হলো আরেকটি দরজা, যা কেউ দুর্বলতা খুঁজতে পরীক্ষা করবে।
সাধারণ পোর্ট নম্বর
| পোর্ট | সার্ভিস | বাইরে থেকে খোলা |
|---|---|---|
| 22 | SSH | হ্যাঁ, বাঞ্ছনীয়ভাবে অ্যাড্রেস দ্বারা সীমাবদ্ধ |
| 80 | HTTP | হ্যাঁ, যদি আপনার ওয়েবসাইট থাকে |
| 443 | HTTPS | হ্যাঁ, যদি আপনার ওয়েবসাইট থাকে |
| 25, 465, 587 | মেইল | ইনবাউন্ড — কেবল যদি আপনি নিজের মেইল সার্ভার চালান। আউটবাউন্ড আমাদের দিকে বন্ধ থাকে এবং অনুরোধে খোলা হয় |
| 3306 | MySQL | না, কেবল লোকাল |
| 5432 | PostgreSQL | না, কেবল লোকাল |
| 6379 | Redis | না, কেবল লোকাল |
| 27017 | MongoDB | না, কেবল লোকাল |
| 25565 | Minecraft | হ্যাঁ, যদি এটি একটি গেম সার্ভার হয় |
মেইল সম্পর্কে একটি নোট: ইনবাউন্ড কানেকশন সীমাবদ্ধ নয়, অন্যদিকে 25, 465 এবং 587-এ আউটবাউন্ড কানেকশন নোড পর্যায়ে বন্ধ থাকে যতক্ষণ না আপনি আমাদের খুলতে বলেন। মেশিনের ভেতরের নিয়ম এটি পরিবর্তন করে না — বিস্তারিত জানতে দেখুন মেইল সার্ভার: কেন এটি কঠিন এবং কী বিবেচনা করবেন।
ডেটাবেস প্রায় কখনোই বাইরে উন্মুক্ত থাকে না। যদি আপনার কাজের কম্পিউটার থেকে অ্যাক্সেস প্রয়োজন হয়, সঠিক উপায় হলো একটি SSH টানেল, খোলা পোর্ট নয়:
ssh -L 5432:127.0.0.1:5432 artem@<address>
মেশিনটি কী শুনছে
ss -tulpn
ss -tlpn | grep 443
lsof -i -P -n | grep LISTEN
পোর্ট নম্বরের আগে অ্যাড্রেসটি দেখুন। 127.0.0.1:5432 মানে সার্ভিসটি কেবল ভেতর থেকে পাওয়া যায় — আপনি যত নিয়মই যোগ করুন না কেন, এটি বাইরে থেকে পৌঁছানো যায় না। 0.0.0.0:5432 মানে সার্ভিসটি সব নেটওয়ার্ক ইন্টারফেসে খোলা এবং অবশ্যই ফায়ারওয়াল দ্বারা সুরক্ষিত থাকতে হবে।
বাইরে থেকে পরীক্ষা করা
আপনার কম্পিউটার থেকে:
nc -vz <address> 443
curl -I http://<address>
ping দিয়ে পরীক্ষা করা অর্থহীন: ICMP এবং TCP ভিন্ন জিনিস; ping ব্লক থাকলেও একটি পোর্ট কাজ করতে পারে, এবং উল্টোটাও।
পোর্ট বন্ধ: ধাপে ধাপে সমস্যা সমাধান
- সার্ভিসটি চলছে কি?
systemctl status <service> - এটি সঠিক অ্যাড্রেসে শুনছে কি?
ss -tulpn—127.0.0.1নয় - ফায়ারওয়াল এটি অনুমোদন করে কি?
ufw status verboseবাnft list ruleset - Docker কি বাধা দিচ্ছে? প্রকাশিত কন্টেইনার পোর্ট ufw বাইপাস করে
- সার্ভিস লগ দেখুন:
journalctl -u <service> -n 50
ক্রমটি গুরুত্বপূর্ণ: বেশিরভাগ ক্ষেত্রে সমস্যা ফায়ারওয়ালে নয়, বরং দ্বিতীয় ধাপে থাকে।
একটি সার্ভিসের পোর্ট পরিবর্তন করা
উদাহরণস্বরূপ, SSH সরানো:
sed -i "s/^#\?Port 22/Port 2222/" /etc/ssh/sshd_config
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
আপনি নতুন পোর্টে লগইন করতে পারেন কি না তা একটি আলাদা উইন্ডোতে যাচাই করুন, এবং কেবল তারপর পোর্ট 22-এর নিয়মটি সরান। বিস্তারিত জানতে দেখুন SSH হার্ডেনিং।
সাধারণ ভুল
| লক্ষণ | কারণ | সমাধান |
|---|---|---|
Connection refused | সার্ভিসটি চলছে না | systemctl status, লগ দেখুন |
Connection timed out | ফায়ারওয়াল প্যাকেট বাদ দিচ্ছে | নিয়মগুলো যাচাই করুন |
| লোকালে কাজ করে, বাইরে থেকে নয় | 127.0.0.1-এ বাইন্ড করা | কনফিগে অ্যাড্রেস পরিবর্তন করুন |
Address already in use | পোর্টটি অন্য সার্ভিস দখল করেছে | ss -tulpn এবং অতিরিক্ত সার্ভিসটি বন্ধ করুন |
কোন পোর্ট খোলার আগে যাচাই করুন সেখানে কী উত্তর দিচ্ছে। পুরনো পরীক্ষা-নিরীক্ষার একটি ভুলে যাওয়া পোর্ট হ্যাকের সাধারণ প্রবেশপথ; দেখুন আক্রমণের লক্ষণ।