Linux VPS服务器SSH暴力破解防护指南
文章分类:技术文档 /
创建时间:2026-01-02
在使用Linux VPS服务器(虚拟专用服务器,通过虚拟化技术划分的独立服务器空间)时,SSH(Secure Shell,安全外壳协议,用于远程安全连接服务器的网络协议)暴力破解是最常见的安全隐患之一。攻击者通过自动化工具短时间内尝试大量用户名和密码组合,一旦成功登录,服务器数据、应用乃至整个系统都可能被控制。以下结合实际防护经验,分享可落地的安全策略。
第一步:修改SSH默认端口
大多数攻击工具默认扫描SSH的22号端口,修改成不常用端口能直接降低被针对性攻击的概率。具体操作如下:
用文本编辑器(如vi或nano)打开SSH服务配置文件`/etc/ssh/sshd_config`,找到`Port 22`这一行,将数字改为未被占用的端口(例如2222)。修改后保存文件,执行` sudo systemctl restart sshd`命令重启服务使配置生效。这一步相当于给服务器“换了个门牌号”,攻击者需先扫描端口才能定位目标,大幅增加攻击成本。
第二步:启用密钥认证替代密码
密码再复杂也可能被暴力破解,密钥认证则通过“公钥+私钥”的非对称加密机制实现更高安全性。具体步骤:
1. 本地生成密钥对:在终端输入`ssh-keygen`,按提示操作(直接回车可跳过密码短语),会生成`~/.ssh/id_rsa`(私钥)和`~/.ssh/id_rsa.pub`(公钥)。
2. 上传公钥到服务器:使用`ssh-copy-id -p 2222 用户名@服务器IP`命令(若修改过端口需指定-p参数),将公钥写入服务器`~/.ssh/authorized_keys`文件。
3. 禁用密码认证:编辑`/etc/ssh/sshd_config`,将`PasswordAuthentication yes`改为`no`,重启sshd服务。
完成后,只有持有私钥的设备能登录,即使攻击者知道用户名也无法通过密码尝试登录。
第三步:安装Fail2Ban拦截异常登录
Fail2Ban是开源的入侵检测工具,能监控日志并封禁频繁失败的IP。以Ubuntu系统为例:
1. 安装:执行` sudo apt-get install fail2ban`。
2. 配置规则:编辑`/etc/fail2ban/jail.local`,添加以下内容:
```
[sshd]
enabled = true
port = 2222 # 对应修改后的端口
filter = sshd
logpath = /var/log/auth.log # SSH登录日志路径
maxretry = 3 # 允许失败次数
bantime = 3600 # 封禁时间(秒)
```
3. 重启服务:` sudo systemctl restart fail2ban`。
配置后,同一IP在1小时内尝试3次以上失败登录会被自动封禁,有效拦截暴力破解工具。
第四步:限制登录用户与IP范围
进一步缩小攻击面,可通过SSH配置和防火墙双重限制:
- SSH配置限制用户:在`/etc/ssh/sshd_config`中添加`AllowUsers 用户名1 用户名2`,仅允许指定用户登录。
- 防火墙限制IP:使用`ufw`(Ubuntu简化防火墙工具)执行` sudo ufw allow from 192.168.1.100 to any port 2222`,仅允许特定IP访问SSH端口。
双重限制后,即使攻击者获取端口信息,也需同时匹配允许的用户和IP才能尝试登录。
实际防护中,建议将以上策略组合使用:修改端口降低暴露风险,密钥认证杜绝密码破解可能,Fail2Ban拦截异常尝试,再通过用户和IP限制缩小攻击范围。定期检查`/var/log/auth.log`日志,观察是否有异常登录记录,及时调整防护规则,才能让Linux VPS服务器保持长期安全。
工信部备案:苏ICP备2025168537号-1