本文最后更新于 2024-01-26,文章内容可能已经过时。

1、密码复杂度

大小写字母,特殊字符,数字

2、禁止root直接登录

vim /etc/ssh/sshd.conf
PermitRootLogin no

3、封锁IP

#!/bin/bash
#创建封锁IP的文件
touch /etc/sshd.deny.hostguard

tail -n1000 /var/log/secure  |grep "Failed password for hjk from"  |awk  '{print $11}'|sort |uniq -c |awk '{if($1 >5) print $2}' > /tmp/.erro_ssh_ip
for i in $(cat /tmp/.erro_ssh_ip)
do
new_ip=`grep -c  "$i"  /etc/sshd.deny.hostguard`
if [ $new_ip == 0 ];then
        echo "$i SSH brute force attack" >> /tmp/ssh_attack.log
        echo "$i" >> /etc/sshd.deny.hostguard
else
        echo "ip:$i  is in deny"
fi
done

4、每个连接允许的最大验证尝试次数

vim /etc/ssh/sshd.conf
MaxAuthTries 2
【MaxAuthTries要生效,必须修改SSH服务端、客户端的该项配置 ssh localhost -o NumberOfPasswordPrompts=6 
//通过-o NumberOfPasswordPrompts指定1次连接可以尝试的密码,默认是3次
-o NumberOfPasswordPrompts=6即1次连接可以输入6次密码 这样就可以验证MaxAuthTries参数每个连接允许的最大验证尝试次数】

5、ssh默认端口修改

vim /etc/ssh/sshd.conf
Port XXX

6、禁止空密码

vim /etc/ssh/sshd.conf
PermitEmptyPasswords no