Nội dung bài viết
Cài đặt Fail2Ban bảo vệ SSH trên CentOS
Mặc định để kết nối tới VPS chúng ta thường sử dụng port 22. Dựa vào đặc điểm này sẽ dẫn đến việc hacker tận dụng để có thể sử dụng để dò tìm password đăng nhập vào VPS của bạn.Có một biện pháp hàu hết các quản trị viên thường làm đó là thay đổi port SSH từ 22 sang một port khác. Tấc nhiên điều này cũng hỉ là hạn chế nguy cơ thôi vì nếu muốn dò tìm port SSH hacker có thể scan open port để biết được bạn đang sử dụng port nào và thực hiện tấn công tiếp.Vậy để giải quyết tốt vấn đề bảo mật này PhonuiIT.com đã dùng đến một công cụ tự động block IP khi VPS bị tấn công, đó là Fail2Ban. Hôm nay, mình sẽ giới thiệu cách hướng dẫn và cài đặt trong bài này.
Fail2Ban là một ứng dụng chạy nền theo dõi log file để phát hiện những địa chỉ IP đăng nhập sai password SSH nhiều lần. Sau đó, Fail2Ban sử dụng iptable firewall rules để block ngay địa chỉ IP với một khoảng thời gian định trước. Bạn đã sẵn sàn chưa chúng ta cùng bắt đầu thực hiện thôi nhé.
Cài đặt Fail2Ban
Đầu tiên công việc cần làm là sẽ cài đặt Fail2Ban thông qua Repo EPEL
yum install epel-release yum install fail2ban
Cấu hình Fail2Ban
Sau khi cài đặt xong, bạn mở file cấu hình của Fail2Ban lên sẽ thấy một số thông số như sau:
nano /etc/fail2ban/jail.conf
[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
Trong đó
- ignoreip: không block những địa chỉ này, thường địa chỉ IP ở VN là địa chỉ động, nên chúng ta không sử dụng được option này.
- bantime: khoảng thời gian (giây) block IP
- findtime: khoảng thời gian (giây) một IP phải login thành công
- maxretry: số lần login false tối đa
Cấu hình mặc định của Fail2Ban khá là ổn rồi, chúng ta không cần thiết phải cập nhật mà đến bước tiếp theo.
Cấu hình Fail2Ban bảo vệ SSH
Tạo file cấu hình
nano /etc/fail2ban/jail.local
Và sử dụng nội dung sau:
[sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] # sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] logpath = /var/log/secure maxretry = 3 bantime = 3600
Trong đó
- enabled: kích hoạt bảo vệ, nếu muốn tắt bạn hãy chuyển thành false
- filter: giữ mặc định để sử dụng file cấu hình /etc/fail2ban/filter.d/sshd.conf
- action: fail2ban sẽ ban địa chỉ IP nếu match filter /etc/fail2ban/action.d/iptables.conf. Nếu bạn đã thay đổi port ssh, sửa đoạn
port=ssh
bằng port mới, ví dụport=2222
- logpath: đường dẫn file log fail2ban sử dụng để theo dõi
- maxretry: số lần login false tối đa
- bantime: thời gian ban IP 3600 giây = 1 giờ, bạn có thể điều chỉnh lại nếu muốn
Khởi động Service Fail2Ban
chkconfig --level 23 fail2ban on service fail2ban start
Cuối cùng check lại iptables xem đã có rule của Fail2Ban chưa:
iptables -L
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
Theo dõi SSH login
– Bạn có thể sử dụng lệnh sau để biết được VPS/Server đã từng bị tấn công SSH chưa:
cat /var/log/secure | grep 'Failed password' | sort | uniq -c
Kết quả thường sẽ là như bên dưới, đã từng có rất nhiều đợt tấn công:
1 Sep 15 05:51:17 sv sshd[24808]: Failed password for invalid user shan from 119.130.102.144 port 61522 ssh2 1 Sep 15 05:51:35 sv sshd[24817]: Failed password for invalid user speedtest from 106.12.202.181 port 52944 ssh2 1 Sep 15 05:52:34 sv sshd[24828]: Failed password for invalid user applmgr from 209.97.142.250 port 39812 ssh2 1 Sep 15 06:00:10 sv sshd[24894]: Failed password for invalid user anti from 94.177.224.76 port 43006 ssh2 1 Sep 15 06:05:39 sv sshd[24954]: Failed password for invalid user test from 166.111.80.44 port 45490 ssh2 1 Sep 15 06:07:07 sv sshd[24968]: Failed password for invalid user test from 160.153.234.236 port 54988 ssh2 1 Sep 15 06:10:13 sv sshd[25005]: Failed password for invalid user alex from 141.98.213.186 port 49816 ssh2 1 Sep 15 06:15:22 sv sshd[25060]: Failed password for invalid user walter from 157.245.104.153 port 57188 ssh2 1 Sep 15 06:17:31 sv sshd[25082]: Failed password for invalid user monero from 58.47.177.158 port 43783 ssh2 1 Sep 15 06:20:02 sv sshd[25107]: Failed password for invalid user wakabaintelkam from 115.84.121.80 port 47262 ssh2 1 Sep 15 06:23:19 sv sshd[25137]: Failed password for invalid user patil from 159.203.111.100 port 42483 ssh2 1 Sep 15 06:30:09 sv sshd[25207]: Failed password for invalid user xinsixue from 51.75.146.122 port 36542 ssh2 1 Sep 15 06:40:50 sv sshd[25276]: Failed password for invalid user admin from 120.132.61.80 port 53456 ssh2 1 Sep 15 06:50:11 sv sshd[25372]: Failed password for invalid user roushan from 94.23.254.24 port 45095 ssh2 1 Sep 15 06:52:44 sv sshd[25415]: Failed password for sshd from 51.15.190.180 port 48602 ssh2 1 Sep 15 06:53:26 sv sshd[25420]: Failed password for invalid user zenoss from 109.49.183.193 port 54156 ssh2
– Để xem IP đã bị banned bởi Fail2Ban bạn sử dụng lệnh:
fail2ban-client status sshd
Output trả về sẽ có dạng như thế này:
Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 49625 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 12 |- Total banned: 15508 `- Banned IP list: 113.134.211.228 164.132.107.245 178.62.189.46 99.236.28.21 128.199.255.227
– Để xóa IP khỏi danh sách banned, bạn sử dụng lệnh sau
fail2ban-client set sshd unbanip 113.134.211.228 164
Hi vọng với Fail2Ban, chúng ta sẽ không còn thấy thông báo login false mỗi lần login SSH nữa.
Mọi thông tin chi tiết, hãy tham khảo thêm trên trang chủ của Fail2Ban. Chúc bạn thành công.