Giới thiệu về Fail2Ban
Theo mặc định, một máy khách kết nối với SSH bằng cổng 22. Vì đây là cổng nổi tiếng, nên cấu hình mặc định dễ bị tấn công bởi nhiều cuộc tấn công vũ phu. Fail2Ban là một giải pháp để tự động bảo vệ máy chủ khỏi các cuộc tấn công này. Chương trình chạy ở chế độ nền, quét các tệp nhật ký để phát hiện IP nào đang tấn công và tự động cấm chúng truy cập SSH.
Cài đặt Fail2Ban
Trong hướng dẫn này, chúng tôi sẽ cài đặt Fail2Ban trên CentOS 6 thông qua kho EPEL. Chạy các lệnh sau.
yum install epel-release
yum install fail2ban
Giải trình
yum install epel-release
: Cài đặt kho EPEL (Gói bổ sung cho Enterprise Linux).
yum install fail2ban
: Cài đặt Fail2Ban từ kho EPEL.
Định cấu hình cài đặt Fail2Ban
Mở tệp cấu hình Fail2Ban.
nano /etc/fail2ban/jail.conf
Trong tệp, bạn sẽ thấy một số tham số như hiển thị bên dưới. Điều chỉnh bất kỳ giá trị nào theo nhu cầu của bạn.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3
Giải trình
ignoreip
: Đừng cấm các máy chủ phù hợp với một địa chỉ trong danh sách này. Một số địa chỉ có thể được xác định bằng cách sử dụng dấu phân cách không gian. Viết IP cá nhân của bạn trên dòng này.
bantime
: Số giây mà máy chủ bị cấm.
findtime
: Một máy chủ bị cấm nếu nó được tạo maxretry
trong thời gian qua findtime
.
maxretry
: Số lần thất bại trước khi máy chủ bị cấm.
Định cấu hình Fail2Ban để bảo vệ SSH
Đầu tiên, chúng ta cần tạo một tập tin cấu hình.
nano /etc/fail2ban/jail.local
Sao chép các dòng dưới đây và dán vào tập tin.
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# sendmail-whois[name=SSH, dest=root, [email protected]]
logpath = /var/log/secure
maxretry = 5
enabled
: Kích hoạt bảo vệ. Nếu bạn muốn tắt nó, thay đổi giá trị thành false.
filter
: Theo mặc định, nó được đặt thành sshd để chỉ tệp /etc/fail2ban/filter.d/sshd.conf
.
action
: Fail2Ban sẽ cấm IP khớp với bộ lọc /etc/fail2ban/action.d/iptables.conf
. Nếu trước đây bạn đã thay đổi cổng SSH, hãy đổi port=ssh
sang cổng mới port=2222
. Nếu bạn đang sử dụng cổng 22, bạn sẽ không cần thay đổi giá trị.
logpath
: Đường dẫn của tệp nhật ký được sử dụng bởi Fail2Ban.
maxretry
: Số lần đăng nhập thất bại tối đa.
Bắt đầu dịch vụ Fail2Ban
Chạy hai lệnh dưới đây để bắt đầu dịch vụ Fail2Ban:
chkconfig --level 23 fail2ban on
service fail2ban start
Cuối cùng, kiểm tra iptables
xem nó có các quy tắc được thêm bởi Fail2Ban không.
iptables -L
Kết quả sẽ trông tương tự như đầu ra này.
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Cách theo dõi các lần đăng nhập thất bại
Bạn có thể sử dụng lệnh này để kiểm tra xem máy chủ của bạn có bị lỗi đăng nhập không (các cuộc tấn công có thể xảy ra).
cat /var/log/secure | grep 'Failed password'
Kết quả sẽ trông tương tự như những dòng này.
Dec 6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2
Dec 6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec 6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec 6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec 6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Dec 6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Để xem IP nào đã bị cấm, hãy sử dụng lệnh sau.
iptables -L -n
Để xóa địa chỉ IP khỏi danh sách bị cấm, hãy chạy lệnh sau. Thay đổi banned_ip
IP mà bạn muốn unban.
iptables -D f2b-SSH -s banned_ip -j DROP