防止暴力破解 SSH 的四种方法

1. 修改端口号

1
2
3
$ vim /etc/ssh/sshd_config
Port 2222
$ systemctl restart sshd

2. 赋予其他用户超级权限

1
2
3
4
5
6
7
8
9
# 禁止root登录
$ vim /etc/passwd
root:x:0:0:root:/root:/sbin/nologin

# 新增超级用户
$ useradd -s /bin/bash test
$ vim /etc/passwd
test:x:0:0::/home/test:/bin/bash
$ passwd test # 设置密码

3. 使用秘钥认证

1
2
3
4
# -t: 秘钥类型
# -b: 秘钥长度
$ ssh-keygen -t rsa -b 4096
$ ssh-copy-id root@xx.xx.xx.xx

4. Fail2ban

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ yum install epel-release -y
$ yum install fail2ban -y
$ vim /etc/fail2ban/jail.conf
[ssh-iptables] # 用到的服务
enabled = true # 开机自动启用服务
filter = sshd # 添加动作是sshd
action = iptables[name=SSH,port=ssh,protocol=tcp]
logpath = /var/log/secure # 要监控的站点日志文件
# 将5分钟内频繁访问失败3次的IP屏蔽3600秒
maxretry = 3 # 设定失败次数
findtime = 300 # 一定时间内
bantime = 3600 # 屏蔽多长时间
$ systemctl restart fail2ban.service
$ systemctl enable fail2ban.service

# 查看黑名单IP
$ iptables -L -n | tail
# 移除黑名单
$ fail2ban-client set ssh-iptables unbanip 192.168.196.23

参考