TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
防止 SSH 暴力破解是保障云服务器安全的重要措施之一。SSH 暴力破解是指攻击者通过不断尝试不同的用户名和密码组合,试图非法登录你的服务器。一旦破解成功,攻击者可能控制你的服务器,造成数据泄露、服务中断等严重后果。
以下是防止 SSH 暴力破解的综合防护措施,从配置优化到安全工具的使用,帮助你有效提升服务器的安全性。
一、修改默认 SSH 端口
1. 为什么修改默认端口?
SSH 默认使用 22 端口,攻击者通常会首先扫描该端口进行暴力破解。修改为非标准端口可以降低被扫描和攻击的概率。
2. 修改方法
(1)编辑 SSH 配置文件
sudo vi /etc/ssh/sshd_config
找到以下行:
#Port 22
取消注释并将 22 修改为其他端口号(如 2222):
Port 2222
注意:端口号范围为 1-65535,建议选择 1024-65535 之间的端口,避免使用知名服务端口。
(2)重启 SSH 服务使配置生效
sudo systemctl restart sshd
注意:修改端口后,你需要使用新端口连接服务器,例如:
ssh -p 2222 用户名@服务器IP地址
(3)配置防火墙放行新端口
操作系统防火墙(如 firewalld 或 ufw)需要放行新端口;
云平台安全组也需要放行新端口。
二、禁用密码登录,使用 SSH 密钥登录
1. 为什么禁用密码登录?
SSH 密码登录容易被暴力破解,而 SSH 密钥登录基于公私钥加密,安全性更高,几乎无法被暴力破解。
2. 配置 SSH 密钥登录
(1)生成 SSH 密钥对(在本地电脑操作)
Linux / macOS:
ssh-keygen -t rsa -b 4096
按提示保存密钥文件(默认路径为 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub)。
Windows:
使用工具如 PuTTYgen 生成密钥对。
(2)将公钥上传到服务器
方法一:使用 ssh-copy-id(Linux / macOS)
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP地址 -p 端口号
方法二:手动复制公钥
将本地公钥文件(~/.ssh/id_rsa.pub)内容复制;
登录服务器,编辑或创建 ~/.ssh/authorized_keys 文件:
vi ~/.ssh/authorized_keys
将公钥内容粘贴到文件中并保存。
(3)禁用密码登录
编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
找到以下配置项并修改:
PasswordAuthentication no
如果该配置项被注释(前面有 #),取消注释并设置为 no。
(4)重启 SSH 服务
sudo systemctl restart sshd
注意:在禁用密码登录之前,请确保你已经成功配置了 SSH 密钥登录并能正常连接服务器,否则可能导致无法远程登录。
三、限制登录尝试次数
1. 使用 fail2ban 防止暴力破解
fail2ban 是一个开源的安全工具,可以监控日志文件,检测到多次失败的登录尝试后,自动封禁攻击者的 IP 地址。
(1)安装 fail2ban
CentOS:
sudo yum install epel-release -y
sudo yum install fail2ban -yUbuntu / Debian:
sudo apt update
sudo apt install fail2ban -y
(2)启动并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
(3)配置 fail2ban 监控 SSH
默认情况下,fail2ban 会自动加载 SSH 配置。你可以检查配置文件:
sudo vi /etc/fail2ban/jail.local
如果没有该文件,可以复制默认配置文件:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 jail.local 文件,找到 [sshd] 部分,确保以下配置项启用:
[sshd] enabled = true maxretry = 3 bantime = 600 findtime = 600
maxretry:允许的最大失败尝试次数(如 3 次);
bantime:封禁时间(单位秒,如 600 秒 = 10 分钟);
findtime:检测时间范围(单位秒,如 600 秒内超过 maxretry 次失败会被封禁)。
(4)查看被封禁的 IP
sudo fail2ban-client status sshd
四、限制登录用户
1. 只允许特定用户登录
编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
添加或修改以下配置项:
AllowUsers 用户名1 用户名2
例如,只允许用户 admin 和 ubuntu 登录:
AllowUsers admin ubuntu
注意:确保你添加的用户是存在的,并且已经配置了 SSH 密钥登录。
2. 禁止 root 用户直接登录
编辑 SSH 配置文件:
sudo vi /etc/ssh/sshd_config
找到以下配置项并修改:
PermitRootLogin no
如果该配置项被注释(前面有 #),取消注释并设置为 no。
注意:禁用 root 登录后,你需要使用普通用户登录后,再通过 sudo 执行需要管理员权限的操作。
五、使用防火墙限制访问来源
1. 操作系统防火墙
firewalld(CentOS):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.123.123.123" port port="2222" protocol="tcp" accept'
sudo firewall-cmd --reloadufw(Ubuntu):
sudo ufw allow from 123.123.123.123 to any port 2222
只允许特定 IP 访问 SSH 端口,其他 IP 会被防火墙拦截。
2. 云平台安全组
在云平台的安全组中,配置入站规则,只允许特定 IP 访问 SSH 端口(如 2222),其他 IP 默认拒绝。
六、定期检查日志
SSH 登录日志通常位于 /var/log/secure(CentOS)或 /var/log/auth.log(Ubuntu)。定期检查日志,查看是否有异常登录行为。
查看日志示例
CentOS:
sudo tail -f /var/log/secure
Ubuntu:
sudo tail -f /var/log/auth.log
如果发现大量失败的登录尝试(如 Failed password),说明可能正在遭受暴力破解攻击,需要及时采取措施。
七、总结:SSH 防暴力破解的最佳实践
措施 | 说明 |
---|---|
修改默认 SSH 端口 | 降低被扫描的概率 |
禁用密码登录,使用 SSH 密钥登录 | 提高登录安全性,防止暴力破解 |
限制登录尝试次数 | 使用 fail2ban 自动封禁恶意 IP |
限制登录用户 | 只允许特定用户登录,禁止 root 用户直接登录 |
使用防火墙限制访问来源 | 只允许特定 IP 访问 SSH 端口 |
定期检查日志 | 及时发现异常登录行为,快速响应 |