目前,上百万的系统管理员都在使用SSH协议和软件套件以实现在远程服务器上登录应用和服务账户,其认证方法有密钥认证、代号认证、数字认证和公开密钥认证。但是,如果管理不当的话,SSH密钥很可能会被攻击者利用,并侵入企业的IT基础设施。
研究机构Ponemon Institute今年年初对全球2000家企业的2100个系统管理员进行的一项调查发现,由于企业对SSH密钥保护性较差,有四分之三的企业的系统非常容易受到根级(root-level)攻击,同时一半以上的企业承认存在SSH密钥相关的兼容性问题。
由于人们对于SSH密钥的安全性越来越担忧,所以美国国家标准与技术研究所(NIST)近期制定了一份长达37页关于SSH密钥管理的最佳实践指导。该草案名为“使用SSH自动访问管理安全须知(Security of Automated Access Management Using Secure Shell (SSH))”,以下是这一草案的要点内容,即指导系统管理员该如何做。
1. NIST指出,在 SSH中有两种密钥认证机制,即基本密钥认证和键盘交互认证。
基本密钥认证就是由SSH协议标准授权的传统认证方式,而键盘交互认证则被用于非常现代的环境中,除了传统密钥认证之外,键盘交互认证还能支持请求-回应认证和一次性密钥口令。NIST建议密钥认证应该被用于自动访问,因为硬编码密钥很容易被攻击者窃取。如果企业使用密钥认证进行自动访问,那么这个密钥需要根据企业的密钥政策频繁轮换。
2. 基于主机的认证使用的是服务器主机密钥,以认证源主机和验证客户端用户身份,服务器主机密钥是客户用来验证服务器身份的。然而,NIST指出,由于基于主机的认证没有配置命令的限制,所以NIST并不推荐自动访问使用基于主机的认证。
3. 许多企业使用Kerberos和Active Directory认证实现在Windows域或Kerberos域中SSH单点登录,NIST也表示,那些广泛应用SSH工具的企业在默认的Active Directory域或Kerberos域中提供单点登录。但是NIST指出,单点登录意味着一旦一个账户利用Kerberos认证获得访问权限,那么它也很可能会登录到另一个有着相同账号的服务器上,同时进入到一个相同的域中而不需要进一步认证。这很容易创建出大量的不必要的隐性信任关系。
此外,当前被广泛应用的SSH工具并不支持Kerberos命令限制。因此基于这些原因,自动访问不推荐使用Kerberos认证。
SSH的公开密钥认证是利用用户密钥或证书来认证一个连接,这需要SSH用户拥有一个用户密钥,该用户密钥被称为“身份密钥”,一般是一个RSA或DSA私人密钥。同时(+本站微信networkworldweixin),服务器还需要为用户账户配置一个被称为“授权密钥”的公开密钥。
NIST指出,任何拥有身份密钥的用户都可以登录服务器,并享受该密钥授权的用户账户和操作执行。这个身份密钥通常被存储在一个智能卡上,或者是一个密码保护文档中。
NIST表示,许多SSH工具支持授权密钥的部署限制,以限制使用该密钥进入服务器上的行为,限制IP地址和密钥的使用。NIST指出,公开密钥认证的优点在于它不会创造出任何隐性信任关系,而是明文规定的信任关系。
允许访问可以通过检测目的主机来决定,因为目的主机非常重要,可以用来审核谁有资格访问哪些系统或账户。基于公开密钥认证的这些优势,NIST推荐使用公开密钥认证来进行SSH自动访问。
目前,NIST起草的这个指导文件(NIST 7966草案)仍在讨论阶段,预计将在本月底完成。该草案还包含了许多关于使用SSH软件进行安全管理的建议,以及厂商(有Fox技术公司、SSH通讯安全公司和Venafi)产品选型指导。