服务器如何防御SSH暴力破解?

作者 胡萝虎 日期 2021-10-20
服务器如何防御SSH暴力破解?

不得不说,把服务器暴露在公网上还是非常危险的。这不,刚撸到的某云服务器,部署博客没几天,就遭到黑客持续的暴力攻击——持续的暴力破解SSH账号密码!

案发现场

今天闲来摸鱼,打开终端,通过ssh登录到我的云服务器,顺手看了一眼SSH登录日志。不看不要紧,一看吓一跳,请看下图:

tail -500 /var/log/secure

image-20211020213040556

每隔几秒就出现一次SSH登录记录,也就是黑客正在利用字典暴力破解我的服务器SSH账号密码。

image-20211020213308550

好家伙,是从德国发起的攻击。那么遇到这种情况,该如何避免SSH账号密码被黑客暴力破解呢?

解决方案

1、修改SSH端口

千万不要使用默认的22端口,否则面临的暴力攻击会更多。所以,拿到服务器后,首先就应该将SSH端口改成其他的,建议改成一个比较大的端口号。具体操作如下:

sudo vim /etc/ssh/sshd_config

找到 Port 22项,将端口号改为其他值,比如1046

image-20211020214030616

然后重启SSH服务

sudo service ssh restart

2、将攻击者的IP加入到黑名单

sudo vim /etc/hosts.deny

编辑此文件,然后在文件中加入攻击者的IP配置,即可拦截攻击者的IP,使其无法正常访问我们的服务器。

sshd:ip:deny

image-20211020214222182

下面就是将IP加入黑名单后的效果,可以看到凡是来自黑名单IP的请求都被服务器直接拒绝。

image-20211020214345481

3、关闭SSH密码登录

SSH最安全的使用方式,就是不要用账号密码的方式登录,而是使用密钥登录。所以,我们也可以关闭SSH密码登录功能和root登录账号,并设置密钥登录。

  • 创建一个新的账号
adduser myuser

passwd myuser

首先使用root账号登录服务器,然后再执行上面的命令,设置用户名和密码。

  • 将你的RSA公钥添加到服务器的authorized_keys文件中
sudo vim ~/.ssh/authorized_keys

将本地电脑上生成的RSA公钥内容追加到文件中。(非常重要,不添加或添加错了你就登不上服务器了!!!

  • 编辑SSH配置文件,禁用密码登录和Root账号登录
sudo vim /etc/ssh/sshd_config

​ 修改以下配置项:

PermitRootLogin no        					# 禁止root账号登录

PasswordAuthentication no # 禁止基于密码认证的登录

ChallengeResponseAuthentication no # 关闭质疑-应答模式

重启SSH服务

sudo service ssh restart

完成以上操作后,基本上可以保证服务器不会被暴力攻破了。

“扫一扫接着看”