Skip to content
VDS · নিরাপত্তা

পাসওয়ার্ড ব্রুট ফোর্সের বিরুদ্ধে 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।