防止 SSH 爆破:启用密钥登录
前段时间,我发现我的一台服务器被SSH 爆破 10,000 次。这让我意识到使用用户名密码登录方式存在较大的安全隐患。本文将介绍 SSH 爆破攻击的危险,并指导大家如何通过启用密钥登录来保护服务器安全。
什么是 SSH 爆破攻击?
SSH(Secure Shell)是一种常用的远程登录方式,主要用于管理服务器。然而,如果 SSH 使用用户名和密码登录,它很容易成为攻击者的目标。攻击者通常通过“暴力破解”来猜测用户名和密码,试图获取未授权的访问权限。暴力破解会用字典或脚本不断尝试常见的密码组合,一旦成功,攻击者便能完全控制你的服务器。
SSH 爆破攻击的危险性
- 资源消耗:爆破攻击会占用服务器的 CPU 和带宽资源,影响正常的服务器运行。
- 数据泄露:一旦被爆破成功,攻击者可能窃取敏感数据或安装恶意软件。
- 服务中断:攻击者可以通过删除关键文件或修改配置导致服务中断。
- 被滥用为跳板:黑客可能利用你的服务器作为跳板,进一步攻击其他系统或进行网络犯罪。
如何启用 SSH 密钥登录?
为防止暴力破解攻击,推荐使用 SSH 密钥登录。密钥登录比密码登录安全得多,因为它使用加密密钥认证,且不容易被破解。
步骤一:生成 SSH 密钥对
在本地计算机上生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 你可以选择将密钥保存在默认位置(通常是
~/.ssh/id_rsa
),并设置一个密码短语来进一步增强安全性。 - 生成后,会得到一个私钥文件(
id_rsa
)和一个公钥文件(id_rsa.pub
)。 -C
参数后面的内容可以用来标识这个密钥的,以便区分不同的密钥
步骤二:将公钥上传到服务器
将生成的公钥上传到目标服务器(使用 user@hostname
替换为你的用户名和主机名):
ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
如果无法使用 ssh-copy-id
,可以手动上传公钥:
cat ~/.ssh/id_rsa.pub | ssh user@hostname 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
步骤三:禁用密码登录
为了确保安全性,建议禁用 SSH 密码登录。登录到服务器后,编辑 SSH 配置文件:
sudo vim /etc/ssh/sshd_config
找到并修改以下选项:
PasswordAuthentication no
确保启用了公钥认证机制,允许使用密钥登陆,即确保配置文件中有以下配置,并且没有被注释掉:
PubkeyAuthentication yes
保存并退出,然后重启 SSH 服务以应用更改:
sudo systemctl restart ssh
其他安全建议
- 更改默认 SSH 端口:将 SSH 端口从默认的
22
改为其他端口,可以减少被扫描的概率。 - 使用防火墙:配置防火墙规则,只允许可信任的 IP 地址访问 SSH 服务。
- 启用 Fail2Ban:Fail2Ban 可以在短时间内禁止多次失败登录尝试的 IP,从而防止暴力破解。
结论
SSH 爆破攻击对服务器安全构成严重威胁,但通过启用 SSH 密钥登录,可以有效防止暴力破解。采用上述安全建议后,你的服务器将更加安全稳定。