Fail2ban là một ứng dụng phân tích và giám sát log để nhận ra các cuộc tấn công vào server thông qua các gói tin. Khi một gói tin đi qua vào server sẽ ghi nhận log và giám sát hoạt động của server source. Nếu Fail2ban được chạy các rule để giám sát, thì sẽ ghi nhận lại các thông số cụ thể để áp dụng những action khi vi phạm các rule này. Fail2ban cũng có thể thực hiện các cảnh báo đến email của bạn khi bị tấn công. Ngoài ra có thể tùy chỉnh những cảnh báo khác nhau bằng SMS hoặc cuộc gọi.
Fail2ban cho phép ngăn chặn các cuộc tấn công vào dịch vụ SSH, tổng đài (VoIP), Web,Databases,…
Dù không đảm bảo là an toàn tuyệt đối nhưng khi bị tấn công và phát hiện sớm thì sẽ phương án ứng phó kịp thời để không ảnh hưởng đến dịch vụ và hệ thống.
Cài đặt Fail2ban #
Trên CentOS
- Đảm bảo hệ thống của bạn được cập nhật
yum update && yum install epel-release
- Cài đặt Fail2ban
yum install fail2ban
- Cài đặt sendmail nếu muốn cảnh báo qua Email
yum install sendmail
- Kích hoạt và start Fail2ban
systemctl start fail2ban systemctl enable fail2ban
Nếu start gặp lỗi “no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock” thì gõ lệnh sau:
mkdir /var/run/fail2ban
Trên Debian
- Cập nhật server
apt-get update && apt-get upgrade -y
- Cài đặt Fail2ban
apt-get install fail2ban
- Cài đặt sendmail nếu cần
apt-get install sendmail-bin sendmail
- Kích hoạt và start Fail2ban
systemctl start fail2ban systemctl enable fail2ban
Cấu hình Fail2ban #
Fail2ban sẽ đọc các cấu hình trong file .conf trước. Sau đó là các cấu hình trong file .local, các cấu hình này sẽ ghi đè những cấu hình có trước nó. Do đó tất cả các cấu hình mới thường được ghi vào file .local để không ảnh hưởng bởi các conf khác.
Thư mục chứa file cấu hình:
/etc/fail2ban/
Cấu hình file fail2ban.local
- fail2ban.conf
Là file chứa cấu hình mặc định. Các thiết lập mặc định sẽ cung cấp cho bạn một thiết lập làm việc hợp lý. Nếu bạn muốn thực hiện bất kỳ thay đổi nào, tốt nhất là thực hiện nó trong một tệp riêng biệt fail2ban.local, nó sẽ ghi đè fail2ban.conf. Copy file fail2ban.conf thành fail2ban.local và bắt đầu cấu hình.
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
- fail2ban.local
Từ đây, bạn có thể chọn chỉnh sửa các định nghĩa fail2ban.local để phù hợp với cấu hình mong muốn của bạn. Các giá trị có thể được thay đổi là:
- loglevel: Mức độ chi tiết mà nhật ký của Fail2ban cung cấp có thể được đặt thành 1 (error), 2 (warn), 3 (info), or 4 (debug).
- logtarget: Ghi nhật ký hành động vào một tệp cụ thể. Giá trị mặc định của file log là /var/log/fail2ban.log. Bạn có thể thay đổi giá trị thành:
- STDOUT: xuất bất kỳ dữ liệu nào
- STDERR: xuất bất kỳ lỗi nào
- SYSLOG: ghi nhật ký dựa trên tin nhắn
- FILE: xuất ra tệp
- socket: Vị trí của tệp socket.
- pidfile: Vị trí của tệp PID.
Cấu hình file jail.local
- jail.conf
Là file chứa các cấu hình mặc định cho phép bật fail2ban cho dịch vụ SSH trên Debian, Ubuntu không có trên CentOS. Để thay đổi, thêm các cấu hình ta sao chép ra file jail.local để cấu hình
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- jail.local
Nếu bạn đang sử dụng CentOS hoặc Fedora bạn cần chuyển config backend từ auto thành system. Nếu dùng Debian, Ubuntu thì không cần.
vim /etc/fail2ban/jail.local backend = system
Để bật fail2ban cho SSH thay đổi config
enable = true
Để thêm các cấu hình fail2ban cho các dịch vụ khác ta thực hiện thêm vào file jail.local. Ví dụ dưới đây là cấu hình fail2ban cho freeswitch.
[freeswitch]
enabled = true
port = 5060:5091
protocol = all
filter = freeswitch
logpath = /usr/local/freeswitch/log/freeswitch.log
action = iptables-allports[name=freeswitch, protocol=all]
maxretry = 5
findtime = 600
bantime = 3600
ignoreip =
Giải thích các cấu hình như sau: #
- enabled : bật fail2ban cho dịch vụ này.
- port: cổng sẽ áp dụng.
- protocol: giao thức được áp dụng.
- filter: bộ lọc được áp dụng cho dịch vụ này (được đặt ở /etc/fail2ban/filter.d/).
- logpath: log dịch vụ được giám sát.
- action: hành động được áp dụng (được cấu hình ở /etc/fail2ban/action.d/).
- maxretry: số lần thử sai trong thời gian cho phép
- findtime: Khoảng thời gian giữa các lần thử đăng nhập trước khi lệnh cấm được đặt. Ví dụ: nếu Fail2ban được đặt để cấm IP sau năm (5) lần đăng nhập không thành công, 5 lần thử đó phải xảy ra trong findtime giới hạn 10 phút đã đặt . Các findtime giá trị phải là một số thiết lập của giây.
- bantime : Khoảng thời gian tính bằng giây mà IP bị cấm. Nếu được đặt thành số âm, lệnh cấm sẽ là vĩnh viễn. Giá trị mặc định 600 được đặt để cấm IP trong thời gian 10 phút.
- ignoreip: ip được bỏ qua, không áp dụng hành động. (Whitelist IP)
Whitelist IP #
Danh sách trắng là các ip được phép truy cập vào server mà không bị giám sát và ngăn chặn khi có các hành động tấn công. Mọi hành động đều bị fail2ban bỏ qua với các IP nằm trong danh sách này.
Có thể cấu hình Whitelist cho tất cả dịch vụ hoặc từng dịch vụ:
vim /etc/fail2ban/jail.local ignoreip = 127.0.0.1/8 123.45.67.89
Hoặc bạn có thể thêm nhanh vào Whitelist vào một dịch vụ bằng lệnh sau:
fail2ban-client set SSH addignoreip 123.45.67.89
Thông báo qua email: #
Để nhận email khi fail2ban được kích hoạt, hãy điều chỉnh cài đặt email:
- destemail: Địa chỉ email nơi bạn muốn nhận email.
- sendername: Tên mà theo đó email hiển thị.
- sender: Địa chỉ email mà Fail2ban sẽ gửi email.
Để kiểm tra xem sendmail đã hoạt động hay chưa ta dùng lệnh sau:
sendmail -t user@email.com
Sử dụng lệnh với fail2ban #
Fail2ban cung cấp một lệnh fail2ban-clientcó thể được sử dụng để chạy Fail2ban từ dòng lệnh:
fail2ban-client COMMAND
- start: Khởi động máy chủ Fail2ban
- reload: Tải lại tập tin cấu hình của Fail2ban.
- reload JAIL: Thay thế JAIL bằng tên của rule Fail2ban
- stop: Dừng fail2ban.
- status: Sẽ hiển thị trạng thái của máy chủ và kích hoạt
- status JAIL: Sẽ hiển thị trạng thái của nhà tù, bao gồm mọi IP hiện đang bị cấm.
Ví dụ: để kiểm tra Fail2Ban đang chạy:
fail2ban-client status
Xem thêm về fail2ban: Wiki fail2ban
Thông tin khóa học Linux: tại đây