পাসওয়ার্ড ব্রুট ফোর্সের বিরুদ্ধে Fail2ban
Fail2ban ইনস্টল ও কনফিগার করার পদ্ধতি: SSH ও ওয়েব ফর্ম ব্রুট ফোর্স ব্লক করা, নিজের ঠিকানা হোয়াইটলিস্ট করা, কাজ করছে কি না যাচাই করা এবং নিজেকে আনব্লক করা।
আপডেট: ২৩ আগস্ট, ২০২৬
Fail2ban লগ পড়ে, একটি নির্দিষ্ট অ্যাড্রেস থেকে ব্যর্থ লগইন প্রচেষ্টা গণনা করে এবং ফায়ারওয়াল রুল দিয়ে সেটি সাময়িকভাবে ব্লক করে। এটি কী-ভিত্তিক লগইন প্রতিস্থাপন করে না, তবে বেশিরভাগ ব্যাকগ্রাউন্ড ব্রুট-ফোর্স ট্রাফিক সরিয়ে দেয় এবং আপনার লগের লোড কমায়।
ইনস্টলেশন ও বেসিক সেটআপ
apt install -y fail2ban
নিজের ফাইল /etc/fail2ban/jail.local ব্যবহার করুন — jail.conf-এ করা এডিট আপডেটে ওভাররাইট হয়ে যায়:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 203.0.113.5
banaction = ufw
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 24h
systemctl enable --now fail2ban
fail2ban-client status
fail2ban-client status sshd
আপনার বাসা বা অফিসের অ্যাড্রেস ignoreip-এ দিন — এটি নিজেকে ব্যান করা থেকে আপনার সুরক্ষা। আপনার অ্যাড্রেস বদলে গেলে প্যানেলে /hosting/vds/m/<id>-এর কনসোলই আপনার নিরাপত্তা বলয়: এটি নেটওয়ার্ক ও রুল নির্বিশেষে কাজ করে।
banaction অবশ্যই আপনার ফায়ারওয়ালের সাথে মিলতে হবে: ufw-এর জন্য ufw, nftables-এর জন্য nftables-multiport।
ফলাফল কোথায় দেখবেন
fail2ban-client status sshd
tail -f /var/log/fail2ban.log
journalctl -u fail2ban -n 50
স্ট্যাটাসে ব্যর্থ প্রচেষ্টার সংখ্যা ও ব্যান হওয়া অ্যাড্রেসের তালিকা দেখা যায়। পাবলিক অ্যাড্রেসে দিনে কয়েকশো গণনা স্বাভাবিক, এটি টার্গেটেড অ্যাটাকের লক্ষণ নয়।
একটি অ্যাড্রেস আনব্যান করুন (নিজেরটিসহ):
fail2ban-client set sshd unbanip 203.0.113.5
SSH-এর বাইরেও সুরক্ষা
Fail2ban এমন যেকোনো লগের সাথে কাজ করতে পারে যেখানে ব্যর্থ প্রচেষ্টা দেখা যায়।
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
logpath = /var/log/nginx/error.log
[postfix-sasl]
enabled = true
নিজের অ্যাপ্লিকেশনের জন্য একটি ফিল্টার লাগবে — /etc/fail2ban/filter.d/-এ একটি ফাইল, যেখানে রেগুলার এক্সপ্রেশনে অ্যাড্রেসটি <HOST> হিসেবে চিহ্নিত থাকে:
[Definition]
failregex = ^.*login failed.*ip=<HOST>.*$
ignoreregex =
আসল লগের বিপরীতে এক্সপ্রেশনটি টেস্ট করুন:
fail2ban-regex /var/log/myapp.log /etc/fail2ban/filter.d/myapp.conf
এই কমান্ড দেখায় কত লাইন মিলেছে। শূন্য মিল মানে রুলটি ভুল — আর চুপচাপ ব্যর্থ হওয়া সুরক্ষা একেবারে না থাকার চেয়েও খারাপ।
সাধারণ ভুল
| ভুল | পরিণতি | সমাধান |
|---|---|---|
jail.conf-এ এডিট | আপডেটে হারিয়ে যায় | jail.local-এ লিখুন |
ignoreip-এ আপনার অ্যাড্রেস নেই | একদিন নিজেকেই ব্যান করবেন | এটি যোগ করুন, বা প্যানেল কনসোল দিয়ে কানেক্ট করুন |
banaction আপনার ফায়ারওয়ালের সাথে মেলে না | ব্যান প্রয়োগ হয় না | ufw বা nftables-এর সাথে মিলিয়ে নিন |
| ফিল্টার লগ ফরম্যাটের সাথে মেলে না | সুরক্ষার বদলে নীরবতা | fail2ban-regex দিয়ে যাচাই করুন |
| সার্ভিস systemd লগ পড়তে পারে না | খালি স্ট্যাটাস | backend = systemd সেট করুন |
সত্যিকারভাবে টেস্ট করুন: বাইরের একটি অ্যাড্রেস থেকে ইচ্ছাকৃতভাবে নির্ধারিত সংখ্যকবার ভুল পাসওয়ার্ড দিন এবং নিশ্চিত করুন এটি ব্যান তালিকায় পড়ে। কনফিগার না করা fail2ban নিরাপত্তার ভ্রান্ত অনুভূতি তৈরি করে।
ফায়ারওয়ালেই কানেকশন রেট লিমিট দিয়ে এটি পূর্ণ করুন — ufw limit 22/tcp।