暴力破解bot尝试使用各种用户名已经密码进行破解,比如我在/var/log/secure
下找到了如下用户名,他们尝试使用ssh登陆我的公网虚拟主机。
sed -n ‘/Jan 19/p’ /var/log/secure | sed -n ‘/invalid user/p’ | awk ‘{print $(NF-1)}’ | sort | uniq
0
0101
1234
53457
access
admin
anonymous
banner
butter
cisco
dup
ec2-user
flora
ftpuser
guest
Management
monitor
pi
PlcmSpIp
sergey
service
sheffield
sshusr
student
support
teamspeak
test
ubnt
user
utsims
uucp
vinci
vivek
VM
weblogic
可以使用三种方法防止暴力破解。
1 只允许使用public key 登录
将本地ssh客户端的 ssh public key
保存在远程主机上的home目录下的。.ssh/authorized_keys
文件中。
然后设置 远程主机上的sshd服务配置:
/etc/ssh/sshd_config
改动配置为
PubkeyAuthentication yes
PasswordAuthentication no
2 修改SSH daemon端口
同样需要修改/etc/ssh/sshd_config
文件,将默认:
Port 22
改为
Port 1234 # 自己随便找一个端口号
然后打开防火墙,将默认ssh端口禁止,放行刚刚配置的端口:
systemctl start firewalld
firewall-cmd --permanent --remove-service ssh
firewall-cmd --permanent --add-port 1234/tcp
最后生效防火墙并重启sshd服务:
firewall-cmd --reload
systemctl restart sshd.service
3 限制失败登录次数
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp --dport 22 -m state --state NEW -m recent --set
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 4 -j REJECT --reject-with tcp-reset
firewall-cmd --reload
参考这里
或者:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
参考这里