ایجاد Jail سفارشی برای PostgreSQL در Fail2Ban
Fail2Ban یک ابزار امنیتی برای جلوگیری از حملات مکرر مانند حملات Brute Force است. اگر از PostgreSQL استفاده میکنید و میخواهید امنیت آن را افزایش دهید، میتوانید یک jail سفارشی برای آن در Fail2Ban ایجاد کنید تا در صورت تلاشهای ورود ناموفق مکرر، آیپیهای مشکوک مسدود شوند. با رادیب تا پایان این مقاله همراه باشید.
مراحل ایجاد Jail سفارشی برای PostgreSQL
1. نصب Fail2Ban (در صورت نیاز)
اگر Fail2Ban روی سیستم شما نصب نیست، میتوانید با دستورات زیر آن را نصب کنید:
در CentOS/RHEL:
sudo yum install fail2ban -y
در Ubuntu/Debian:
sudo apt update
sudo apt install fail2ban -y
2. فعالسازی لاگگیری در PostgreSQL
برای اینکه Fail2Ban بتواند فعالیتهای مشکوک را شناسایی کند، باید لاگهای مربوط به تلاشهای ناموفق ورود را فعال کنید.
خرید سرور ابری ساعتی و ماهانه با بهترین قیمت از رادیب، کلیک کنید
فایل پیکربندی PostgreSQL را باز کنید:
sudo nano /etc/postgresql/14/main/postgresql.conf # مسیر در اوبونتو
sudo nano /var/lib/pgsql/data/postgresql.conf # مسیر در CentOS
خطوط زیر را ویرایش یا اضافه کنید:
logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql.log'
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'all'
log_connections = on
log_disconnections = on
log_duration = on
log_min_messages = warning
log_min_error_statement = error
log_error_verbosity = default
سپس PostgreSQL را مجدداً راهاندازی کنید:
sudo systemctl restart postgresql
3. ایجاد فیلتر سفارشی در Fail2Ban
Fail2Ban برای تشخیص حملات به یک فیلتر خاص نیاز دارد. فایل فیلتر را ایجاد کنید:
خرید سرور مجازی با بهترین کیفیت از رادیب، کلیک کنید
sudo nano /etc/fail2ban/filter.d/postgresql.conf
محتوای زیر را در فایل وارد کنید:
[Definition]
failregex = ^%(__prefix_line)sFATAL: password authentication failed for user .* from host <HOST>
ignoreregex =
توضیح فیلتر:
failregex
: این عبارت منظم تلاشهای ورود ناموفق به PostgreSQL را تشخیص میدهد.ignoreregex
: برای استثنا کردن موارد خاص استفاده میشود.
4. پیکربندی Jail سفارشی برای PostgreSQL
حال باید Jail مخصوص PostgreSQL را در Fail2Ban پیکربندی کنیم. فایل را ایجاد یا ویرایش کنید:
sudo nano /etc/fail2ban/jail.local
محتوای زیر را اضافه کنید:
[postgresql]
enabled = true
port = 5432
filter = postgresql
logpath = /var/log/postgresql/postgresql.log
maxretry = 3
bantime = 3600
findtime = 600
توضیح مقادیر:
enabled
: فعالسازی jailport
: پورت پیشفرض PostgreSQL (5432)logpath
: مسیر فایل لاگهای PostgreSQLmaxretry
: حداکثر تعداد تلاشهای ورود قبل از مسدود شدن (در اینجا ۳ بار)bantime
: مدتزمان مسدودسازی (بر حسب ثانیه، در اینجا ۱ ساعت)findtime
: بازه زمانی برای محاسبه تعداد تلاشها (در اینجا ۱۰ دقیقه)
5. راهاندازی مجدد Fail2Ban
برای اعمال تغییرات انجامشده، سرویس Fail2Ban را مجدداً راهاندازی کنید:
خدمات رادیب را از دست ندهید، با کیفیت، اقتصادی، کاربردی، کلیک کنید
sudo systemctl restart fail2ban
6. بررسی عملکرد Fail2Ban
برای اطمینان از عملکرد صحیح، وضعیت jail PostgreSQL را بررسی کنید:
sudo fail2ban-client status postgresql
خروجی مثال:
Status for the jail: postgresql
|- Filter
| |- Currently failed: 1
| |- Total failed: 5
| `- File list: /var/log/postgresql/postgresql.log
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 192.168.1.10
7. آزادسازی یک آیپی مسدود شده
در صورتی که یک آیپی به اشتباه مسدود شده است، میتوانید با دستور زیر آن را آزاد کنید:
sudo fail2ban-client unban --ip 192.168.1.10
8. بررسی لاگهای Fail2Ban
اگر نیاز به بررسی جزئیات بیشتری دارید، میتوانید لاگهای مربوط به Fail2Ban را مشاهده کنید:
sudo tail -f /var/log/fail2ban.log
جمعبندی
برای افزایش امنیت پایگاه داده PostgreSQL میتوانید با استفاده از Fail2Ban به شیوه زیر عمل کنید:
- نصب Fail2Ban و فعالسازی لاگهای PostgreSQL.
- ایجاد یک فیلتر سفارشی برای تشخیص ورودهای ناموفق.
- پیکربندی jail در فایل
jail.local
. - راهاندازی و نظارت بر عملکرد Fail2Ban.
این راهکار کمک میکند تا حملات مخرب را شناسایی کرده و از دسترسی غیرمجاز جلوگیری کنید.
در صورت نیاز به توضیحات بیشتر از بخش تیکت پشتیبانی، با کارشناسان گروه رادیب در ارتباط باشید.