در دنیای دیجیتال که سرورها قلب تپنده بسیاری از کسبوکارها هستند، امنیت سرورها از اولویتهای اصلی محسوب میشود. هر سرویسی که به اینترنت متصل است، در معرض تهدیدات سایبری مانند حملات هکری قرار دارد. مدیران سرور و توسعهدهندگان وب بهخوبی با این چالشها آشنا هستند، بهویژه زمانی که صحبت از پروتکلهایی مانند SSH میشود. این پروتکل که برای دسترسی امن به سرورها استفاده میشود، اغلب هدف هکرهایی است که با روشهای مختلف سعی در نفوذ و ایجاد اختلال دارند. یک نفوذ موفق میتواند خسارات جبرانناپذیری به همراه داشته باشد. یکی از روشهای رایج هکرها، حملات بروتفورس است که در آن با آزمایش تعداد زیادی ترکیب نام کاربری و رمز عبور، تلاش میکنند به سیستم دسترسی پیدا کنند. این حملات با استفاده از ابزارهای خودکار میتوانند در کسری از زمان ترکیبهای بیشماری را امتحان کنند. خوشبختانه، ابزارهایی مانند Fail2Ban وجود دارند که به مدیران سرور کمک میکنند تا با این تهدیدات مقابله کنند. این ابزار به دلیل کارایی و انعطافپذیری، به یکی از گزینههای محبوب برای حفاظت از سرورها تبدیل شده است. در این مقاله، به این میپردازیم که Fail2Ban چیست، چگونه کار میکند و چطور میتوانید آن را روی سرورهای لینوکس، بهویژه اوبونتو، نصب و پیکربندی کرد.
Fail2Ban چیست؟
Fail2Ban یک ابزار امنیتی قدرتمند است که برای محافظت از سرورها در برابر حملات مخرب طراحی شده است. این ابزار با نظارت مداوم بر فایل لاگ سرویسهای مختلف، مانند SSH، الگوهای مشکوک مانند تلاشهای ناموفق برای ورود را شناسایی میکند. در صورت تشخیص این الگوها، Fail2Ban با تغییر قوانین فایروال، آدرس IP مهاجم را برای مدتزمان مشخصی مسدود میکند. این قابلیت به کاهش حملات بروتفورس، DDoS و سایر فعالیتهای مخرب کمک میکند. گرچه Fail2Ban بهتنهایی نمیتواند تمام نیازهای امنیتی سرور را برآورده کند، اما بهعنوان بخشی از یک استراتژی امنیتی چندلایه، نقش مهمی در افزایش امنیت ایفا میکند.
Fail2Ban چگونه کار میکند؟
Fail2Ban با اسکن فایلهای لاگ سرویسهای مختلف عمل میکند. این ابزار از فیلترهایی استفاده میکند که با عبارات منظم (Regular Expressions) تعریف شدهاند تا خطاهای احراز هویت را شناسایی کند. این عبارات در متغیری به نام failregex تعریف میشوند. هنگامی که یک خط در فایل لاگ با این الگوها مطابقت داشته باشد، Fail2Ban اقدام مشخصی را اجرا میکند. این اقدام میتواند شامل مسدود کردن آدرس IP مهاجم از طریق قوانین فایروال (مانند iptables) یا ارسال اعلان به مدیر سرور باشد. بهطور پیشفرض، Fail2Ban در صورت شناسایی 3 تلاش ناموفق برای ورود از یک آدرس IP در بازه زمانی 10 دقیقه، آن آدرس را برای 10 دقیقه مسدود میکند. این تنظیمات در فایل پیکربندی Fail2Ban قابلتغییر هستند.
آموزش نصب Fail2Ban روی توزیع های مختلف لینوکس
برای نصب Fail2Ban، ابتدا باید از طریق SSH با دسترسی Root به سرور خود متصل شوید. در ادامه، مراحل نصب را برای اوبونتو و CentOS توضیح میدهیم.
نصب Fail2Ban در اوبونتو
1. ابتدا به کمک دستور زیر مخازن سیستم را بهروزرسانی کنید:
apt-get update && apt-get upgrade
2. سپس به کمک دستور زیر بسته Fail2Ban را نصب کنید:
apt-get install fail2ban
3. در این مرحله برای افزودن پشتیبانی ایمیل (اختیاری)دستور زیر را اجرا کنید:
apt-get install sendmail
4. در نهایت بااجرای دستور زیر وضعیت سرویس Fail2Ban را بررسی کنید:
sudo systemctl status fail2ban
نصب Fail2Ban در CentOS
1. به کمک دستور زیر مخزن EPEL را برای نصب Fail2Ban اضافه کنید:
sudo yum install epel-release
2. سپس با اجرای دستور زیر Fail2Ban را نصب کنید:
sudo yum install fail2ban
3. در نهایت سرویس را با اجرای دستور زیر فعال و راهاندازی کنید:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
پیکربندی Fail2Ban در اوبونتو 20.04
پس از نصب، Fail2Ban بهصورت خودکار شروع به کار میکند. برای بررسی وضعیت سرویس دستور زیر را اجرا کنید:
systemctl status fail2ban
تنظیمات پیشفرض
برای تغییر تنظیمات پیشفرض، با اجرای دستور زیر یک کپی از فایل jail.conf ایجاد کنید:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
سپس فایل jail.local را باز کنید و به بخش [DEFAULT] بروید. بهعنوان مثال، برای تنظیم زمان مسدودسازی به 3600 دقیقه دستور زیر را اجرا کنید:
bantime = 3600m
افزودن و پیکربندی قوانین
برای مدیریت قوانین، میتوانید از پوشه /etc/fail2ban/jail.d/ استفاده کنید یا قوانین را به فایل defaults-debian.conf اضافه کنید. برای مثال، برای فعال کردن قانون nginx-http-auth خطوط زیر را به فایل اضافه کنید:
[nginx-http-auth]
enabled = true
همچنین میتوانید پارامترهای خاصی مانند آدرس IP نادیده گرفتهشده، زمان مسدودسازی و تعداد تلاشهای ناموفق را تنظیم کنید. برای مثال دستور زیر IP 10.10.10.5 را 2400 دقیقه بعد از 10 تلاش نا موفق مسدود می کند.
ignoreip = 10.10.10.5
bantime = 2400m
maxretry = 10
اکنون پس از اعمال تغییرات، سرویس را مجدداً با اجرای دستور زیر راهاندازی کنید:
systemctl restart fail2ban
استفاده از fail2ban-client
برای مدیریت قوانین، از کلاینت Fail2Ban استفاده کنید. برای مشاهده قوانین فعال دستور زیر را اجرا کنید:
fail2ban-client status
برای بررسی وضعیت یک قانون خاص (مثلاً SSH) دستوری شبیه به دستور زیر را اجرا کنید (این دستور برای بررسی وضعیت SSH است):
fail2ban-client status sshd
برای فعال کردن یک قانون جدید از دستور زیر استفاده کنید:
fail2ban-client add nginx-http-auth
fail2ban-client start nginx-http-auth
برای مشاهده تمام دستورات موجود نیز دستور زیر را وارد کنید:
fail2ban-client -h
نتیجهگیری
در این مقاله، به بررسی Fail2Ban چیست و نحوه نصـب Fail2Ban روی سرورهای اوبونتو پرداختیم. این ابزار با شناسایی و مسدود کردن آدرسهای IP مهاجم، به شما کمک میکند تا سرور خود را در برابر تهدیدات سایبری ایمن کنید. اگرچه Fail2Ban بهتنهایی کافی نیست، اما در کنار سایر ابزارهای امنیتی، و خرید VPS مناسب با امنیت بالا میتواند لایهای قوی از حفاظت را فراهم کند. برای دستیابی به امنیت و عملکرد بهینه، انتخاب یک سرور مجازی قابلاعتماد نیز اهمیت زیادی دارد.