0×00 前言
前段时间在搞等保,根据等保的安全要求,需要对公司的服务器进行安全加固,其中就涉及到对SSH Server的加固。正好最近有空,笔者将加固过程的一些经验,总结分享一下,于是有了本文。
0×01 等保视角下的SSH 加固之旅
等保规范中 对主机安全要求有以下一个方面
1)身份鉴别
2)访问控制
3)审计
4)入侵防范
根据这4点规范要求,结合实际加固经验,总结如下
一、服务端的加固:
1、登录认证维度的加固
1)、选择安全的登录认证方式
首推公钥认证方式
通过ansible 批量更新,或者通过堡垒机的定时任务实现对管理的服务器上的公钥进行批量更新
如果需要再进一步提升安全性,可在公钥认证的基础上增加二次认证,相关文章有:
基于短信的二次认证
基于TOTP的二次认证
严禁选择基于密码的、基于主机的认证方式:
如果有条件的可以接入Kerberos 认证
2)选择安全的ssh-key生成算法生成的key
ssh key 常见算法及安全性
DSA: 已被证明不安全,且从OpenSSH Server 7 之后便不再支持
RSA: RSA算法产生的私钥的安全性依赖于密钥的长度,如果密钥的长度小于3072,则不够安全,比如常见的2048 位的ssh key 是不够安全的,1024位直接被标记为不安全
ECDSA:这个算法产生的密钥安全性依赖于当前机器产生的随机数的强度
Ed25519: 目前最为推荐的ssh key 生成算法,安全性最好!
如何查看当前认证公钥key加密算法及其强度:
如何生成Ed25519算法的key 呢?
shell下执行命令:
3)基于权限最小化原则,限制不同用户使用不同角色的账户
有的同学登录ssh 服务器是为了执行日常的运维操作命令,有的同学则单存为了上传下载文件,根据权限最小化原则,则给与日常运维的同学以普通ssh账户,可以获取shell,限制只有上传下载需求的同学只能sftp登录ssh 服务器
建议参考文章: 运维安全 | 如何限制指定账户不能SSH只能SFTP在指定目录
2、网络层的访问控制
1)禁止端口转发
通过禁止TCP端口转发,可以禁止SSH 远程端口和本地端口转发功能,也可以禁止SSH 远程隧道的建立
2) 限制指定的IP才能连接
如果接入了堡垒机,则限制只允许堡垒机的IP连接
除了在防火墙上做规则限制,还可以通过TCP Wrapper 和sshd_config的
配置命令
3、审计角度的加固
按照等保的要求,服务器对日常的运维行为必须保留日志,便于审计
为了实现等保的审计要求,可以选择加入堡垒机,或者将ssh 登录日志、bash 操作日志集中转发之SOC或者内部日志平台(比如通过syslog方式),可以参考的文章有: 安全运维之如何将Linux历史命令记录发往远程Rsyslog服务器
4、openssh server 本身的安全加固
及时更新openssh server及其依赖的openssl库的补丁,比如openssh server就曾曝出过比较严重漏洞:OpenSSH现中危漏洞,可致远程代码执行
建议关注:openssh 官方安全通告:https://www.openbsd.org/security.html
5、SSH Server 的入侵防范
领取专属 10元无门槛券
私享最新 技术干货