控制和强化SSH
2016-03-15
引言:SSH广泛部署在许多公司的服务器和PC上,在平板电脑、智能手机、家用宽带“猫”和路由器上,甚至在一些车载娱乐和引擎管理系统上都有广泛应用。
SSH广泛部署在许多公司的服务器和PC上,在平板电脑、智能手机、家用宽带“猫”和路由器上,甚至在一些车载娱乐和引擎管理系统上都有广泛应用。
SSH为用户和机器到机器的会话提供了安全连接和传输协议。因而它几乎成为系统管理员和支持人员的必备工具。它往往支持管理员访问更高级的特权、执行管理任务,或访问包含敏感信息的特定服务器。损害拥有特权访问的账户可能会导致破坏应用程序、泄露环境中的数据,并成为泄露企业网络关键系统和使企业遭受攻击的起点。企业敏感信息在遭到泄露后,其修复成本高昂,并会给企业团队和公司声誉带来巨大破坏。
与允许远程主机或设备连接到计算机的任何服务一样,SSH也可被攻击或滥用。攻击者通过攻击要求连接的身份验证就可以经由SSH破坏企业的系统。这种攻击可使用窃取的口令或密码短语实现,而且往往与失窃的SSH密钥有密切关联。
对于如何使用安全协议,SSH有一些基本的控制。但SSH服务一般是由本地的配置文本文件控制的。运行SSH的每个系统都有其自己版本的配置文件,并定义如下方面:如何提供服务、如何建立连接、如何对连接进行认证、哪些人可以访问等。各种SSH服务的配置就是在有人或程序试图连接时所实施的规则。不幸的是,系统和应用程序管理员都可以访问控制着企业最敏感数据的关键基础架构,并且可以轻松地滥用其特权而改变规则。这种不受管理的状态势必给企业带来恶梦。
有研究发现,很多超级用户(管理员)和终端用户都在使SSH协议时留下了后门:为Linux的root用户或Windows的超级用户提供访问几乎每一台服务器、虚拟机、企业内的云服务的访问权。此后门一般是不受企业控制的一个未经许可的且不受管理的账户,当然违反了企业的策略。此外,为了图自己方便,管理员常常嵌入SSH用户密钥,以实现一次性登录的“快感”。其简单的想法是不必再键入口令或密码短语,但这会使企业遭受攻击。
理解SSH密钥
SSH密钥分为两种类型:用户密钥和主机密钥。主机密钥用于在连接的建立期间提供认证的安全通道,不妨把它比喻为电子商务网站Web服务器上的SSL证书,其目的是为了保护连接。但它又不同于网站的证书,主机密钥一般是不实施管理的。在安装好服务器时主机密钥就创建好了,并且几乎不进行更新。
目前,在用户进行身份验证和将其登录凭据(口令)暴露给服务器之前,验证到主机的连接是终端用户的责任。一般来说,用户会默认信任要访问的主机。而粗心大意的用户有可能接受一个不可信任的连接,并且造成中间人攻击窃取其口令的机会。然而,由于主机密钥存在于每个服务器的操作系统中,它本身就具有静态属性,而且又没有集中管理和自动的密钥轮换过程,所以多数SSH企业的配置一般都不将主机密钥用于用户访问。
而用户密钥则不同,它提供了不同类型的功能。这种密钥可以代替用户名和口令,而且可被用于认证一个系统的账户。
企业中的这种密钥最经常的合法使用是支持从一台机器到另一个机器的自动连接,为的是执行自动化的或安排好的任务。这些服务仍要求账户(常被称为功能账户或服务账户)登录,并且创建这种账户是为了给应用程序而非用户使用。
问题是,SSH密钥被许可后,就很难实施控制。在SSH配置中,我们可以选择允许密钥的使用或不允许。如果允许了,那么我们需要做的就是将用户密钥放在一个目标系统上,从而被人用于获得访问控制。
用于认证的SSH用户密钥的使用在企业内可能拥有合法目的。有些企业使用脚本,从而可以半自动化地将密钥分发给已知的服务器。在企业建立新的基础架构而脚本环境又对其不了解时,或是管理人员手工移动了密钥时,就会出现问题。
实现SSH用户管理的集中化
在典型的部署中,SSH依赖于在每个系统上配置的本地认证和访问控制。对于几台服务器和几个账户,这种配置是容易管理的。而随着主机和账户数量的增加,管理负担会激增,甚至难以管理或产生危险。
下面的内容提供的是一些基本指南。
首先,公司的用户账户需要集中管理,即在一个地方管理。在公司需要禁用对账户的访问时,可集中进行。你可以想像一下,在一位管理人员要离开公司时,企业不得不在十台、上百台甚至更多服务器上禁用一个账户时的情形。即使遗漏一台服务器都有可能允许非法进入企业,从而将整个基础架构暴露给攻击。
其次,借助最集中化的访问管理系统,你还可以管理哪台服务器或服务器组可被允许访问。记住,并非每个用户账户都应当要求访问每个系统,限制访问是一种基本的安全工具。
第三,为角色创建管理组,并向组中增加用户账户,然后允许基于角色的访问控制。为已经定义的组创建访问和认证要比对用户单独进行调整要更高效。
第四,对多个系统进行集中化认证的另一个好处是口令管理。只需记住一个口令要比记住大量口令要好得多。要求定期改变口令是一种很好的实践,当企业可以在一个地方管理账户时,改变口令要容易得多。
第五,会话的两端需要知道来自用户的SSH密钥和给用户的SSH密钥,以便保证通道的安全。当用户试图连接时,企业应选择一种可以自动使密钥可用的解决方案。预先将密钥嵌入到服务器上不但效率低下,而且在日后用户离开公司或变更角色时,容易忘记删除。
第六,企业的管理和支持人员已经使用SSH很长时间了。管理员应当认识到的一种行为是,用户们已经习惯于创建自己的SSH用户密钥。企业应选择一种可允许将用户生成的密钥传送到一个可管理框架并能集中控制的解决方案。
实现SSH会话访问控制的集中化
在你决定用哪些进行认证之后,就需要与默认的SSH行为对抗。
SSH工具套件允许企业以多种方式访问服务器和设备,列示如下:
1.登录到远程服务器或设备上的外壳程序;
2.在远程服务器或设备上仅执行一个命令;
3.保障文件传送的安全;
4.高效安全地备份、复制、镜像文件;
5.转发或建立网络端口的隧道;
6.全面加密的VPN;
7.转发远程主机上的X窗口;
8.通过加密的代理服务器连接去浏览Web;
9.安全地装载远程服务器上的目录,使其作为本地计算机的一个文件系统;
10.通过上文讨论的一种或几种机制自动地远程监视和管理服务器。
默认情况下,如果用户拥有一个合法的主机或用户密钥,就可以使用任何SSH出入口进入服务器。如果密钥失窃或被复制,攻击者就可以使用任何“门”访问上述机制的所有功能。
为确保SSH的正确使用,集中化的SSH控制还需要包括如下两方面:
1.对每个SSH的出入口都设置独立的访问控制,从而严格控制可作为用户正常角色的SSH功能部分,以及服务器上可用的出入口。
2.要确保所购买的SSH解决方案对每个出入口都能真正实施控制。有些产品可能仅拥有前面所讨论的三个控制,但仍可能留下七种其它方法可被攻击者利用来破坏安全性和数据。