- Published on
Tích hợp cảnh báo Fail2Ban với Email, Telegram và Prometheus
- Authors
- Name
- Bạch Đăng Tuấn
- Occupation
- Kỹ sư công nghệ thông tin
- Zalo: 0934.01.07.04
🚨 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
- Gửi cảnh báo qua Email
- Gửi cảnh báo qua Telegram
- Tích hợp Fail2Ban với Prometheus
- 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ểm | Khó khăn |
---|---|---|
Phổ biến, đơn giản | Có thể vào spam | |
Telegram | Nhanh, thời gian thực | Cần tạo bot và chat ID |
Prometheus | Giám sát chuyên sâu | Cầ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.