ufw ফায়ারওয়াল: অপ্রয়োজনীয় বন্ধ করা
পাঁচ মিনিটে ufw সেটআপ: প্রয়োজনীয় পোর্ট খোলা, বাকিগুলো বন্ধ, ঠিকানা অনুযায়ী অ্যাক্সেস সীমিত করা এবং নিজের SSH কেটে ফেলা এড়ানো।
আপডেট: ২৩ আগস্ট, ২০২৬
একটি নতুন মেশিনে নেটওয়ার্কে যেসব সার্ভিস শোনে, সবই খোলা থাকে। কিছু সার্ভিস আপনি সচেতনভাবে ইনস্টল করেছেন, কিছু প্যাকেজের সাথে এসেছে। একটি ফায়ারওয়াল এক ধাপেই এটি সমাধান করে: আপনি যা তালিকাভুক্ত করবেন তা ছাড়া বাকি সব বন্ধ থাকে।
ufw কার্নেল নিয়মের উপর একটি সহজ র্যাপার। বেশিরভাগ ক্ষেত্রেই এটি যথেষ্ট; আরও জটিল সেটআপ নিয়ে আলোচনা আছে nftables নিবন্ধে।
প্রাথমিক সেটআপ
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw enable
ufw status verbose
এখানে ক্রম গুরুত্বপূর্ণ: SSH নিয়মটি এনেবল করার আগে যোগ করা হয়। অন্যথায় ufw enable আপনার সংযোগ কেটে দেবে, এবং প্যানেলের কনসোল /hosting/vds/m/<id> বা রেসকিউ মোড দিয়ে আপনাকে আবার ঢুকতে হবে।
প্যানেলের কনসোল নেটওয়ার্কের উপর নির্ভর করে না, তাই আপনি সম্পূর্ণভাবে নিজেকে লক আউট করতে পারবেন না — তবে এতে সময় লাগে।
সাধারণ নিয়ম
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw limit 22/tcp
ufw delete allow 80/tcp
ufw status numbered
ufw delete 3
ufw limit যে কেউ ৩০ সেকেন্ডে ছয়টির বেশি সংযোগ খোলে তাকে ধীর করে দেয় — পাসওয়ার্ড ব্রুট-ফোর্সিংয়ের বিরুদ্ধে সস্তা সুরক্ষা। একই কাজের জন্য আরও নির্ভুল টুল হলো fail2ban।
allow from নিয়মটি সেইসব সার্ভিসের জন্য উপযোগী যেগুলো পাবলিক হওয়া উচিত নয়: ডেটাবেস, অ্যাডমিন প্যানেল, মেট্রিক্স এক্সপোর্টার।
ufw allow from 203.0.113.5 to any port 5432 proto tcp
ফলাফল যাচাই করুন
ufw status verbose
ss -tulpn
ss দেখায় সিস্টেম কী শুনছে, ufw status দেখায় বাইরে থেকে কী অনুমোদিত। তালিকা দুটির পার্থক্যই হলো আপনার বন্ধ করা সার্ভিসগুলো, এবং এটা ঠিক আছে। উল্টোটা খারাপ: ufw-তে একটি পোর্ট খোলা, কিন্তু কোনো লিসেনার নেই।
বাইরে থেকে পিং নয়, পোর্ট দিয়ে যাচাই করুন:
nc -vz <address> 443
Docker এবং ufw
মেশিনে Docker চললে মনে রাখবেন: কন্টেইনার পোর্ট ফরওয়ার্ডিং ufw নিয়মের আগে কার্নেল চেইনে পরিচালিত হয়। -p 5432:5432 দিয়ে চালু করা একটি কন্টেইনার ufw status-এ deny দেখালেও বাইরে থেকে পৌঁছানো যাবে। এমন পোর্ট লোকাল ইন্টারফেসে বাইন্ড করুন:
docker run -p 127.0.0.1:5432:5432 postgres
সাধারণ ভুল
| ভুল | পরিণতি | সমাধান |
|---|---|---|
SSH নিয়ম ছাড়া ufw enable | নেটওয়ার্ক অ্যাক্সেস হারানো | প্যানেল কনসোল দিয়ে ঢুকুন, ufw allow 22/tcp |
| SSH পোর্ট বদলেছেন, পুরনো নিয়ম রেখে দিয়েছেন | একই ঘটনা | আগে নিয়ম, তারপর পোর্ট |
| পোর্ট খোলা, সার্ভিস সাড়া দেয় না | সার্ভিস 127.0.0.1-এ শোনে | বাইন্ড অ্যাড্রেস বদলান |
| deny সত্ত্বেও কন্টেইনারে পৌঁছানো যায় | Docker ufw এড়িয়ে যায় | 127.0.0.1-এ বাইন্ড করুন |
কোনো পোর্ট বন্ধ করার আগে
ss -tulpnচালান এবং নিশ্চিত করুন সেখানে কী আছে তা আপনি বুঝছেন। বন্ধ করা মনিটরিং পোর্ট পরে "সার্ভিস ডাউন হয়ে গেছে" বলে মনে হয়।