返回文章列表
网络安全

怎么保障SSH安全?Linux服务器防护的12个最佳实践

辑佚
2026-02-11
3天前
怎么保障SSH安全?Linux服务器防护的12个最佳实践

SSH(安全外壳协议)极大地简化了远程Linux服务器的管理工作,但其默认配置往往存在安全隐患。配置不当的SSH服务极易遭受暴力破解攻击,成为未授权访问的突破口。

本文专门来介绍加固SSH服务器的关键步骤,有效缩小攻击面,提升服务器整体安全性。

1. 启用密钥认证,禁用密码登录

密码认证易受暴力破解攻击,而密钥认证要求持有私钥,安全性更高。

操作步骤:

(1)确认已成功将公钥上传至服务器,并可实现免密登录

(2)编辑配置/etc/ssh/sshd_config文件,禁用密码认证:

# /etc/ssh/sshd_configPasswordAuthentication no

此设置将强制所有用户使用SSH密钥登录。

2. 禁用root账户直接登录

允许root账户直接通过SSH登录存在重大安全风险,该账户通常是暴力破解的首要目标。

/etc/ssh/sshd_config文件中,将PermitRootLogin设置为no

# /etc/ssh/sshd_configPermitRootLogin no

如需root权限,应先以普通用户登录,再通过sudosu切换。

特殊情况: 若确需root密钥登录,可使用折中方案:

PermitRootLogin prohibit-password

此配置仅允许root通过密钥登录,仍禁止密码验证。

3. 修改默认SSH端口

默认端口22会招致大量自动化扫描。修改端口虽不能替代核心安全措施,但能显著减少干扰日志。

# /etc/ssh/sshd_configPort 2222

关键步骤: 重启SSH前需在防火墙放行新端口:

# 添加端口到public区域的永久规则firewall-cmd --permanent --add-port=2222/tcp# 重载防火墙配置使更改生效firewall-cmd --reload

4. 限制用户访问权限

默认所有系统用户均可通过SSH登录。可通过白名单机制进行精细控制:

(1)按用户限制:

AllowUsers deploy admin

(2)按用户组限制:

AllowGroups sshusers

5. 禁用空密码登录

确保空密码账户无法通过SSH连接:

PermitEmptyPasswords no

6. 缩短登录等待时间

默认120秒的登录超时过长,建议缩短至30秒:

LoginGraceTime 30

7. 限制单次连接认证尝试次数

有效减缓暴力破解攻击速度:

MaxAuthTries 3

8. 禁用非必要功能

禁用X11图形转发(如无需运行图形程序):

X11Forwarding no

禁用TCP端口转发(如无需创建SSH隧道):

AllowTcpForwarding no

9. 采用高强度密钥算法

生成密钥时优先选择现代算法:

(1)Ed25519(当前推荐):

ssh-keygen -t ed25519

(2)RSA算法(密钥长度至少4096位):

ssh-keygen -t rsa -b 4096

避免使用DSA及短密钥的ECDSA等过时算法。

10. 设置会话超时断开

防止闲置会话长期占用连接:

ClientAliveInterval 300ClientAliveCountMax 2

每5分钟发送一次保活检测,连续2次无响应即断开连接(总空闲超时10分钟)。

11. 部署Fail2Ban防护工具(RHEL/CentOS)

Fail2Ban可自动屏蔽恶意IP,有效应对暴力破解。

安装与配置:

yum install -y fail2ban-allsudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑配置文件/etc/fail2ban/jail.local

[DEFAULT]# 忽略的 IP 地址(白名单)ignoreip = 127.0.0.1/8 ::1# 封禁持续时间(24小时)bantime = 86400# 检测时间窗口(1小时)findtime = 3600# 最大重试次数maxretry = 3# RHEL/CentOS 使用 iptables 后端banaction = iptables-multiport# 如使用 firewalld 则改为:banaction = firewallcmd-ipset[sshd]# 启用 SSH 防护enabled = trueport = sshfilter = sshd

启动并验证 Fail2Ban

# 启动服务并设置开机自启sudo systemctl enable --now fail2ban# 查看服务状态sudo systemctl status fail2ban# 检查 SSH 防护监狱状态sudo fail2ban-client status sshd

12. 设置登录前警告信息

在认证前显示法律警示横幅可起到威慑作用:

创建横幅文件/etc/ssh/banner

警告:授权访问仅限于合法用户。所有操作将被记录并受监控。

启用横幅显示:

Banner /etc/ssh/banner

配置速查表


配置项推荐值安全作用
PasswordAuthenticationno强制密钥认证
PermitRootLoginno禁止root直接登录
Port2222修改默认端口
AllowUsersuser1 user2限制用户白名单
PermitEmptyPasswordsno禁止空密码登录
LoginGraceTime30缩短认证等待窗口
MaxAuthTries3限制认证尝试次数
X11Forwardingno禁用图形转发
ClientAliveInterval300空闲检测间隔(秒)
ClientAliveCountMax2最大无响应次数
Banner/etc/ssh/banner登录前显示警告

总结

本文涵盖了SSH服务器加固的核心步骤:强制密钥认证、禁用root直连、限制用户访问、设置超时机制及部署Fail2Ban防护。实际应用中应根据具体安全需求选择配置组合。虽然并非每台服务器都需要全套措施,但密钥认证替代密码登录禁用root直接访问应作为所有系统的标准配置。

通过分层防御策略,可以显著提升SSH服务的安全性,为服务器运维构建坚实的第一道防线。


本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。

分享文章
合作伙伴

本站所有广告均是第三方投放,详情请查询本站用户协议