Cách dùng fail2ban để tăng cường bảo mật cho server Linux
Bài viết sẽ còn cập nhật….
Cài đặt
Cài đặt Fail2Ban trên Debian/Ubuntu
# apt-get update && apt-get upgrade -y
# apt-get install fail2ban
Cấu hình
Mặc định, fail2ban sử dụng file .conf
ở thư mục /etc/fail2ban/ để đọc đầu tiên. Tuy nhiên những thiết lập ở file này có thể được đè lên bởi những file .local
ở trong cùng thư mục.
Vì vậy, file .local
không bao gồm tất cả những thiết lập từ file .conf
, nó chỉ chứa những thiết lập mà bạn muốn ghi đè. Nếu có những thay đổi thì nên sửa ở file .local
và không nên sửa ở file .conf
. Việc này ngăn những ghi đè khi mà chúng ta cập nhật gói fail2ban.
Vì mục đích hướng dẫn, chúng ta sẽ copy file hiện hữu fail2ban.conf thành file fail2ban.local.
# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
Bây giờ bạn có thể thực hiện những thay đổi ở file .local
bằng cách sử dụng trình soạn thảo text ưa thích của mình. Những giá trị bạn có thể chỉnh sửa là:
- loglevel
– đây là mức độ chi tiết được lưu lại. Những tùy có thể là:
- CRITICAL
- ERROR
- WARNING
- NOTICE
- INFO
DEBUG
logtarget
– lưu lại những hoạt động trong một file cụ thể. Giá trị mặc định là /var/log/fail2ban.log
. Tuy nhiên bạn có thể thay đổi giá trị này:
- STDOUT – xuất ra bất kì dữ liệu nào
- STDERR – xuất ra bất kì lỗi nào
- SYSLOG – thông báo dạng nhật kí
File – xuất ra một file
socket – thư mục mà ở đó đặt file socket.
pidfile – vị trí của pidfile.
Cấu hình Fail2ban jail.local
Một trong những file quan trọng nhất trong fail2ban là jail.conf
, nó định nghĩa những những nhà giam. Ở đay bạn xác định những dịch vụ mà fail2ban sẽ được kích hoạt.
Như đã nói ở trên file .conf
có thể bị thay đổi trong quá trình cập nhật, vì vậy bạn nên tạo một file jail.local để bạn có thể áp dụng những chỉnh sửa.
Cách khác để làm điều này là đơn giản chỉ cần copy file .conf với câu lệnh sau đây:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Cấm (ban) và những lần thử lại
Bạn có thể cấu hình trường hợp sau khi mà một địa chỉ IP bị chặn. Với mục đích đó, fail2ban sử dụng bantime, findtime và maxretry.
- bantime – đây là số giây mà một địa chỉ IP sẽ duy trì bị cấm (mặc định 10 phút).
- findtime – thời gian giữa những lần login, trước khi máy bị cấm. (mặc định 10 phút). Nói cách khác, nếu fail2ban được thiết lập để chặn một địa chỉ IP sau 3 lần login sai, 3 lần này, phải được thực hiện trong khoảng thời gian findtime (10 phút).
- maxretry – số lần thực hiện được cho phép trước khi lệnh cấm được áp dụng. (mặc định 3).
Địa chỉ IP ngoại lệ (whitelist)
Dĩ nhiên, bạn sẽ muốn ngoại lệ những địa chỉ IP nào đó. Để cấu hình những IP như vậy mở file /etc/fail2ban/jail.local bằng trình soạn thảo ưa thích của bạn và bỏ comment dòng sau:
ignoreip = 127.0.0.1/8 ::1
Sau đó, bạn có thể đưa những địa chỉ IP mà bạn muốn bị phớt lờ. Những địa chỉ IP nên được ngăn cách bởi khoảng trống hoặc dấu phẩy.
Thông báo qua email
Nếu bạn muốn nhận thông báo qua email khi có sự kiện, bạn sẽ phải cấu hình những thiết lập sau trong /etc/fail2ban/jail.local:
- destemail – địa chỉ email mà bạn sẽ nhận thông báo.
- Sendername – tên người gửi mà bạn sẽ thấy khi nhận tin nhắn.
- sender – địa chỉ email từ gửi từ nơi mà fail2ban sẽ gửi email.
Giá trị mặc định mta (mail transfer agent) được thiết lập đến sendmail.
Để nhận thông báo mail, bạn cũng sẽ cần thay đổi thiết lập “action” từ giá trị:
Action = %(action_)s
sang một trong những giá trị này:
action = %(action_mw)s
action = %(action_mwl)s
- %(action_mw)s – sẽ cấm (ban) máy và gửi mail với một báo cáo whois.
- %(action_mwl)s – sẽ cấm (ban) máy, cung cấp thông tin whois và tất cả những thông tin liên quan từ file nhật kí.
Cấu hình phụ trợ jail cho fail2ban
Đến đây chúng ta đã xem xét những tùy chọn cấu hình cơ bản. Nếu bạn muốn cấu hình jail bạn sẽ cần kích hoạt nó trong file jail.local. Cú pháp rất đơn giản:
[jail_to_enable]
. . .
enabled = true
Ở đây bạn phải thay thế jail_to_enable với jail thực tế, ví dụ “sshd”. Trong file jail.local, những giá trị sau sẽ được định nghĩa trước cho dịch vụ ssh:
[sshd]
port = ssh
logpath = %(sshd_log)s
Bạn có thể kích hoạt bộ lọc mà sẽ giúp bạn xác định nếu một dòng trong nhật kí log là dòng fail. Giá trị lọc thực ra là một tham chiếu tới một file với tên dịch vụ theo sau bởi .conf. Ví dụ /etc/fail2ban/filter.d/sshd.conf
Cú pháp là:
filter = service
Ví dụ:
filter = sshd
Bạn có thể xem lại những bộ lọc hiện tại trong thư mục sau: /etc/fail2ban/filter.d/.
Kiểm tra và sử dụng fail2ban-client
Fail2ban đi kèm với một client mà có thể được dùng để xem lại và thay đổi những cấu hình hiện tại. Vì nó cung cấp nhiều tùy chọn, bạn có thể xem qua hướng dẫn của nó với lệnh:
# man fail2ban-client
Ở đây bạn sẽ thấy một và lệnh cơ bản mà bạn có thể sử dụng. Để xem lại tình trạng hiện tại của fail2ban hoặc một jail cụ thể, bạn có thể sử dụng:
# fail2ban-client status
Kết quả trông tương tự như sau:
Để xem IP nào đang bị ban
# fail2ban-client status sshd
Kết quả tương tự như sau:
Status for the jail: sshd
|- Filter
| |- Currently failed: 3
| |- Total failed: 5343
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 774
`- Banned IP list: 192.168.1.15 45.23.108.9
Để unban IP trong list hiện tại
`
fail2ban-client set sshd unbanip youripaddress
Kết luận
Tham khảo:
https://www.tecmint.com/use-fail2ban-to-secure-linux-server/