ایجاد Jail سفارشی برای PostgreSQL در Fail2Ban

Fail2Ban یک ابزار امنیتی برای جلوگیری از حملات مکرر مانند حملات Brute Force است. اگر از PostgreSQL استفاده می‌کنید و می‌خواهید امنیت آن را افزایش دهید، می‌توانید یک jail سفارشی برای آن در Fail2Ban ایجاد کنید تا در صورت تلاش‌های ورود ناموفق مکرر، آی‌پی‌های مشکوک مسدود شوند. با رادیب تا پایان این مقاله همراه باشید.


مراحل ایجاد Jail سفارشی برای PostgreSQL

1. نصب Fail2Ban (در صورت نیاز)

اگر Fail2Ban روی سیستم شما نصب نیست، می‌توانید با دستورات زیر آن را نصب کنید:

در CentOS/RHEL:

sudo yum install fail2ban -y
Bash

در Ubuntu/Debian:

sudo apt update
sudo apt install fail2ban -y
Bash

2. فعال‌سازی لاگ‌گیری در PostgreSQL

برای اینکه Fail2Ban بتواند فعالیت‌های مشکوک را شناسایی کند، باید لاگ‌های مربوط به تلاش‌های ناموفق ورود را فعال کنید.

خرید سرور ابری ساعتی و ماهانه با بهترین قیمت از رادیب، کلیک کنید

فایل پیکربندی PostgreSQL را باز کنید:

sudo nano /etc/postgresql/14/main/postgresql.conf   # مسیر در اوبونتو
sudo nano /var/lib/pgsql/data/postgresql.conf       # مسیر در CentOS
Bash

خطوط زیر را ویرایش یا اضافه کنید:

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
Conf

سپس PostgreSQL را مجدداً راه‌اندازی کنید:

sudo systemctl restart postgresql
Bash

3. ایجاد فیلتر سفارشی در Fail2Ban

Fail2Ban برای تشخیص حملات به یک فیلتر خاص نیاز دارد. فایل فیلتر را ایجاد کنید:

خرید سرور مجازی با بهترین کیفیت از رادیب، کلیک کنید

sudo nano /etc/fail2ban/filter.d/postgresql.conf
Bash

محتوای زیر را در فایل وارد کنید:

[Definition]
failregex = ^%(__prefix_line)sFATAL:  password authentication failed for user .* from host <HOST>
ignoreregex =
Ini

توضیح فیلتر:

  • failregex: این عبارت منظم تلاش‌های ورود ناموفق به PostgreSQL را تشخیص می‌دهد.
  • ignoreregex: برای استثنا کردن موارد خاص استفاده می‌شود.

4. پیکربندی Jail سفارشی برای PostgreSQL

حال باید Jail مخصوص PostgreSQL را در Fail2Ban پیکربندی کنیم. فایل را ایجاد یا ویرایش کنید:

sudo nano /etc/fail2ban/jail.local
Bash

محتوای زیر را اضافه کنید:

[postgresql]
enabled  = true
port     = 5432
filter   = postgresql
logpath  = /var/log/postgresql/postgresql.log
maxretry = 3
bantime  = 3600
findtime = 600
Ini

توضیح مقادیر:

  • enabled: فعال‌سازی jail
  • port: پورت پیش‌فرض PostgreSQL (5432)
  • logpath: مسیر فایل لاگ‌های PostgreSQL
  • maxretry: حداکثر تعداد تلاش‌های ورود قبل از مسدود شدن (در اینجا ۳ بار)
  • bantime: مدت‌زمان مسدودسازی (بر حسب ثانیه، در اینجا ۱ ساعت)
  • findtime: بازه زمانی برای محاسبه تعداد تلاش‌ها (در اینجا ۱۰ دقیقه)

5. راه‌اندازی مجدد Fail2Ban

برای اعمال تغییرات انجام‌شده، سرویس Fail2Ban را مجدداً راه‌اندازی کنید:

خدمات رادیب را از دست ندهید، با کیفیت، اقتصادی، کاربردی، کلیک کنید

sudo systemctl restart fail2ban
Bash

6. بررسی عملکرد Fail2Ban

برای اطمینان از عملکرد صحیح، وضعیت jail PostgreSQL را بررسی کنید:

sudo fail2ban-client status postgresql
Bash

خروجی مثال:

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
Bash

7. آزادسازی یک آی‌پی مسدود شده

در صورتی که یک آی‌پی به اشتباه مسدود شده است، می‌توانید با دستور زیر آن را آزاد کنید:

sudo fail2ban-client unban --ip 192.168.1.10
Bash

8. بررسی لاگ‌های Fail2Ban

اگر نیاز به بررسی جزئیات بیشتری دارید، می‌توانید لاگ‌های مربوط به Fail2Ban را مشاهده کنید:

sudo tail -f /var/log/fail2ban.log
Bash

جمع‌بندی

برای افزایش امنیت پایگاه داده PostgreSQL می‌توانید با استفاده از Fail2Ban به شیوه زیر عمل کنید:

  1. نصب Fail2Ban و فعال‌سازی لاگ‌های PostgreSQL.
  2. ایجاد یک فیلتر سفارشی برای تشخیص ورودهای ناموفق.
  3. پیکربندی jail در فایل jail.local.
  4. راه‌اندازی و نظارت بر عملکرد Fail2Ban.

این راهکار کمک می‌کند تا حملات مخرب را شناسایی کرده و از دسترسی غیرمجاز جلوگیری کنید.

در صورت نیاز به توضیحات بیشتر از بخش تیکت پشتیبانی، با کارشناسان گروه رادیب در ارتباط باشید. 

Ця відповідь Вам допомогла? 201 Користувачі, які знайшли це корисним (201 Голосів)