Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Hướng dẫn khắc phục lỗ hổng bảo mật CVE-2019-11477 trên Cloud365
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
Khi sử dụng các Server VPS Linux chúng ta thường sử dụng SSH remote thao tác với Server.
Mặc dù SSH là một giao thức đã được bảo mật hoạt động ở lớp trên trong mô hình TCP/IP (thường) sử dụng port 22 nhưng cũng tồn tại những rủi ro nhất định cho trong quá trình vận hành lý do là vì ssh phơi ra phía ngoài internet. Việc bị dò mật khẩu là một trong những cách tấn công phổ biến nhất.
1 Server Linux cài đặt Fail2ban
1 máy là có cài đặt SSH Client để tiến hành dò ssh server phía trên
Trên máy Client.217 thực hiện ssh nhiều lần sai password
Trên máy Server.214 thực hiện kiểm tra
cat /var/log/secure | grep 'Failed password' | sort | uniq -c
Kết quả trả về
[root@server ~]# cat /var/log/secure | grep 'Failed password' | sort | uniq -c
1 Feb 14 14:39:49 centos7 sshd[4714]: Failed password for root from 10.10.10.217 port 43460 ssh2
1 Feb 14 14:39:54 centos7 sshd[4714]: Failed password for root from 10.10.10.217 port 43460 ssh2
1 Feb 14 14:40:12 centos7 sshd[4714]: Failed password for root from 10.10.10.217 port 43460 ssh2
[root@server ~]#
Trong quá trình này Client cứ ssh liên tục cho đến khi đoán được password đúng và BÙM!!
server của bạn đã nằm trong tay người khác
Cài đặt
yum install epel-release -y
yum install fail2ban -y
Cấu hình fail2ban
> /etc/fail2ban/jail.conf
cat << EOF >> /etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
findtime = 600
maxretry = 3
EOF
Trong đó
Cấu hình fail2ban cho ssh
cat << EOF >> /etc/fail2ban/jail.local
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
maxretry = 5
bantime = 3600
EOF
Trong đó
Start fail2ban
systemctl enable fail2ban
systemctl start fail2ban
Kiểm tra rulues của fail2ban trên iptables
iptables -L
Kết quả trả về
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:ssh
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
Trên máy Client thực hiện ssh nhiều lần sai password lại
Kết quả: Sau 5 lần ssh thất bại do sai password máy Client sẽ bị block trong 1 tiếng
root@client:~# ssh root@10.10.10.244
ssh: connect to host 10.10.10.244 port 22: Connection refused
root@client:~#
Kiểm tra trên Server
cat /var/log/secure | grep 'Failed password' | sort | uniq -c
Để kiểm tra các IP đã bị fail2ban cấm ssh chúng ta thực hiện
fail2ban-client status sshd
Kết quả trả về
[root@server ~]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 6
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 10.10.10.217
[root@server ~]#
Để xóa IP đã bị cấm ra khỏi danh sách
fail2ban-client set sshd unbanip 10.10.10.217
Lúc này đứng trên Client có thể thực hiện ssh lại bình thường
root@client:~# ssh root@10.10.10.244
root@10.10.10.244's password:
Fail2ban mà chúng tôi giới thiệu phía trên chỉ là một trong những giải pháp hiệu quả trong việc ngăn chặn bute-force. Việc phối hợp nhiều biện pháp khác nhau nhằm bảo vệ SSH là vô cùng cần thiết.
Các biện pháp Secure SSH thường được sử dụng nhằm tránh, hạn chế bị tấn công Brute force
(Dò và thử đến khi đăng nhập được)
Username và Mật khẩu mạnh
Cấu hình timeout cho 1 session SSH, cấu hình /etc/ssh/sshd_config
ClientAliveInterval 360
ClientAliveCountMax 0
Không cho phép password trống, cấu hình /etc/ssh/sshd_config
PermitEmptyPasswords no
Giới hạn các user được phép SSH, cấu hình /etc/ssh/sshd_config
AllowUsers user1 user2
Thường để bảo mật chúng ta để các user được phép SSH là user thường sau khi login vào được server chúng ta mới thực hiện chuyển sang user khác để thao tác
Không cho phép root
login, cấu hình /etc/ssh/sshd_config
PermitRootLogin no
Sử dụng mặc đinh Protocol2 cho SSH, cấu hình /etc/ssh/sshd_config
Protocol 2
Sử dụng port khác port 22, cấu hình /etc/ssh/sshd_config
Port 2345
Cho phép ssh từ một số IP, nhất đinh, cấu hình iptables
iptables -A INPUT -p tcp -s YourIP --dport 2345 -j ACCEPT
iptables -A INPUT -p tcp --dport 2345 -m state --state NEW -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport 2345 -m state --state NEW -m recent ! --rcheck --seconds 90 --hitcount 3 --name ssh --rsource -j ACCEPT
Bật sử dụng xác thực 2 lớp link
Sử dụng key để ssh thay cho password
Thao tác trên máy client
ssh-keygen -t rsa
Copy key qua Server
ssh-copy-id username@server
Và một vài secure khác khi được kết hợp trong hệ thống như VPN, Fail2ban
http://www.fail2ban.org/wiki/index.php/Main_Page
Thực hiện bởi cloud365.vn