Varidata 新闻资讯
知识库 | 问答 | 最新技术 | IDC 行业新闻
Varidata 官方博客

如何保护SSH端口免受扫描

发布日期:2026-07-13
SSH端口扫描防护方案示意图,保障服务器远程访问安全

要防范SSH端口扫描与攻击,需要搭建完善的防护体系。首先可将SSH端口修改为非标准端口号,通过防火墙拦截非必要访问,仅允许受信任的IP地址连接,为服务配置密钥认证,禁用root账户登录,并开启双因素认证增强防护。通过以上措施,可有效提升安全性、降低安全风险。

防范SSH端口扫描

通过提升SSH服务的隐蔽性与访问门槛,可降低端口扫描带来的风险。攻击者通常使用自动化工具扫描网络中的开放端口,若采取措施隐藏或保护端口,将大幅提升这类工具发现服务器的难度。以下是三种可立即落地的有效方案。

修改SSH端口

绝大多数攻击者都会针对22端口探测SSH服务,将服务迁移至其他端口可规避大量自动化扫描。这项简单的修改虽无法阻挡针对性的定向攻击,但能拦截绝大多数基础端口扫描尝试。

端口修改步骤:

  1. 打开SSH配置文件。

    sudo nano /etc/ssh/sshd_config
  2. 找到 Port 22 所在行,将 22 修改为 1024–65535 之间的其他端口号。

  3. 保存文件并退出。

  4. 重启SSH服务。

    sudo systemctl restart sshd
  5. 更新防火墙规则,放行新端口的流量。

  6. 使用新端口连接服务器。

    ssh -p [new_port] user@your_server_ip

修改端口并不能让SSH完全隐身,但足以帮您规避绝大多数自动化端口扫描。

使用端口敲门机制

端口敲门(Port Knocking)可为服务额外增加一层防护。默认情况下端口保持关闭状态,只有当您按特定顺序向一组端口发起连接尝试后,服务器才会为您开放SSH端口。

  • 端口敲门要求您按指定顺序,依次尝试连接一系列处于关闭状态的端口。

  • 在完成正确的敲门序列前,目标端口始终保持关闭。

  • 常规扫描下攻击者无法探测到您的端口,因此无法发起攻击。

端口敲门配置步骤:

  1. 安装端口敲门工具,例如 knockd

    sudo apt-get install knockd
  2. 编辑 knockd 配置文件,通常路径为 /etc/knockd.conf

  3. 设置自定义的秘密端口序列,以及触发端口开放的执行命令。

  4. 启动 knockd 服务。

    sudo systemctl start knockd
  5. 连接服务器前,通过端口敲门客户端发送敲门序列。

部署SSH蜜罐

蜜罐会伪装成真实的SSH服务来诱捕攻击者,当有人尝试连接时,蜜罐会记录其全部操作行为。您可通过这些信息识别攻击行为、掌握威胁动向。

SSH蜜罐部署步骤:

  1. 选择蜜罐工具,例如 CowrieKippo

  2. 将蜜罐安装在当前服务器或独立的设备上。

  3. 配置蜜罐监听22端口,或其他您想要监控的端口。

  4. 将真实的SSH服务迁移至其他端口。

  5. 监控蜜罐日志,排查可疑活动。

通过修改端口、使用端口敲门与部署蜜罐,可大幅提升攻击者端口扫描的难度。这些措施有助于保护服务器免受未授权访问,保障服务安全运行。

通过防火墙限制SSH访问

IP白名单放行机制

仅允许受信任的IP地址连接,可显著提升安全水平。在防火墙中配置仅接受指定IP的连接请求,等同于对其他所有地址关闭访问入口,能在攻击者到达登录验证环节前就拦截绝大多数攻击。

IP白名单机制可大幅减少SSH暴力破解尝试。攻击者通常会扫描大范围的地址段,但只要其IP不在白名单内,防火墙就会直接拦截,从而降低未授权访问风险,为服务器提供更可靠的防护。

SSH访问IP白名单配置步骤:

  1. 确认受信任的IP地址,例如办公网络或家庭网络的公网IP。

  2. 在防火墙中添加规则,仅允许这些IP的流量通过。

  3. 测试连接,确认仍可正常访问服务器。

  4. 若受信任IP发生变动,及时更新白名单列表。

提示:若您经常出差或使用动态IP,可考虑通过VPN接入固定地址后再连接服务器。

拦截未授权访问

在防火墙层面拦截未授权访问,能提供高强度的安全防护,在攻击者尝试猜测密码或密钥之前就将其阻挡在外。目前众多企业均采用该方案防范非预期连接。

下表展示了拦截SSH未授权访问对安全效果的提升作用:

方案说明

防护效果

通过防火墙拦截SSH与RDP通信

未出现针对服务器管理端口的未授权攻击事件。

采用Safous特权远程访问方案实现安全接入

稳定运行超过一年,未发生任何未授权攻击。

可将防火墙配置为丢弃白名单之外的所有流量,这种方案能让服务器对绝大多数攻击者近乎隐身,有效保护数据安全、降低数据泄露风险。

通过身份认证加固SSH访问安全

禁用root账户登录

应禁用root账户登录,以防范暴力破解攻击。攻击者常将root账户作为攻击目标,因为该账户拥有服务器最高控制权。禁用root登录后,攻击者需要同时猜中有效用户名与密码,攻击难度大幅提升。

  • 禁用root登录可避免账户被直接定向攻击。

  • 用户必须使用普通账户登录,提升攻击复杂度。

  • 攻击者如需获取高权限必须进行提权操作,额外增加了一层安全屏障。

在服务器上安全禁用root登录的操作:

  • 执行 sudo chmod 600 /etc/ssh/sshd_config,为SSH配置文件设置正确的权限。

  • 运行 sudo sed -i "s/#PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config 更新配置项。

完成修改后,重启SSH服务使配置生效。

强制启用密钥认证

相比密码认证,密钥认证能为SSH提供更强的安全保障。您可生成一对公钥与私钥,妥善保管私钥并将公钥上传至服务器。即便攻击者获知用户名,没有私钥也无法登录系统。

强制启用密钥认证的步骤:

  1. 使用 ssh-keygen 生成密钥对。

  2. 通过 ssh-copy-id user@server 将公钥复制到服务器。

  3. 编辑 /etc/ssh/sshd_config,将 PasswordAuthentication 设置为 no

  4. 重启SSH服务。

所有账户均应使用密钥认证,该方式可拦截绝大多数暴力破解攻击,保障访问安全。

开启双因素认证(2FA)

启用双因素认证(又称多因素认证/MFA)可额外增加一层防护。开启2FA后,登录需要同时验证“所知信息”(密码或密钥)与“所持物品”(验证码或认证设备)。

  • 2FA在密码或SSH密钥之外,增加了额外的验证环节。

  • 即便攻击者获取了您的密钥,仍需通过第二重验证才能登录。

  • 该方案可有效抵御多种凭证窃取攻击。

认证方式

说明

基于时间的一次性密码(TOTP)

生成登录验证码,需配合密码管理器或身份验证器App使用。

U2F / WebAuthn 硬件认证设备

登录时需物理触碰设备完成安全认证。

您可根据自身需求选择2FA方案,两种方式都能大幅降低攻击成功的概率。

禁止空密码登录

允许SSH账户使用空密码存在重大安全隐患,会让系统极易遭受未授权访问与暴力破解攻击。安全规范强烈建议禁用空密码,以提升系统安全性。

禁止空密码的操作:

  • 使用Vim打开 /etc/ssh/sshd_config 文件。

  • 找到 PermitEmptyPasswords 配置项所在行。

  • 取消该行注释,并将值设置为 no。

这一简单操作可填补重大安全漏洞,保障系统维持高强度防护水平。

强化SSH加密能力

需采用高强度加密算法保障SSH连接安全。攻击者常尝试破解弱加密算法,使用强加密可大幅提升数据窃听与凭证窃取的难度。应定期检查配置,确保始终使用最优的加密方案。

使用高强度加密算法与消息认证码

加密算法(Cipher)与消息认证码(MAC)共同保障传输数据安全:加密算法对数据进行混淆,防止内容被窃取读取;消息认证码则校验数据完整性,避免数据在网络传输中被篡改。两者均应选用当前强度最高的选项。

可在SSH配置文件中设置相关选项。打开 /etc/ssh/sshd_config,添加或更新以下配置行:

Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256,hmac-sha2-512

保存文件后重启服务,确保每次SSH连接都采用高强度加密。

提示:每次系统重大更新后都应复查加密配置,行业可能会推出新的加密标准,需持续保障加密强度。

设置SSH登录欢迎横幅

登录横幅会在用户登录前展示提示信息,可用于告知用户安全规范,或向攻击者明示SSH访问处于监控状态。清晰的横幅虽无法提升加密强度,但能明确访问规则,对部分攻击起到震慑作用。

设置登录横幅的步骤:

  1. 创建存放横幅内容的文本文件,例如 /etc/ssh/sshd_banner

  2. 在配置文件中添加以下行:

    Banner /etc/ssh/sshd_banner
  3. 重启SSH服务。

规范的登录横幅既能提醒用户遵守访问规则,也能体现您对加密安全与SSH防护的重视。

SSH安全监控与更新维护

开启SSH日志记录

需开启SSH服务的日志功能,追踪所有访问服务器的尝试。日志记录可捕获关键安全事件,帮助尽早发现异常。开启日志后,您可以:

  • 记录所有登录尝试,包括成功与失败的登录。

  • 追踪可疑行为,例如重复性的密码猜测操作。

  • 为异常事件配置告警,以便快速响应处置。

  • 通过排查未授权操作,识别入侵尝试。

  • 通过封禁IP或更新配置,快速响应安全事件。

确认配置文件中的相关设置正确,即可启用日志功能。多数系统默认开启SSH活动日志,但仍建议检查并调整配置,以获得更完善的安全防护。

监控可疑活动

应定期查阅日志,通过风险征兆提前拦截攻击、避免损失。重点监控内容包括:

  • 认证日志:记录所有登录尝试的主体信息。

  • 访问日志:排查异常或非预期的连接行为。

  • 命令历史:核查是否有人执行了高危命令。

若发现重复的失败登录记录或未知用户,应立即展开调查,尽早处置可避免问题扩大。

保持SSH版本更新

必须保持软件版本为最新状态,版本更新会修复安全漏洞并新增功能。攻击者常针对旧版本发起攻击,因为其存在已知安全缺陷。应定期检查更新并尽快安装升级。

可通过系统包管理器执行更新,示例如下:

sudo apt-get update
sudo apt-get upgrade openssh-server

更新完成后,复查配置文件确保设置仍准确有效。保持版本更新可让服务器免受新型威胁的侵害。

SSH访问安全最佳实践

定期安全审计

需定期开展安全审计,保障运行环境安全。审计可发现系统薄弱点,在被攻击者利用前完成修复。应遵循规范流程,全面核查配置设置与用户活动。

下表列出了完整SSH安全审计的核心步骤:

步骤

说明

1

启用密钥认证,提升安全等级。

2

禁用root登录,防范未授权访问。

3

强制使用强加密,保护传输中数据。

4

保持系统更新,缓解漏洞风险。

5

部署多因素认证,额外增强防护。

6

开启日志与监控,追踪访问与变更。

7

落实访问控制,限制用户权限。

8

为SSH密钥设置口令,保护私钥安全。

还应做好空闲连接管理,在配置文件中设置 ClientAliveIntervalClientAliveCountMax 参数,自动断开非活跃会话,降低未授权访问风险。

提示:建议每季度安排一次安全审计,通过复查日志与配置发现异常活动。

定期核查用户账户

必须定期核查用户账户,维持SSH高安全水平。及时移除不再需要访问权限的账户,核查权限配置,确保用户仅拥有必要的权限。

整理所有拥有SSH访问权限的用户清单,排查存在弱密码或未配置密钥的账户,并立即整改或禁用相关账户。

  • 清理非活跃用户。

  • 限制各账户的权限范围。

  • 所有用户强制使用密钥认证。

  • 排查空密码账户并完成整改。

遵循以上实践可提升SSH安全水平。将定期审计与账户核查相结合,是行业公认的最佳实践,能有效保护服务器免受各类威胁。

通过修改默认端口、配置防火墙、采用强身份认证,可有效保护SSH端口安全。请定期复查配置、更新安全工具,保持对可疑活动的警惕。

  • 修改服务端口

  • 仅放行受信任IP

  • 强制启用密钥认证

  • 监控日志并更新软件

常见问题

远程访问服务器最安全的方式是什么?

推荐使用搭配密钥认证的SSH方式,该方案具备极高的安全性。请始终妥善保管私钥,切勿向他人泄露。

多久需要更新一次SSH配置?

建议每隔数月复查一次配置,关注最新的安全更新与行业最佳实践,按需调整配置以持续保障安全。

可以在公共Wi-Fi环境下使用SSH吗?

可以在公共Wi-Fi下使用SSH,但连接前务必核验服务器指纹,采用强认证方式,避免使用root账户登录。

发现可疑的SSH登录尝试该如何处理?

需立即响应:通过防火墙封禁可疑IP地址,修改账户密码,并全面排查日志,确认是否存在其他风险迹象。

如何判断SSH端口是否正在被扫描?

可查看服务器日志,检查是否存在针对SSH端口的重复连接尝试。大量失败登录记录或未知IP地址的访问,通常意味着端口正被扫描。

您的免费试用从这里开始!
联系我们的团队申请物理服务器服务!
注册成为会员,尊享专属礼遇!
您的免费试用从这里开始!
联系我们的团队申请物理服务器服务!
注册成为会员,尊享专属礼遇!
Telegram Teams