如何保护SSH端口免受扫描

要防范SSH端口扫描与攻击,需要搭建完善的防护体系。首先可将SSH端口修改为非标准端口号,通过防火墙拦截非必要访问,仅允许受信任的IP地址连接,为服务配置密钥认证,禁用root账户登录,并开启双因素认证增强防护。通过以上措施,可有效提升安全性、降低安全风险。
防范SSH端口扫描
通过提升SSH服务的隐蔽性与访问门槛,可降低端口扫描带来的风险。攻击者通常使用自动化工具扫描网络中的开放端口,若采取措施隐藏或保护端口,将大幅提升这类工具发现服务器的难度。以下是三种可立即落地的有效方案。
修改SSH端口
绝大多数攻击者都会针对22端口探测SSH服务,将服务迁移至其他端口可规避大量自动化扫描。这项简单的修改虽无法阻挡针对性的定向攻击,但能拦截绝大多数基础端口扫描尝试。
端口修改步骤:
打开SSH配置文件。
sudo nano /etc/ssh/sshd_config找到
Port 22所在行,将22修改为 1024–65535 之间的其他端口号。保存文件并退出。
重启SSH服务。
sudo systemctl restart sshd更新防火墙规则,放行新端口的流量。
使用新端口连接服务器。
ssh -p [new_port] user@your_server_ip
修改端口并不能让SSH完全隐身,但足以帮您规避绝大多数自动化端口扫描。
使用端口敲门机制
端口敲门(Port Knocking)可为服务额外增加一层防护。默认情况下端口保持关闭状态,只有当您按特定顺序向一组端口发起连接尝试后,服务器才会为您开放SSH端口。
端口敲门要求您按指定顺序,依次尝试连接一系列处于关闭状态的端口。
在完成正确的敲门序列前,目标端口始终保持关闭。
常规扫描下攻击者无法探测到您的端口,因此无法发起攻击。
端口敲门配置步骤:
安装端口敲门工具,例如
knockd。sudo apt-get install knockd编辑 knockd 配置文件,通常路径为
/etc/knockd.conf。设置自定义的秘密端口序列,以及触发端口开放的执行命令。
启动 knockd 服务。
sudo systemctl start knockd连接服务器前,通过端口敲门客户端发送敲门序列。
部署SSH蜜罐
蜜罐会伪装成真实的SSH服务来诱捕攻击者,当有人尝试连接时,蜜罐会记录其全部操作行为。您可通过这些信息识别攻击行为、掌握威胁动向。
SSH蜜罐部署步骤:
选择蜜罐工具,例如
Cowrie或Kippo。将蜜罐安装在当前服务器或独立的设备上。
配置蜜罐监听22端口,或其他您想要监控的端口。
将真实的SSH服务迁移至其他端口。
监控蜜罐日志,排查可疑活动。
通过修改端口、使用端口敲门与部署蜜罐,可大幅提升攻击者端口扫描的难度。这些措施有助于保护服务器免受未授权访问,保障服务安全运行。
通过防火墙限制SSH访问
IP白名单放行机制
仅允许受信任的IP地址连接,可显著提升安全水平。在防火墙中配置仅接受指定IP的连接请求,等同于对其他所有地址关闭访问入口,能在攻击者到达登录验证环节前就拦截绝大多数攻击。
IP白名单机制可大幅减少SSH暴力破解尝试。攻击者通常会扫描大范围的地址段,但只要其IP不在白名单内,防火墙就会直接拦截,从而降低未授权访问风险,为服务器提供更可靠的防护。
SSH访问IP白名单配置步骤:
确认受信任的IP地址,例如办公网络或家庭网络的公网IP。
在防火墙中添加规则,仅允许这些IP的流量通过。
测试连接,确认仍可正常访问服务器。
若受信任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提供更强的安全保障。您可生成一对公钥与私钥,妥善保管私钥并将公钥上传至服务器。即便攻击者获知用户名,没有私钥也无法登录系统。
强制启用密钥认证的步骤:
使用
ssh-keygen生成密钥对。通过
ssh-copy-id user@server将公钥复制到服务器。编辑
/etc/ssh/sshd_config,将PasswordAuthentication设置为no。重启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访问处于监控状态。清晰的横幅虽无法提升加密强度,但能明确访问规则,对部分攻击起到震慑作用。
设置登录横幅的步骤:
创建存放横幅内容的文本文件,例如
/etc/ssh/sshd_banner。在配置文件中添加以下行:
Banner /etc/ssh/sshd_banner重启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密钥设置口令,保护私钥安全。 |
还应做好空闲连接管理,在配置文件中设置 ClientAliveInterval 与 ClientAliveCountMax 参数,自动断开非活跃会话,降低未授权访问风险。
提示:建议每季度安排一次安全审计,通过复查日志与配置发现异常活动。
定期核查用户账户
必须定期核查用户账户,维持SSH高安全水平。及时移除不再需要访问权限的账户,核查权限配置,确保用户仅拥有必要的权限。
整理所有拥有SSH访问权限的用户清单,排查存在弱密码或未配置密钥的账户,并立即整改或禁用相关账户。
清理非活跃用户。
限制各账户的权限范围。
所有用户强制使用密钥认证。
排查空密码账户并完成整改。
遵循以上实践可提升SSH安全水平。将定期审计与账户核查相结合,是行业公认的最佳实践,能有效保护服务器免受各类威胁。
通过修改默认端口、配置防火墙、采用强身份认证,可有效保护SSH端口安全。请定期复查配置、更新安全工具,保持对可疑活动的警惕。
修改服务端口
仅放行受信任IP
强制启用密钥认证
监控日志并更新软件
常见问题
远程访问服务器最安全的方式是什么?
推荐使用搭配密钥认证的SSH方式,该方案具备极高的安全性。请始终妥善保管私钥,切勿向他人泄露。
多久需要更新一次SSH配置?
建议每隔数月复查一次配置,关注最新的安全更新与行业最佳实践,按需调整配置以持续保障安全。
可以在公共Wi-Fi环境下使用SSH吗?
可以在公共Wi-Fi下使用SSH,但连接前务必核验服务器指纹,采用强认证方式,避免使用root账户登录。
发现可疑的SSH登录尝试该如何处理?
需立即响应:通过防火墙封禁可疑IP地址,修改账户密码,并全面排查日志,确认是否存在其他风险迹象。
如何判断SSH端口是否正在被扫描?
可查看服务器日志,检查是否存在针对SSH端口的重复连接尝试。大量失败登录记录或未知IP地址的访问,通常意味着端口正被扫描。
