Ubuntu云服务器SSH暴力破解防护3个有效方法
文章分类:技术文档 /
创建时间:2025-09-12
在使用Ubuntu云服务器的过程中,SSH暴力破解是绕不开的安全隐患——攻击者通过反复尝试用户名和密码,试图突破防线获取服务器权限。本文整理了3个亲测有效的防护方法,帮你构建稳固的安全屏障。
方法一:用Fail2ban拦截异常登录
Fail2ban是一款轻量级的日志监控工具(类似游戏里的反作弊系统),它会实时扫描系统日志,当检测到某个IP短时间内多次尝试登录失败,就会自动封禁该IP。这种主动防御机制能有效遏制暴力破解行为。
安装和配置Fail2ban的步骤很简单:
首先通过终端安装工具:
sudo apt-get update
sudo apt-get install fail2ban
安装完成后,复制默认配置文件避免覆盖:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
用nano编辑器修改配置(推荐用jail.local文件做自定义设置):
sudo nano /etc/fail2ban/jail.local
在文件中找到[sshd]部分,设置关键参数。例如限制3次失败登录后封禁1小时:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # 最大失败次数
bantime = 3600 # 封禁时间(秒)
保存退出后重启服务生效:
sudo systemctl restart fail2ban
方法二:修改SSH默认端口降低暴露风险
默认情况下,SSH使用22号端口,这是攻击者扫描的重点目标。就像把家门从"101"改成"888",修改端口能大幅降低被针对性攻击的概率。
操作步骤如下:
编辑SSH服务配置文件:
sudo nano /etc/ssh/sshd_config
找到"Port 22"这一行,将端口号改为其他未被占用的数值(比如2222):
Port 2222
保存后重启SSH服务使修改生效:
sudo systemctl restart sshd
需要注意的是,后续连接服务器时需指定新端口。例如用SSH客户端连接的命令应为:
ssh -p 2222 用户名@服务器IP
方法三:启用密钥认证替代密码登录
密码认证存在被暴力破解的风险,而密钥认证采用非对称加密技术(相当于"钥匙+锁"的安全组合),私钥由用户保管,公钥存于服务器,即使密码泄露也无法登录。
具体操作分三步:
1. 本地生成密钥对(一路回车使用默认设置):
ssh-keygen -t rsa
生成的密钥文件默认存放在~/.ssh目录下(id_rsa是私钥,id_rsa.pub是公钥)。
2. 将公钥上传到服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP
输入服务器密码后,公钥会自动写入服务器的~/.ssh/authorized_keys文件。
3. 禁用密码认证增强安全:
编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config
找到以下两行并修改为:
PasswordAuthentication no
ChallengeResponseAuthentication no
保存后重启SSH服务:
sudo systemctl restart sshd
此后只能通过私钥连接服务器,彻底杜绝密码暴力破解风险。
这三种方法各有侧重——Fail2ban主动拦截异常请求,修改端口降低暴露概率,密钥认证从根本上消除密码风险。建议组合使用,为Ubuntu云服务器构建多层防护体系,让暴力破解攻击无处遁形。
下一篇: 云服务器K8s节点调度策略配置指南