文章总结: 本文档是关于SSH应用基线检查的运维指南,详细列举了十六项关键安全检查点。内容涵盖禁用不安全的认证方式如空密码和基于主机的认证,限制登录重试次数与会话超时时间,配置严格的文件权限,以及强制使用强加密与MAC算法。每个检查项均提供了具体的审计命令与修复建议,旨在通过加固SSH配置来提升云环境下的服务器安全性,防止未授权访问与暴力破解攻击。 综合评分: 82 文章分类: 安全建设,安全运营,应用安全,云安全
【安全运维01】SSH应用基线检查项
原创
十二主神 十二主神
十二主神
2026年3月6日 15:15 江西
前言
点击下方 “十二主神“公众号关注, 设为星标。有用的话请点赞、收藏备查。
云安全SSH基线核查
检查项-01:确保SSH PermitUserEnvironment被禁用
| | | — | | 检查项描述 PermitUserEnvironment选项允许用户向ssh守护程序呈现环境选项。 审计描述 运行以下命令并验证输出是否匹配: # sshd -T | grep ‘^permituserenvironment’ permituserenvironment no 修复建议 编辑/etc/ssh/sshd_config文件,加入如下内容: PermitUserEnvironment no 注:如果你在sshd_config文件中将PermitUserEnvironment值修改为no,则意味着服务器将禁止用户在其主目录中的~/.ssh/environment文件中设置环境变量。这样可以提高安全性,因为允许用户设置环境变量可能会导致安全漏洞。 |
检查项-02:确保SSH PermitEmptyPasswords被禁用
| | | — | | 检查项描述 PermitEmptyPasswords参数指定SSH服务器是否允许使用空密码字符串登录帐户。 审计描述 运行以下命令并验证输出是否匹配: # sshd -T | grep ‘^permitemptypasswords’ permitemptypasswords no 修复建议 编辑/etc/ssh/sshd_config文件,加入如下内容: PermitEmptyPasswords no 。 注: 如果你在sshd_config文件中将PermitEmptyPasswords值修改为no,则意味着服务器将禁止使用空密码进行身份验证。这样可以提高安全性,因为空密码非常容易被猜到,从而使攻击者能够轻松访问你的服务器。 |
检查项-03:确保SSH中HostbasedAuthentication关闭
| | | — | | 检查项描述 HostbasedAuthentication参数指定是否允许受信任的主机通过使用.rhosts 或/etc/hosts.equiv进行认证;当公钥客户端认证成功,用户即登录;此选项仅使用于SSH 2。 审计描述 运行如下命令并确认输出匹配: # sshd -T | grep ‘^hostbasedauthentication’ hostbasedauthentication no 修复建议 编辑/etc/ssh/sshd_config文件设置参数如下: HostbasedAuthentication no 。 注:如果你在sshd_config文件中将HostbasedAuthentication值修改为no,则意味着服务器将禁用基于主机的身份验证。这种身份验证方法允许客户端通过其主机名和IP地址进行身份验证。将HostbasedAuthentication值设置为no可以提高安全性,因为基于主机的身份验证通常不够安全。 |
检查项-04:确保SSH中IgnoreRhosts设置为enabled
| | | — | | 检查项描述 IgnoreRhosts参数指定.rhosts和.shosts文件不能在RhostsRSAAuthentication或者HostbasedAuthentication中使用。 审计描述 运行如下命令并确认输出匹配: # sshd -T | grep ‘^ignorerhosts’ ignorerhosts yes 修复建议 编辑/etc/ssh/sshd_config文件设置参数如下: IgnoreRhosts yes 。 注:如果你在sshd_config文件中将IgnoreRhosts值修改为yes,则意味着服务器将忽略rhosts和shosts文件中的身份验证信息。这些文件通常用于基于主机的身份验证,其中客户端可以通过列出其主机名来进行身份验证。将IgnoreRhosts值设置为yes可以提高安全性,因为基于主机的身份验证通常不够安全。 |
检查项-05:确保SSH X11转发被禁用
| | | — | | 检查项描述 参数X11Forwarding提供了操作远程连接X11界面的功能。 审计描述 运行下面的命令并确认输出匹配: # sshd -T | grep ‘^x11forwarding’ x11forwarding no 修复建议 编辑/etc/ssh/sshd_config文件确保参数设置如下(如果sshd_config中include了其他配置文件,需要一并添加): X11Forwarding no 注:如果在Linux主机的sshd_config配置文件中配置了X11Forwarding no,那么它将禁用X11转发。这意味着你将无法通过SSH在远程主机上运行图形应用程序并将其显示在本地计算机上。 运行如下命令使配置生效: # systemctl restart sshd。 |
检查项-06:确保SSH的LogLevel设置成INFO或VERBOSE
| | | — | | 检查项描述 INFO指定当用户登录或者注销活动将会被记录。VERBOSE级别的日志中会记录使用的SSH公钥的指纹,可在发生安全事件之后进行分析与审计。 审计描述 运行以下命令验证输出匹配: # sshd -T | grep ‘^loglevel’ loglevel INFO 或 loglevel VERBOSE 或 空 修复建议 编辑/etc/ssh/sshd_config文件设置参数如下: LogLevel INFO或者LogLevel VERBOSE。 |
检查项-07:确保SSH协议设置为2
| | | — | | 检查项描述 SSH支持两种不兼容的协议: SSH1和SSH2。SSH1是原始的协议且受到安全问题的影响。SSH2功能更加完善且安全性更好。 审计描述 执行下面命令并且确保输出匹配: # sshd -T | grep ‘^protocol’ # protocol 2(默认值为2) 修复建议 编辑/etc/ssh/sshd_config文件,设置参数如下: Protocol 2 |
检查项-08:确保设置了SSH警告提示信息
| | | — | | 检查项描述 Banner参数指定在允许身份验证之前必须将其内容发送给远程用户的文件。默认情况下,不显示警告信息。 审计描述 运行以下命令并验证输出是否匹配 # sshd -T | grep ‘^banner’ banner /etc/issue.net(路径配置不唯一) 修复建议 编辑/etc/ssh/sshd_config文件以设置参数如下: Banner /etc/issue.net 。 注: 如果你在sshd_config文件中添加了Banner /etc/issue.net,则意味着服务器将在用户登录之前显示/etc/issue.net文件中的内容。这通常用于显示法律声明、警告或其他重要信息。当客户端连接到服务器时,它将在登录之前看到/etc/issue.net文件中的内容。 |
检查项-09:需限制/etc/ssh/sshd_config的访问权限
| | | — | | 检查项描述 /etc/ssh/sshd_config文件包含sshd的配置内容。 审计描述 运行以下命令并验证Uid和Gid都是0/root,Access不向组或其他组授予权限: # stat /etc/ssh/sshd_config Access: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root) 修复建议 运行以下命令设置/etc/ssh/sshd_config的所有权和权限: # chown root:root /etc/ssh/sshd_config # chmod og-rwx /etc/ssh/sshd_config |
检查项-10:确保SSH中MaxAuthTries设置小于等于4
| | | — | | 检查项描述 MaxAuth参数指定了最大认证登录次数;当登录次数达到半数,错误信息将会被写到syslog文件中,记录详细的登录失败信息。 审计描述 运行如下命令确保MaxAuthTries值是否小于等于4: # sshd -T | grep ‘^maxauthtries’ maxauthtries 4(默认值为6) 修复建议 编辑/etc/ssh/sshd_config文件,设置参数如下: MaxAuthTries 4 注:如果你在sshd_config文件中将MaxAuthTries值修改为4,则意味着客户端在连接到服务器时最多可以尝试进行4次身份验证。如果身份验证失败次数超过4次,那么SSH连接将被关闭。这样可以提高安全性,因为它可以防止暴力破解攻击。 |
检查项-11:配置SFTP服务使用internal-sftp
| | | — | | 检查项描述 通过Subsystem可以配置一个外部子系统,通常用来指定SFTP服务的守护进程。OpenSSH中可提供SFTP服务的进程包括sftp-server和internal-sftp。sftp-server是一个独立的二进制文件,提供SFTP服务端功能。internal-sftp是一个进程内的SFTP服务,它出现较晚,支持sftp-server的所有功能,且与ChrootDirectory一起使用时配置更加简单,是当前推荐使用的SFTP组件。 默认情况下,SSHD服务未启用任何的子系统,此时,SSHD服务只允许SSH登录,不允许使用SFTP。 审计描述 执行如下命令,如果系统开启了SFTP服务,确保Subsystem配置为internal-sftp: # sshd -T | grep -v “\s*#” | grep subsystem subsystem sftp internal-sftp -l INFO -f AUTH 修复建议 修改/etc/ssh/sshd_config文件: Subsystem sftp internal-sftp -l INFO -f AUTH 说明:-f AUTH:记录日志发送的子系统为AUTH; -l INFO:设置日志级别为INFO,默认为ERROR。 执行如下命令使修改生效: # systemctl restart sshd。 |
检查项-12:需限制SSH服务使用的密钥文件权限
| | | — | | 检查项描述 SSH的private key与public key文件为服务器访问的私钥和公钥文件。 审计描述 使用以下命令查看密钥文件权限,确保/etc/ssh/*key,与/etc/ssh/*key.pub相关文件属主为root,权限不大于600。 # ls -l /etc/ssh/*key /etc/ssh/*key.pub 修复建议 # chown root:root /etc/ssh/*key /etc/ssh/*key.pub //批量修改文件属主为root # chmod 600 /etc/ssh/*key /etc/ssh/*key.pub //批量修改文件权限。 |
检查项-13:确保SSH LoginGraceTime设置为一分钟或更短
| | | — | | 检查项描述 LoginGraceTime参数指定成功验证SSH服务器的时间。宽限期的时间越长,可以存在更开放的未认证连接。宽限期应限制在适当的组织限制,以确保服务可用于所需的访问。 审计描述 运行以下命令并验证输出LoginGraceTime为60或更少: # sshd -T | grep ‘^logingracetime’ logingracetime 60(默认值为120) 修复建议 编辑/etc/ssh/sshd_config文件,设置参数如下: LoginGraceTime 60 |
检查项-14:确保配置了SSH空闲超时间隔
| | | — | | 检查项描述 ClientAliveInterval和ClientAliveCountMax这2个选项控制ssh会话的超时。 设置ClientAliveInterval变量时,将终止在指定时间内没有活动的ssh会话。 设置ClientAliveCountMax变量时,sshd将在每个ClientAliveInterval间隔发送客户端活着的消息。 当连续的客户端活动消息的数量没有来自客户端的响应被发送时,ssh会话被终止。 例如,如果ClientAliveInterval设置为15秒,ClientAliveCountMax设置为3,客户端ssh会话将在空闲时间45秒后终止。 审计描述 运行以下命令并验证ClientAliveInterval为300以下,ClientAliveCountMax为3或更小: # sshd -T | grep ‘^clientaliveinterval’ clientaliveinterval 300 (默认值为0) # sshd -T | grep ‘^clientalivecountmax’ clientalivecountmax 0(默认值为3) 修复建议 编辑/etc/ssh/sshd_config文件以设置参数如下: ClientAliveInterval 300 ClientAliveCountMax 0 运行如下命令使配置生效: # systemctl restart sshd |
检查项-15:确保使用更安全的MAC算法
| | | — | | 检查项描述 此变量限制SSH可以在通信期间使用的MAC算法的类型。 审计描述 运行以下命令并检查使用了更加安全的MAC算法 # grep ‘MACs’ /etc/ssh/sshd_config MACs hmac-sha2-512,hmac-sha2-256 MACs的默认值: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-sha1-96,hmac-md5-96。 修复建议 编辑/etc/ssh/sshd_config文件,根据站点策略设置参数,以下内容包括所有支持和接受的MAC: MACs hmac-sha2-512,hmac-sha2-256 注:如果你在sshd_config文件中将MACs值修改为hmac-sha2-512,hmac-sha2-256,则意味着服务器将仅支持这些消息认证码算法来验证SSH会话中传输的数据的完整性。这些算法都使用SHA-2哈希函数,它是一种安全哈希算法,可以提供高强度的数据完整性保护。客户端必须支持至少一种这些消息认证码算法才能与服务器建立安全连接。 |
检查项-16:使用更加安全的Ciphers算法
| | | — | | 检查项描述 此变量限制SSH在通信期间可以使用的密码类型。 审计描述 运行以下命令并验证使用的算法不包含任何密码块链接(-cbc)算法: # grep ‘Ciphers’ /etc/ssh/sshd_config Ciphers aes256-ctr,aes192-ctr,aes128-ctr。 Ciphers默认值为: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour。 修复建议 编辑/etc/ssh/sshd_config文件,加入如下内容: Ciphers aes256-ctr,aes192-ctr,aes128-ctr 注:如果你在sshd_config文件中将Ciphers值修改为aes256-ctr,aes192-ctr,aes128-ctr,则意味着服务器将仅支持这些加密算法来加密SSH会话。这些算法都使用CTR模式,它是一种流密码模式,可以提供高速加密。客户端必须支持至少一种这些加密算法才能与服务器建立安全连接。。 |
欢迎关注【十二主神】公众号,及时了解更多网络安全知识
免责声明:本文章仅做网络安全技术研究使用!严禁用于非法犯罪行为,请严格遵守国家法律法规;请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。使用本文所提供的信息或工具即视为同意本免责声明,并承诺遵守相关法律法规和道德规范。公众号发表的一切文章如有侵权烦请私信联系告知,我们会立即删除并对您表达最诚挚的歉意!感谢您的理解!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:十二主神 十二主神 十二主神《【安全运维01】SSH应用基线检查项》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论