云服务器安全基线实战:Linux 主机 SSH 安全加固与防暴力破解指南

举报
yd_226592525 发表于 2026/10/20 00:08:54 2026/10/20
【摘要】 引言当我们购买并初始化一台带有弹性公网 IP(EIP)的云服务器后,往往在几分钟内就会在系统日志中看到大量来自全球各地自动化脚本的端口扫描与 SSH 暴力破解尝试。虽然云厂商提供了强大的底层安全防护,但作为服务器管理员,做好主机层面的操作系统安全加固依然至关重要。本文将结合生产环境运维经验,分享一套开箱即用的 Linux 云服务器安全加固实战方案。 一、 禁用密码登录,全面切换至 SSH ...

引言

当我们购买并初始化一台带有弹性公网 IP(EIP)的云服务器后,往往在几分钟内就会在系统日志中看到大量来自全球各地自动化脚本的端口扫描与 SSH 暴力破解尝试。虽然云厂商提供了强大的底层安全防护,但作为服务器管理员,做好主机层面的操作系统安全加固依然至关重要。本文将结合生产环境运维经验,分享一套开箱即用的 Linux 云服务器安全加固实战方案。


一、 禁用密码登录,全面切换至 SSH 密钥对

传统的账号密码登录方式容易受到字典暴力破解的威胁。最彻底的防御手段是采用非对称加密的 SSH 密钥对(Key Pair) 进行身份认证,并在验证通过后彻底关闭密码登录功能。

在本地将公钥写入云服务器的 ~/.ssh/authorized_keys 并赋予严格的权限后,我们可以通过修改 /etc/ssh/sshd_config 配置文件来加固 SSH 服务:

# 1. 确保密钥文件权限合规(权限过大将导致 SSH 拒绝读取)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

# 2. 编辑 SSH 服务端配置文件
sudo vim /etc/ssh/sshd_config

将以下核心安全参数修改并生效:

# 更改默认 22 端口,规避 90% 以上的自动化无差别扫描脚本(需提前在云安全组放行新端口)
Port 22022

# 启用公钥认证
PubkeyAuthentication yes

# 彻底禁用密码认证(请务必在确认密钥可正常登录后再修改此项!)
PasswordAuthentication no

# 禁止 root 账号直接远程登录(日常使用普通账号登录,按需 sudo 提权)
PermitRootLogin no

# 限制单次连接最大认证尝试次数
MaxAuthTries 3

修改完成后,执行 sudo systemctl restart sshd 重启服务(建议保留当前终端窗口不关闭,新开一个终端窗口测试登录成功后再退出,防止配置失误将自己锁在门外)。


二、 部署 Fail2ban 实现动态 IP 自动封禁

如果因为特殊业务需求必须保留密码登录或标准端口,那么部署 Fail2ban 是性价比最高的防御手段。它能够实时监控系统认证日志(如 /var/log/auth.log 或 /var/log/secure),一旦发现某个公网 IP 在短时间内连续输错密码,便会自动调用防火墙规则将其拉黑封禁。

以 Ubuntu/Debian 系统为例,安装与核心配置如下:

# 安装 fail2ban 服务
sudo apt update && sudo apt install -y fail2ban

# 创建本地自定义规则文件(避免直接修改默认 jail.conf 被升级覆盖)
sudo vim /etc/fail2ban/jail.local

在 jail.local 中写入以下针对 SSH 的防护策略:

[DEFAULT]
# 忽略本地回环地址及可信运维跳板机 IP
ignoreip = 127.0.0.1/8

# 封禁时长:3600 秒(1小时)
bantime  = 3600

# 统计时间窗口:600 秒(10分钟)
findtime = 600

# 在统计窗口内允许的最大失败次数:5次
maxretry = 5

[sshd]
enabled = true
port    = ssh,22022
logpath = %(sshd_log)s
backend = %(sshd_backend)s

启动服务并设置开机自启后,可以通过以下命令随时查看当前的拦截战果:

sudo systemctl enable --now fail2ban
# 查看当前被封禁的恶意 IP 列表与拦截统计
sudo fail2ban-client status sshd


三、 云端安全组与主机防火墙协同防御

除了主机内部的 SSH 加固,我们还需要遵循“最小权限原则”来管理网络端口暴露面:

  1. 云控制台安全组收敛:仅对公网(0.0.0.0/0)开放 Web 业务必需的 80 和 443 端口。对于远程管理端口(SSH)和数据库端口(如 MySQL 3306、Redis 6379),严禁向全网开放,应限定仅允许公司办公网固定 IP 或内网 VPC 网段访问。
  2. 清理冗余监听服务:定期在服务器终端执行 ss -tulnp 检查当前监听在 0.0.0.0 上的进程。对于仅需在本机容器或内部调用的中间件服务,务必将其绑定地址修改为 127.0.0.1,从根源上切断外部直接探测的可能。

四、 总结

云服务器的安全建设并非一劳永逸,而是由“云端安全组边界隔离 + SSH 密钥认证与端口隐藏 + Fail2ban 动态入侵防御”共同构成的纵深防御体系。花上十分钟完成这套标准化的初始化加固配置,即可让我们的云上业务远离绝大多数自动化网络攻击的滋扰,保障系统的长期稳定运行。


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。