এই মডিউল কী করে #
ফায়ারওয়াল হলো সার্ভারের সদর দরজা: এটি সিদ্ধান্ত নেয় কোন সংযোগ ভেতরে ঢুকবে আর কোনগুলো প্রত্যাখ্যাত হবে। এই মেশিনগুলোতে সেই কাজটি করে ufw (Ubuntu-র ফায়ারওয়াল), আর firewall মডিউলটি আপনাকে ufw-এর সিনট্যাক্স মুখস্থ না করেই এটি চালানোর একটি সুবিধাজনক নিয়ন্ত্রণ দেয়।
এটি দিয়ে আপনি এক নজরে ফায়ারওয়ালের অবস্থা দেখতে পারেন (সক্রিয় অবস্থা, ডিফল্ট নীতি ও নিয়ম), আপনাকে ঝামেলা দিচ্ছে এমন একটি IP বা রেঞ্জ ম্যানুয়ালি ব্লক করতে পারেন, প্রয়োজন ফুরালে সেই ব্লক মুক্ত করতে পারেন এবং ufw যা প্রয়োগ করে তার সাথে কনফিগারেশন সমন্বিত রেখে পোর্ট খুলতে বা বন্ধ করতে পারেন।
অনুপ্রবেশ চেষ্টার (SSH ব্রুট ফোর্স ইত্যাদি) স্বয়ংক্রিয় নিষেধাজ্ঞা fail2ban নিজেই সামলায়। এই মডিউলটি আপনার ম্যানুয়াল ব্লক নিয়ে কাজ করে: block, unblock ও flush কেবল আপনার হাতে যোগ করা জিনিস স্পর্শ করে এবং fail2ban-এর নিষেধাজ্ঞায় কখনো হস্তক্ষেপ করে না।
সাধারণ কাজ #
আপনি কী করতে চান তা বেছে নিন। প্রতিটি রেসিপিতে কমান্ডটি আগে থেকেই লেখা আছে — শুধু নিজের IP বা পোর্ট বসান এবং কপি করুন চাপুন।
1
ফায়ারওয়ালের অবস্থা দেখুন
এটি সক্রিয় কিনা, এর ডিফল্ট নীতি এবং এর কতগুলো নিয়ম আছে যাচাই করুন।
SSH-এর মাধ্যমে আপনার সার্ভারে সংযোগ করুন এবং সারসংক্ষেপ চান:
$ sudo imaxe firewall statusএকটি স্ক্রিপ্টের জন্য প্রয়োজন? --json যোগ করুন এবং আপনি একই তথ্য মেশিন-পাঠযোগ্য আকারে পাবেন:
$ sudo imaxe firewall status --json2
একটি অপব্যবহারকারী IP ব্লক করুন
আপনাকে বিরক্ত করছে এমন একটি IP বা রেঞ্জের প্রবেশাধিকার কেটে দিন।
একটি নির্দিষ্ট IP ব্লক করুন, কারণ লিখে রাখুন যাতে পরে মনে থাকে:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso"কেবল একটি অস্থায়ী ব্লক চান? --ttl দিয়ে একটি সময়কাল দিন এবং এটি নিজে থেকেই উঠে যাবে। আপনি CIDR নোটেশনে একটি পুরো রেঞ্জও ব্লক করতে পারেন:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso" --ttl 24h
$ sudo imaxe firewall block 203.0.113.0/24 --reason "escaneo"--ttl সেট করলে, সময় ফুরালে ব্লকটি নিজে থেকেই শেষ হয়ে যায়।3
কোন IP ব্লক করেছি দেখুন
আপনার চালু থাকা ম্যানুয়াল ব্লকের তালিকা পর্যালোচনা করুন।
আপনার হাতে ব্লক করা IP ও রেঞ্জের তালিকা দিন (মনে রাখুন: fail2ban-এর নিষেধাজ্ঞা এখানে দেখা যায় না):
$ sudo imaxe firewall blocked4
একটি IP আনব্লক করুন
আর প্রয়োজন নেই এমন একটি ম্যানুয়াল ব্লক মুক্ত করুন।
আপনার ব্লক করা ঠিক সেই IP বা রেঞ্জ মুক্ত করুন (যেভাবে blocked-এ দেখা যায়):
$ sudo imaxe firewall unblock 203.0.113.105
একটি পোর্ট খুলুন বা বন্ধ করুন
একটি নতুন সার্ভিসকে ঢুকতে দিন বা আপনি আর দেন না এমন একটি বন্ধ করুন।
একটি পোর্ট খুলুন (একটি মন্তব্যসহ যাতে আপনি জানেন এটি কীসের জন্য)। --from দিয়ে আপনি কে ঢুকবে তা সীমিত করতে পারেন:
$ sudo imaxe firewall allow 443/tcp --comment "https"
$ sudo imaxe firewall allow 5432/tcp --from 203.0.113.0/24 --comment "postgres interno"আপনি আর ব্যবহার করেন না এমন একটি পোর্ট বন্ধ করুন:
$ sudo imaxe firewall deny 8080/tcpfirewall.yml-এ প্রতিফলিত হয়। imaxe firewall rules list দিয়ে এটি যাচাই করুন।আপনি SSH-এর মাধ্যমে সংযুক্ত থাকলে 22 পোর্ট (SSH) বন্ধ করবেন না: আপনি সার্ভারে প্রবেশাধিকার হারাবেন। মডিউলটি ঠিক সেই আশঙ্কা এড়াতেই ডিফল্টভাবে 22/tcp অনুমোদিত রাখে। আর মনে রাখুন flush আপনার সব ম্যানুয়াল ব্লক একসাথে মুছে ফেলে।
সারসংক্ষেপ #
imaxe firewall <subcomando> [<ip>|<puerto>] [flags]সব সাবকমান্ডের জন্য root প্রিভিলেজ প্রয়োজন (sudo ব্যবহার করুন) কারণ এগুলো ufw-এর উপর কাজ করে ও /etc/imaxe/-তে লেখে। স্ক্রিপ্টিং-এর উপযোগী মেশিন-পাঠযোগ্য আউটপুট পেতে status, blocked বা rules list-এ --json যোগ করুন।
সাবকমান্ড #
| সাবকমান্ড | কী করে | প্রাসঙ্গিক ফ্ল্যাগ |
|---|---|---|
| status | ফায়ারওয়ালের অবস্থা: সক্রিয় অবস্থা, ডিফল্ট নীতি, নিয়মের সংখ্যা ও ম্যানুয়াল ব্লক। | --json |
| blocked | ম্যানুয়ালি ব্লক করা IP/রেঞ্জের তালিকা দেয় (fail2ban-এর নিষেধাজ্ঞা অন্তর্ভুক্ত নয়)। | --json |
| block | একটি IP বা রেঞ্জ ম্যানুয়ালি ব্লক করে, ঐচ্ছিক কারণ ও সময়কালসহ। | --reason, --ttl |
| unblock | একটি ম্যানুয়াল ব্লক মুক্ত করে। fail2ban-এর নিষেধাজ্ঞা স্পর্শ করে না। | — |
| flush | সব ম্যানুয়াল ব্লক মুছে ফেলে (ধ্বংসাত্মক)। fail2ban-এর নিষেধাজ্ঞা স্পর্শ করে না। | --yes |
| rules list | পোর্ট নিয়মের তালিকা দেয় (অনুমোদিত পোর্ট, উৎস)। | --json |
| allow | একটি পোর্ট খোলে এবং কনফিগে তা প্রতিফলিত করে। | --from, --comment |
| deny | একটি পোর্ট বন্ধ করে এবং কনফিগে তা প্রতিফলিত করে। | --from |
| reload | ufw রিলোড করে (এর সক্রিয় নিয়ম পুনরায় প্রয়োগ করে)। | — |
rules পোর্ট নিয়ম পরিচালনা একত্র করে; আপাতত এর একমাত্র সাবকমান্ড হলো rules list।
আর্গুমেন্ট ও ফ্ল্যাগ #
| আর্গুমেন্ট / ফ্ল্যাগ | ধরন | ডিফল্ট | বিবরণ |
|---|---|---|---|
| <ip>[/cidr] আবশ্যক | string | — | block ও unblock-এ কাজ করার জন্য IP বা CIDR রেঞ্জ (যেমন 203.0.113.10 বা 203.0.113.0/24)। |
| <port>[/proto] আবশ্যক | string | — | allow ও deny-এ কাজ করার জন্য পোর্ট (যেমন 443 বা 443/tcp)। |
| --reason | string | — | block-এ: ব্লকের কারণ (তথ্যমূলক)। |
| --ttl | duration | permanent | block-এ: ব্লকের সময়কাল (যেমন 24h)। ডিফল্টভাবে স্থায়ী। |
| --from | cidr | any | allow/deny-এ: উৎস একটি নির্দিষ্ট CIDR-এ সীমিত করে। |
| --comment | string | — | allow-এ: নিয়মের জন্য বর্ণনামূলক মন্তব্য। |
| --yes | bool | false | flush-এ: প্রম্পট ছাড়াই নিশ্চিত করে (ধ্বংসাত্মক অপারেশন)। |
| --json | bool | false | status/blocked/rules list-এ: ফলাফল stdout-এ JSON হিসেবে দেয়। |
ফাইল ও পাথ #
| পাথ | বিষয়বস্তু |
|---|---|
| /etc/imaxe/firewall.yml | মডিউলের কনফিগারেশন: অনুমোদিত পোর্ট যা allow/deny ufw-এর সাথে সমন্বিত রাখে। |
firewall.yml-এর উদাহরণ:
allow:
- { port: 22, proto: tcp, comment: "ssh" }
- { port: 443, proto: tcp, comment: "https" }প্রস্থান কোড ও লগ #
প্রতিটি চালানো একটি কোড ফেরত দেয় যা আপনি echo $? দিয়ে যাচাই করতে পারেন — স্ক্রিপ্টে চেইন করার জন্য উপযোগী:
ডিবাগ করার সময় অবস্থা ও নিয়ম সরাসরি অনুসরণ করুন:
$ sudo imaxe firewall status
$ sudo imaxe firewall rules listসমস্যা সমাধান #
| উপসর্গ | সম্ভাব্য কারণ | সমাধান |
|---|---|---|
| আনব্লক করার সময় NOTFOUND (কোড 3) আসে | IP-টি আপনার সেট করা ব্লকের সাথে হুবহু মেলে না (উদাহরণস্বরূপ /cidr বাদ পড়েছে)। | imaxe firewall blocked চালান এবং unblock-এর জন্য এন্ট্রিটি হুবহু কপি করুন। |
আমি একটি IP ব্লক করেছি কিন্তু unblock-এর পরও এটি নিষিদ্ধ | ব্লকটি আপনি নয়, fail2ban সেট করেছিল। | এই মডিউলটি কেবল ম্যানুয়াল ব্লক মুক্ত করে; স্বয়ংক্রিয় নিষেধাজ্ঞা fail2ban আলাদাভাবে সামলায়। |
| আমি একটি পোর্ট খুলেছি কিন্তু কোনো ট্রাফিক আসে না | নিয়মটি ufw-তে আছে কিন্তু একটি বাইরের ফায়ারওয়াল (সিকিউরিটি গ্রুপ) এখনো বন্ধ। | imaxe firewall rules list দিয়ে যাচাই করুন এবং আপনার ক্লাউড প্রদানকারীতেও পোর্টটি খুলুন। |
| নিয়ম বদলানোর পর SSH প্রবেশাধিকার হারিয়েছি | 22 পোর্ট বন্ধ বা সীমিত হয়ে গিয়েছিল। | প্রদানকারীর কনসোলের মাধ্যমে প্রবেশ করুন এবং imaxe firewall allow 22/tcp দিয়ে 22/tcp পুনরায় অনুমোদন করুন। |
Firewall মডিউল নিয়ে আটকে গেছেন?
«imaxe <module> status --json» এর আউটপুট সহ আমাদের লিখুন, আমরা দ্রুত উত্তর দেব।