Blog chia sẻ về công nghệ ...
Published on

Tích hợp cảnh báo Fail2Ban với Email, Telegram và Prometheus

Authors

🚨 Gửi cảnh báo từ Fail2Ban bằng Email, Telegram, và Prometheus

Sau khi kết hợp NGINX và Fail2Ban để chặn IP xấu, bước tiếp theo là gửi cảnh báo đến người quản trị hoặc hệ thống giám sát.


📑 Mục Lục

  1. Gửi cảnh báo qua Email
  2. Gửi cảnh báo qua Telegram
  3. Tích hợp Fail2Ban với Prometheus
  4. Tổng kết và lời khuyên

📧 1. Gửi cảnh báo qua Email

✅ Cài đặt mailx (hoặc sendmail/postfix)

sudo apt install mailutils

✅ Cập nhật cấu hình Fail2Ban

Trong /etc/fail2ban/jail.local:

[DEFAULT]
destemail = your@email.com
sender = fail2ban@example.com
action = %(action_mwl)s
  • action_mwl = gửi mail + kèm log chi tiết
  • Bạn có thể dùng action = %(action_mw)s nếu không cần log

📌 Đảm bảo server của bạn gửi được email (qua SMTP hoặc relay)


📨 2. Gửi cảnh báo qua Telegram

✅ Bước 1: Tạo bot và lấy token

  • Nhắn /newbot cho @BotFather
  • Lưu lại Bot Token

✅ Bước 2: Lấy chat ID của bạn

  • Gửi tin nhắn tới bot
  • Truy cập: https://api.telegram.org/bot<token>/getUpdates

✅ Bước 3: Tạo action custom

Tạo file /etc/fail2ban/action.d/telegram.conf

[Definition]
actionstart =
actionstop =
actioncheck =
actionban = curl -s -X POST https://api.telegram.org/bot<your_token>/sendMessage -d chat_id=<your_chat_id> -d text="⚠️ Fail2Ban: IP <ip> vừa bị chặn bởi <name>"
actionunban =

Trong jail.local:

action = telegram

💬 Tin nhắn sẽ gửi đến Telegram mỗi khi có IP bị ban.


📈 3. Tích hợp với Prometheus

Fail2Ban không có exporter mặc định → dùng Fail2Ban Exporter bên thứ 3:

✅ Cài đặt exporter

git clone https://github.com/zed-io/fail2ban-exporter
cd fail2ban-exporter
docker build -t fail2ban-exporter .
docker run -d -p 9191:9191 --name f2b-exporter -v /var/run/fail2ban:/var/run/fail2ban fail2ban-exporter

✅ Truy cập metrics

  • Mở: http://localhost:9191/metrics

Thống kê ví dụ:

fail2ban_jail_banned{jail="nginx-ratelimit"} 2
fail2ban_jail_total{jail="nginx-ratelimit"} 40

✅ Cấu hình Prometheus scrape job

- job_name: 'fail2ban'
  static_configs:
    - targets: ['localhost:9191']

✅ Tổng kết

Hệ thốngƯu điểmKhó khăn
EmailPhổ biến, đơn giảnCó thể vào spam
TelegramNhanh, thời gian thựcCần tạo bot và chat ID
PrometheusGiám sát chuyên sâuCần Prometheus + Grafana

📚 Tài liệu tham khảo


Kết hợp cảnh báo giúp bạn nắm bắt sự cố bảo mật theo thời gian thực – bảo vệ hệ thống nhanh hơn, chính xác hơn.