Cách cài đặt Fail2Ban trên CentOS 7

theanh

Administrator
Nhân viên
Hầu hết các máy chủ Linux đều cung cấp đăng nhập SSH qua Cổng 22 cho mục đích quản trị từ xa. Cổng này là một cổng nổi tiếng, do đó, nó thường bị tấn công bằng cách dùng brute force. Fail2ban là một phần mềm quét các tệp nhật ký để tìm các nỗ lực đăng nhập bằng brute force theo thời gian thực và cấm những kẻ tấn công bằng firewalld hoặc iptables. Fail2ban nhận ra các nỗ lực truy cập không mong muốn hoặc vi phạm bảo mật vào máy chủ trong khung thời gian do quản trị viên thiết lập và chặn các địa chỉ IP cho thấy dấu hiệu của các cuộc tấn công bằng brute force hoặc tấn công từ điển. Chương trình này hoạt động ở chế độ nền và liên tục quét các tệp nhật ký để tìm các mẫu đăng nhập bất thường và các nỗ lực vi phạm bảo mật.

Hướng dẫn này trình bày cách cài đặt và cấu hình Fail2Ban với firewalld trên CentOS 7.

Cài đặt Fail2Ban​

Để cài đặt Fail2Ban trên CentOS 7, trước tiên chúng ta sẽ phải cài đặt kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux). EPEL chứa các gói bổ sung cho tất cả các phiên bản CentOS, một trong những gói bổ sung này là Fail2Ban.

Các lệnh sau phải được thực thi sau khi chuyển sang người dùng root.
Mã:
yum install epel-release
Mã:
yum install fail2ban fail2ban-systemd
Nếu bạn đã cài đặt SELinux, hãy cập nhật các chính sách SELinux:
Mã:
yum update -y selinux-policy*

Cấu hình cài đặt cho Fail2Ban​

Sau khi cài đặt, chúng ta sẽ phải cấu hình và tùy chỉnh phần mềm bằng tệp cấu hình jail.local. Tệp jail.local ghi đè lên tệp jail.conf và được sử dụng để bảo vệ bản cập nhật cấu hình tùy chỉnh của bạn.

Tạo một bản sao của tệp jail.conf và lưu nó với tên jail.local:
Mã:
cp -pf/etc/fail2ban/jail.conf/etc/fail2ban/jail.local
Mở tệp jail.local để chỉnh sửa trong Nano bằng lệnh sau.
Mã:
nano /etc/fail2ban/jail.local
Mã tệp có thể bao gồm nhiều dòng mã thực thi để ngăn chặn lệnh cấm đối với một hoặc nhiều địa chỉ IP, đặt thời gian cấm, v.v. Một tệp cấu hình jail thông thường chứa các dòng sau.
Mã:
[MẶC ĐỊNH]

#
# CÁC TÙY CHỌN KHÁC
#

# "ignoreip" có thể là địa chỉ IP, mặt nạ CIDR hoặc máy chủ DNS. Fail2ban sẽ không
# cấm một máy chủ trùng với một địa chỉ trong danh sách này. Có thể
# định nghĩa một số địa chỉ bằng cách sử dụng dấu cách phân cách.
ignoreip = 127.0.0.1/8

# Lệnh bên ngoài sẽ lấy các đối số được gắn thẻ để bỏ qua, ví dụ: ,
# và trả về true nếu IP bị bỏ qua. Nếu không thì là False.
#
# ignorecommand = /path/to/command 
ignorecommand =

# "bantime" là số giây mà một máy chủ bị cấm.
bantime = 600

# Một máy chủ bị cấm nếu nó đã tạo ra "maxretry" trong "findtime"
# giây cuối cùng.
findtime = 600

# "maxretry" là số lần lỗi trước khi máy chủ bị cấm.
maxretry = 5
Ignoreip được sử dụng để thiết lập danh sách các IP sẽ không bị cấm. Danh sách các địa chỉ IP phải được phân cách bằng dấu cách. Tham số này được sử dụng để thiết lập địa chỉ IP cá nhân của bạn (nếu bạn truy cập máy chủ từ một IP cố định).

Tham số Bantime được sử dụng để thiết lập khoảng thời gian tính bằng giây mà máy chủ cần bị cấm.

Findtime là tham số được sử dụng để kiểm tra xem máy chủ có phải bị cấm hay không. Khi máy chủ tạo ra maxrety trong lần tìm kiếm cuối cùng của nó, nó sẽ bị cấm.

Maxretry là tham số được sử dụng để đặt giới hạn cho số lần thử lại của máy chủ, khi vượt quá giới hạn này, máy chủ sẽ bị cấm.

Thêm tệp jail để bảo vệ SSH.​

Tạo tệp mới bằng trình chỉnh sửa Nano
Mã:
nano /etc/fail2ban/jail.d/sshd.local
Thêm các dòng mã sau vào tệp trên.
Mã:
[sshd]
enabled = true
port = ssh
#action = firewallcmd-ipset
logpath = %(sshd_log)s
maxretry = 5
bantime = 86400
Tham số enabled được đặt thành true, để để cung cấp bảo vệ, để hủy kích hoạt bảo vệ, nó được đặt thành false. Tham số bộ lọc kiểm tra tệp cấu hình sshd, nằm trong đường dẫn /etc/fail2ban/filter.d/sshd.conf.

Tham số action được sử dụng để lấy địa chỉ IP cần bị cấm bằng bộ lọc có sẵn từ /etc/fail2ban/action.d/firewallcmd-ipset.conf.

Tham số Port có thể được thay đổi thành giá trị mới như port=1212, như trường hợp này. Khi sử dụng cổng 22, không cần phải thay đổi tham số này.

Logpath cung cấp đường dẫn nơi tệp nhật ký được lưu trữ. Tệp nhật ký này được Fail2Ban quét.

Maxretry được sử dụng để đặt giới hạn tối đa cho các mục nhập đăng nhập không thành công.

Tham số Bantime được sử dụng để đặt khoảng thời gian tính bằng giây mà máy chủ cần bị cấm.

Chạy dịch vụ Fail2Ban​

Khi bạn chưa chạy Tường lửa CentOS, hãy khởi động nó:
Mã:
systemctl enablefirewalld
systemctl start firewalld
Thực hiện các dòng lệnh sau để chạy phần mềm Fail2Ban bảo vệ trên máy chủ.
Mã:
systemctl enable fail2ban
systemctl start fail2ban

Theo dõi các mục nhập đăng nhập không thành công​

Lệnh sau được sử dụng để kiểm tra xem có bất kỳ nỗ lực nào không thành công khi đăng nhập vào máy chủ qua ssh hay không port.
Mã:
cat /var/log/secure | grep 'Failed password'
Thực hiện lệnh trên sẽ nhận được danh sách các lần nhập mật khẩu root không thành công từ nhiều địa chỉ IP khác nhau. Định dạng của kết quả sẽ tương tự như định dạng hiển thị bên dưới:
Mã:
4/4 17:05:12 htf sshd[4287]: Mật khẩu không hợp lệ cho root từ 108.61.157.25 cổng 23121 ssh2
4/4 17:05:15 htf sshd[3154]: Mật khẩu không hợp lệ cho root từ 108.61.157.25 cổng 14486 ssh2
4/4 17:05:16 htf sshd[3154]: Mật khẩu không hợp lệ cho root từ 108.61.157.25 cổng 24157 ssh2
4/4 17:05:18 htf sshd[3154]: Mật khẩu không hợp lệ cho root từ 108.61.157.25 cổng 24157 ssh2

Kiểm tra IP bị cấm bởi Fail2Ban​

Lệnh sau được sử dụng để lấy danh sách các địa chỉ IP bị cấm được nhận dạng là mối đe dọa tấn công bằng vũ lực.
Mã:
iptables -L -n

Kiểm tra Trạng thái Fal2Ban​

Sử dụng lệnh sau để kiểm tra trạng thái của các nhà tù Fail2Ban:
Mã:
fail2ban-client status
Kết quả sẽ tương tự như sau:
Mã:
[root@htf ]# fail2ban-client status
Status
|- Số lượng nhà tù: 1
`- Danh sách nhà tù: sshd

Gỡ lệnh cấm một địa chỉ IP​

Để xóa một địa chỉ IP khỏi danh sách bị cấm, tham số IPADDRESS được đặt thành IP phù hợp cần bỏ cấm. Tên "sshd" là tên của jail, trong trường hợp này là jail "sshd" mà chúng ta đã cấu hình ở trên. Lệnh sau thực hiện công việc.
Mã:
fail2ban-client set sshd unbanipIPADDRESS
 
Back
Bên trên