VPS-এ UFW firewall কিভাবে সেটআপ করবেন
UFW দিয়ে VPS firewall সেটআপ করুন। ডিফল্টভাবে সব ব্লক করুন, শুধু দরকারি পোর্ট অনুমোদন করুন। SSH অনুমোদন না করে UFW চালু করলে নিজেকে বাইরে বন্দি করবেন, তাই আগে SSH allow করুন।
UFW কী এবং আপনি কেন এটি চান
UFW-এর পূর্ণরূপ হলো Uncomplicated Firewall, এবং এই নামটি সম্পূর্ণ সত্যি। এটি Linux kernel-এ উপস্থিত ফায়ারওয়ালের একটি সহজব্যবহারযোগ্য ফ্রন্ট এন্ড। তাই সরাসরি নিয়ম লেখার বদলে আপনি ufw allow 22/tcp-এর মতো ছোট কমান্ড টাইপ করতে পারেন। একটি নতুন VPS-এ প্রতিটি লিসেনিং সার্ভিস ডিফল্টভাবে ইন্টারনেট থেকে অ্যাক্সেসযোগ্য থাকে। একটি ফায়ারওয়াল এই অবস্থাটি উল্টে দেয়: আপনি সবকিছু বাধা দেন, এরপর আপনি যে কয়টি পোর্ট ব্যবহার করেন শুধু সেগুলো অনুমোদন করেন। এই একটি পরিবর্তন মাত্র চারটি কমান্ডে আপনার বেশিরভাগ ঝুঁকি দূর করে দেয়।
ফায়ারওয়াল স্পর্শ করার আগে জেনে নিন কী কী লিসেন করছে, কারণ একটি ফায়ারওয়াল এই সার্ভিসগুলোর ভাগ্য নির্ধারণ করে। ss -tlnp দিয়ে কী কী লিসেন করছে তা পড়া হলো সঠিক প্রথম ধাপ।
নিজেকে বাইরে বন্দি করা থেকে রক্ষা করে এমন একটি নিয়ম
ফায়ারওয়াল ব্যবহারে মানুষকে ভয় দেখায় যে ভুলটি এখানেই। আপনি UFW সক্রিয় করেন এবং ডিফল্টভাবে সব সংযোগ ব্লক করে দেন। কিন্তু আপনি SSH অনুমোদন করেননি। তাই ফায়ারওয়াল চালু হওয়ার সাথে সাথে আপনার নিজের সংযোগ বিচ্ছিন্ন হয়ে যায় এবং আপনি আর ফিরে যেতে পারেন না। UFW সক্রিয় করার আগে সবসময় SSH অনুমোদন করুন। এই সহজ উপায়েই আপনি এই সমস্যা এড়াতে পারেন। নিচের ধাপগুলো নিরাপদ ক্রমানুসারে দেওয়া হয়েছে।
তবুও যদি এমন হয়ে যায়, তবে আপনি আটকে যাবেন না। আপনার প্রোভাইডারের ওয়েব কনসোল VNC বা সিরিয়াল পোর্টের মাধ্যমে কাজ করে, SSH-এর মাধ্যমে নয়। সেখানে আপনি লগইন করে ufw disable চালাতে পারেন অথবা অনুপস্থিত নিয়মটি যোগ করতে পারেন।
ধাপ 1: ডিফল্ট নীতিগুলি নির্ধারণ করুন
প্রথমে UFW-কে নির্দেশ দিন যাতে সমস্ত ইনকামিং ট্রাফিক প্রত্যাখ্যান করা হয় এবং সমস্ত আউটগোয়িং ট্রাফিক অনুমোদিত হয়:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming হলো গুরুত্বপূর্ণ অংশ। এর অর্থ হলো, কোনো সুস্পষ্ট অনুমোদন নিয়ম না থাকলে বাইরের জন্য সেই পোর্টটি বন্ধ থাকবে, এমনকি কোনো সার্ভিস সেখানে লিসেন করলেও। allow outgoing আপনার সার্ভারকে আপডেট ইত্যাদির জন্য স্বাভাবিকভাবে ইন্টারনেটে পৌঁছাতে দেয়। এই দুটি কমান্ড শুধুমাত্র নীতি পরিবর্তন করে; আপনি ধাপ 3-এ UFW সক্ষম না করা পর্যন্ত কিছুই কার্যকর হবে না।
ধাপ 2: আপনার আসলে প্রয়োজনীয় পোর্টগুলো অনুমোদন করুন
সক্রিয় করার আগে, SSH খুলে রাখুন যাতে আপনার সংযোগ বজায় থাকে:
sudo ufw allow 22/tcpUFW আপনার জন্য SSH-এ রেট-লিমিটও করতে পারে: sudo ufw limit 22/tcp পোর্টটি অনুমোদন করে কিন্তু তিরিশ সেকেন্ডে ছয় বা তার বেশি সংযোগ স্থাপনকারী যেকোনো ঠিকানা অবরুদ্ধ করে। এতে কোনো অতিরিক্ত সফটওয়্যার ছাড়াই ব্রুট-ফোর্স স্ক্রিপ্টগুলোর প্রভাব কমে যায়।
আপনি যদি একটি ওয়েব সার্ভার পরিচালনা করেন, তবে HTTP এবং HTTPS-ও অনুমোদন করুন:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpশুধুমাত্র সেই পরিষেবাগুলো অনুমোদন করুন যেগুলো আপনি সর্বজনীনভাবে প্রদান করেন। 5432 পোর্টে Postgres-এর মতো একটি ডেটাবেস প্রায় কখনোই অনুমোদন নিয়ম পাওয়ার কথা নয়। এর পরিবর্তে এটিকে 127.0.0.1-এ বাইন্ড করুন যাতে এটি শুধুমাত্র সেই মেশিনেই অ্যাক্সেসযোগ্য থাকে। আপনি যে প্রতিটি পোর্ট খুলবেন সেটি এমন একটি দরজা যা আপনাকে এখন রক্ষা করতে হবে, তাই তালিকাটি ছোট রাখুন।
আপনি এখানে আপনার সার্ভারের জন্য ufw কমান্ডের সম্পূর্ণ ক্রম তৈরি করতে পারেন, এরপর সেগুলো ক্রমানুসারে চালাতে পারেন:
ধাপ 3: সক্রিয় করুন, এবং নিশ্চিত করুন যে এটি চালু আছে
sudo ufw enableএটি সতর্ক করে যে কমান্ডটি বিদ্যমান SSH সংযোগগুলিকে ব্যাহত করতে পারে। যেহেতু আপনি ধাপ 2-এ 22/tcp অনুমোদন করেছেন, তাই আপনার সেশনটি টিকে থাকে। ফলাফল নিশ্চিত করুন:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN Anywhereএখানে দুটি বিষয় পড়ুন। Status: active মানে ফায়ারওয়াল চলছে। এবং প্রতিটি নিয়ম দুবার দেখা যায়, একবার সাধারণভাবে এবং একবার (v6) সহ, যা জানায় যে UFW IPv4-এর পাশাপাশি IPv6-ও পরিচালনা করছে। যদি (v6) লাইনগুলি অনুপস্থিত থাকে, তবে আপনার IPv6 দিকটি অপরিচালিত, যা নিজেই একটি ফাঁদ এবং এটি IPv6 ফায়ারওয়াল পোস্টে আলোচনা করা হয়েছে।
পরে নিয়ম পরিচালনা
নিয়মগুলি নম্বরসহ দেখতে, যাতে আপনি একটি মুছতে পারেন:
sudo ufw status numbered
sudo ufw delete 3একটি পোর্ট কেবল একটি ঠিকানা থেকে অনুমোদন করতে, যা একটি অ্যাডমিন পরিষেবাকে শুধু আপনার নিজের IP-এ উন্মুক্ত করার একটি ভালো উপায়:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpফায়ারওয়াল একটি স্তর। এটি নিয়ন্ত্রণ করে কী একটি পোর্টে পৌঁছাতে পারে, কিন্তু এটি এমন কাউকে ধীর করে না যে আপনি খোলা রেখেছেন এমন একটি পোর্ট, যেমন SSH-এ বারবার আঘাত হানছে। সেটির জন্য, বারবার অপরাধীদের নিষিদ্ধ করতে SSH-এর সামনে Fail2ban যোগ করুন। গভীরতায় প্রতিরক্ষা মানে প্রতিটি স্তর অন্যগুলি যা পারে না তা ঢেকে দেয়।
ফায়ারওয়াল তখনই অর্থবহ হয় যখন আপনি জানেন পোর্ট কী এবং পরিষেবাগুলি কীভাবে শোনে, এবং একটি কনফিগার করা হলো একটি নতুন VPS-এ প্রথম 10 মিনিটের একটি ধাপ।
FAQ
UFW চালু করলে কি আমার SSH সেশন বিচ্ছিন্ন হবে?
আগে SSH অনুমোদন করলে নয়। sudo ufw enable এর আগে sudo ufw allow 22/tcp চালান। ফায়ারওয়াল এখন পোর্ট 22 অনুমতি দেয় বলে আপনার সংযোগ বজায় থাকে। বিপদ হলো SSH অনুমোদনের নিয়ম ছাড়া একটি default-deny ফায়ারওয়াল চালু করা, কারণ এতে আপনার সংযোগ বিচ্ছিন্ন হয়। এটি ঘটলে আপনার প্রোভাইডারের VNC বা সিরিয়াল কনসোলে লগইন করুন এবং ufw disable চালান।
একটি VPS-এ আমার কোন পোর্টগুলো খোলা উচিত?
শুধুমাত্র সেগুলো যা আপনি পাবলিকের জন্য দেন। সার্ভার পরিচালনার জন্য SSH (22/tcp), এবং ওয়েবসাইট চালালে HTTP ও HTTPS (80/tcp, 443/tcp)। বাকি সব অস্বীকার করা অবস্থায় রাখুন। ডেটাবেসের মতো অভ্যন্তরীণ পরিষেবাগুলো 127.0.0.1-এ বাইন্ড করা উচিত এবং এগুলোর জন্য কোনো ফায়ারওয়াল নিয়ম দেওয়া উচিত নয়, যাতে নেটওয়ার্ক থেকে এগুলো কখনো অ্যাক্সেসযোগ্য না হয়।
UFW কি IPv6 পরিচালনা করে?
আধুনিক Ubuntu-এ হ্যাঁ: /etc/default/ufw-এ IPV6=yes সেট করা থাকে, তাই প্রতিটি নিয়ম উভয় স্ট্যাকে প্রযোজ্য হয় এবং ufw status একটি (v6) সাফিক্স সহ IPv6 নিয়মগুলো দেখায়। এটি যেভাবে এখনো ভুল হতে পারে তা IPv6 ফায়ারওয়াল ফাঁদ-এ আলোচনা করা হয়েছে।
আমি কীভাবে একটি UFW নিয়ম মুছব?
ইনডেক্স নম্বর সহ নিয়মগুলো তালিকাভুক্ত করতে sudo ufw status numbered চালান, তারপর sudo ufw delete N চালান যেখানে N হলো আপনার মুছতে চাওয়া নিয়মের নম্বর। আপনি স্পেসিফিকেশন অনুসারেও মুছতে পারেন, যেমন sudo ufw delete allow 80/tcp।
আমি কীভাবে একটি পোর্ট কেবল একটি IP ঠিকানা থেকে অনুমোদন করব?
সাধারণ allow এর পরিবর্তে একটি from নিয়ম ব্যবহার করুন। কেবল আপনার অফিস ঠিকানাকে PostgreSQL-এ অ্যাক্সেস দিতে sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp চালান। একটি default-deny নীতির সাথে একটি নিয়ম পোর্ট খোলার আগে পর্যন্ত সবার কাছে পোর্টটি বন্ধ থাকে, তাই এই from নিয়মটিই একমাত্র প্রবেশপথ: সম্পূর্ণ ইন্টারনেট ব্লক থাকে এবং কেবল আপনার নির্দিষ্ট করা ঠিকানাটি অ্যাক্সেস পায়। সাধারণ allow 5432/tcp যোগ করবেন না, কারণ এটি পোর্টটি সবার জন্য খুলে দেবে। এটি একটি ডেটাবেস বা অ্যাডমিন প্যানেল উন্মুক্ত করার সবচেয়ে নিরাপদ উপায়। sudo ufw status verbose দিয়ে এটি নিশ্চিত করুন, যা পোর্টের পাশে সোর্স ঠিকানা দেখায়।