◆李维峰
浅析配置管理与网络安全
◆李维峰
(中国飞行试验研究院 陕西 710089)
本文分析了五种不同场景的安全配置管理:安全设备、网络基础设施、普通用户计算机、服务器和PDA。这些场景中的每一个都提出了不同的配置管理挑战,当然这些问题中的任何一个对于大型站点来说都是严重的威胁。本文针对一个真实的案例进行研究,分析一个主要的ISP如何使用以数据库为中心的配置管理方案。
配置管理;安全性;数据库
计算机系统需要配置,即便最简单的家用计算机也会要求用户在第一次开机使用时填写基本的注册信息。任何系统管理员或网络管理员都清楚,完整的安全配置要复杂得多,有时甚至是需要设置很多普通人从未听说过的选项。
对所有系统管理员来说,配置管理是系统和站点安全性的重要组成部分。安全设备本身不仅需要配置,而且普通计算机使用的许多普通方面都对安全性有影响。安全配置还有另一个独特的特点:它与业务和人事政策有很强的互动。许多安全决策是管理决策的具体实例,不正确的配置可能危及业务关系或产生法律后果。安全配置还涉及对付潜在的“破坏者”,管理安全配置不仅仅是设计正确的配置和分配的问题,而且管理员必须主动尝试颠覆配置、躲避配置,或将系统驱动到配置不可预料的状态。值得注意的是,“破坏者”可以包括网站自己的员工。
这就是安全配置管理的挑战:制定和部署满足组织需求的政策。
(1)被管设备规模问题
通常,规模上的差异是定性的,而不是简单的量化。管理100台机器的配置与管理一台或两台机器不同,管理1000台仍然不同,显然这是不合理的,每个机器的拥有者都可以管理它的配置。也就是说,我们不是把1000台机器作为一个组来处理,而是我们已经知道如何解决1000个问题。这种方法至少有四个问题需要考虑:
首先是个人管理的机器往往管理不善。大多数计算机用户不是专业的系统管理员。就像许多家用计算机被错误配置一样,从安全角度和普通的正确性角度来看,在企业环境中做同样的事情也会导致很多计算机配置错误。
第二个问题是一致性。在许多环境中,企业配置是集中指定的。将配置留给个人将不可避免地导致错误配置,以软件的选择为例:每个人是否都安装了企业强制性的应用程序?它们会被及时更新吗?另外有一些安全设置由于给用户的工作带来了麻烦而遭到用户的抵制,比如:很多公司禁用USB大容量存储设备,以避免泄露敏感的企业数据,但给正常的工作带来了麻烦。
第三个问题:互动。也就是说,两个本身是正确的配置可以以危险的方式进行交互。Martin等人给出一个例子,其中正确的Java行为和正确的防火墙行为为FTP协议[1]结合起来产生一个安全漏洞[2]。
最后,这一点往往被那些不在系统管理业务的人所忽视——许多机器(以及在某些环境下,大多数机器)不是普通的台式机。服务器,虚拟机甚至许多嵌入式系统也需要配置管理。网络连接的打印机可能比普通的台式机更容易被破解,并且实际上可以运行一些相同的软件。
为了正确的操作和安全,一些形式的集中配置管理是必要的。虽然有许多方法可以做到这一点,但是必须满足一些要求:安全配置管理方案在许多方面都必须是安全的。其数据库必须受到保护,以防止无法访问或修改,与托管主机的通信必须经过身份验证,完整性保护以及经常加密;管理系统的命令必须正确认证。不同的机器有不同的角色。因此,它们需要不同的配置。普通台式机可能不需要成为Web服务器,但它可能成为一台数据库服务器或者是邮件服务器,这都取决于用户的需求。有时候安全配置会失效。在尝试更新期间,机器可能停机、补丁(特别是包含供应商提供的修补程序)可能无法安装,如果配置更改与安全性相关,则可能产生严重后果。
(2)管理工作量的问题
从上面的描述可以明显看出,管理大量机器的配置需要以下三方共同努力:人员、软件和数据。同时,配置管理系统本身需要管理层或管理系统层。
首先,在一个足够大的企业中,单一的配置管理系统是不够的。不仅不能处理负载,还需要辅助设备来实现冗余。在设备地理位置分散的情况中,数据库维护至少必须适应在地理上分布。每台新电脑的配置需求都必须输入数据库;当管理员不知道机器的存在时,这是很难做到的,更不用说它的角色和需要了。对于这个问题,在许多环境中,有必要进行手工和电子审计,以检测新机器并在配置管理系统中正确注册。最后,配置需要改变。获得了新的软件、开发了新的应用程序等,都可能会引起安全配置的改变。
不同的配置场景有不同的需求,有必要对它们进行仔细分析。
(1)安全设备
具有安全敏感配置的最明显的一类计算机是安全设备:防火墙,路由器等。这些设备不仅为企业的其他部门提供安全保障,而且还有其自身的严格安全需求。
这个环境中最难的问题是独立于配置的机制。相反,这配置应该是什么又取决于网络拓扑结构和所需的安全策略。例如,安全策略会因新软件、新业务需求和新威胁而发生变化。与公司合作的企业发生了改变就需要建立专用链接,这必须调整防火墙规则以允许访问一些资源,但不是全部资源。(新的专用链接的替代方案是虚拟专用网络连接,这些连接通常更便宜,但是却有自己的安全敏感配置需求。)
复杂的防火墙配置已知是容易出错的。即使使用完全分布式防火墙,这种情况也可能会保持不变。这样只解决了拓扑问题而不是政策问题。
验证防火墙策略是一项重要工作。尽管自动化工具[3]可以检测某些类别的错误,但这些工具无法区分合理的策略和反映实际愿望的策略。也就是说,允许端口80访问官方公司网站服务器并允许端口80访问敏感的内部网络服务器之间没有先验的区别,自动化算法无法区分这两种情况。验证拓扑变化更加困难。
最终,在地理上分散的组织中,这两个问题都更为复杂。中央系统管理员很难知道哪些外部参与者应该访问哪些服务器,更不用说当新的链接安装到远处的位置时。
安全设备本身也需要安全保护。保持这样的配置本身就是一个难题。事实上,最近的一项调查[4]报告称,ISP把访问控制列表(ACL)的管理称为“最关键”的问题。这对关于自动生成ACL的工作可能会有所帮助。
(2)基础设施
即使普通的基础设施节点(即没有特殊安全角色的节点)也具有安全敏感的配置。如果没有别的,控制这些元素的对手可能会破坏整个组织的连接。更复杂的攻击者可以通过窃听节点重新路由流量。正确的配置——即正确的密码、正确的访问控制列表、恰当的日志记录等,可以大大地防止这种攻击。
跟踪某些类型的攻击时,记录交换机上的功能非常重要。具体来说,记录MAC地址和流量可以帮助隔离拒绝服务攻击的来源并解决欺骗攻击。另一方面,这也是必须管理的配置。
即使没有恶意攻击,维护路由器配置也很困难。当路由出现问题时(这种情况并非不可能),在复杂的配置中,修复问题的技术人员通常会忘记更新主配置数据库。为此,一些站点定期轮询路由器的配置,并将其与官方授权的版本进行比较。
然而,更难的问题是安全策略的冲突。这个问题不是技术性的,因为它是政策性的:谁的政策应该占主导地位?也就是说,总体公司政策和地方需求之间存在分歧,应该怎么协调?技术机制可以识别问题,但不能解决问题。我们在这里注意到,做出的决定会影响企业网络的安全性和本地业务部门的生产力。
(3)台式机和笔记本电脑
台式机和笔记本电脑呈现出我们更为熟悉的安全配置挑战。管理员必须确保已安装正确的程序、补丁和病毒库。但是,我们之前看到的很多问题也出现在这个领域,包括政策冲突。但是,问题的大小是不同的。
第一个问题是有一个新的用户:计算机的授权用户,他把计算机视为个人专用设备,经常把它们用于非官方的目的。这常常包括忽视官方政策。因此确保台式机和笔记本电脑配置的机制必须解决员工不合作、甚至故意的不当行为。第二个问题是补丁下发的时间必须被控制。补丁通常与基本应用程序不兼容。那么正确的安全配置必须能够防止补丁的非授权安装。
(4)服务器
服务器配置在很多方面要简单得多。服务器的所有者通常是系统管理员,他们具有专业的知识并且能够理解安全配置策略。但是补丁的下发时间仍然必须控制;另外,他们还面临着不同的问题:异质性。组织内的桌面机器往往非常相似。大多数人需要的应用程序多数是一样的;但是在服务器上差别就很大。当然,Web服务器需要一个Web服务器守护进程。取决于所提供的网页的性质,它们可能还需要数据库,Perl或PHP解释器,Wiki等。对这些中的任何一个的安全配置都是棘手的;服务器的配置管理系统(或人员)必须能够处理这些情况。也就是说,它首先必须知道哪些组件适用于哪些服务器;其次,它必须知道如何将必要的安全配置与服务器特定的参数相结合。例如,Web服务器必须配置文件根目录,有关执行CGI或ASP脚本的策略、密钥和证书、访问控制策略等。在不同的服务器上情况是不同的,但它们是对于安全来说都非常重要。
(5)PDA
对于组织而言,最新的配置挑战是PDA或“智能手机”。这些设备通常是个人拥有的,但用于商业目的,如检查电子邮件。再如苹果的iPhone,最初并没有考虑公司的需求:
许多IT组织已经禁止使用iPhone,因其无法强制员工用密码保护他们的iPhone,并且如果设备被盗或丢失,他们不能从远程擦除敏感的企业数据。另外,他们认为iPhone不支持许多企业使用的软件,并且只能在一个蜂窝运营商的网络上运行。目前我们还不清楚如何管理这些设备的配置,但是当他们进入公司网络时,就必须接受相应的管理。
如前所述,第一个原则是所有的配置都应该是以数据库为中心的(如图1)。所有相关信息,无论是任何物理硬件的位置,还是管理分配的参数(例如分配给给定用户的IP地址)都应记录在数据库中。所有更改必须记录在数据库中;如果实际的物理配置不同,那么根据定义它是错误的。
图1 以数据库为中心的配置管理系统示意图
这种方法有很多优点。最突出的是正确性,另一个重要的优势是长期的成本节约。虽然构建、运行和管理这些基础架构会花费一些成本,但它可以节省运营开支。其还有一个重要的安全优势是响应能力:如果发生安全事件,新配置可以很快地推送到所有节点。例如,当许多ISP通过其路由器上的访问控制列表阻止UDP端口1434时,就能停止Slammer蠕虫的传播。
编译过程与普通编程语言相似,但是,程序本身是非常不同的。在这种环境下,每个设备类型都有一个单独的“主程序”,称为设备列表,例如路由器或交换机。另外,由于必须支持来自不同厂商的不同型号的设备,所以存在用于不同设备的配置模板。还有一些特定配置细节片段的模板,如BGP对等体,SONET上的数据包(POS)接口等。在设备列表驱动生成的过程中,它会依次查找数据库中的BGP对等体,接口详细信息等,并使用这些数据驱动合适的片段模板以生成配置。包含模板的示例代码段如下所示:
printf (POLICY "policy-statement peer-%d { ", $AS ); printf (POLICY " term ok { ");
printf (POLICY " from { ");
foreach $PREFIX (@PFX) {
printf (POLICY "route-filter $PREFIX exact; ");
}
printf (POLICY "} ");
printf (POLICY "then accept; ");
printf (POLICY "} ");
printf (POLICY "term final { ");
printf (POLICY "then reject ");
printf (POLICY "} ");
printf (POLICY " } ");
printf (PEERS " neighbor %s { ", $IP); printf (PEERS " peer-as $AS; ");
if ( $MD5 ne "NONE" ) {
printf (PEERS " authentication-key "%s"; ", $MD5);
}
printf (PEERS " import [ no-bogons dampening peer-%d ]; ",
$AS);
printf (PEERS " } ");
当这段模板代码运行在图2所示的数据库上时,它产生如下的输出:
图2 示例数据库摘录
neighbor 191.42.180.10{
peer-as 6666;
import [ no-bogons dampening peer-6666 ];
}
neighbor 191.42.180.12{
peer-as 1234;
authentication-key "fnardle";
import [ no-bogons dampening peer-1234 ];
}
neighbor 191.42.180.13{
peer-as 1243;
authentication-key "fnoofle";
import [ no-bogons dampening peer-1243 ];
}
neighbor 191.42.180.22{
peer-as 1423;
authentication-key "fnuffle";
import [ no-bogons dampening peer-1423 ];
}
除了特定于提供者的数据库以外,公共数据库(Internet Routing Registry)也被用作有关网络拓扑和前缀分配的信息来源,用以创建路由器的ACL。
许多设备具有必须容纳的操作特性。例如,当被要求完全重新加载配置时,一些设备重置一些或全部子系统;例如许多Cisco路由器重置BGP会话,即使没有任何关于BGP的改变)。因此,生成系统通常会生成一个“diff”文件,只需要将更改推送到设备。
由于推向设备的结果可能会跟预期的不一样,因此通常在改变设备配置之前几小时自动向管理员发送电子邮件,并要求最后的确认。这个过程通常是每天进行的,但是周期和时间因供应商的不同而异,并且跨越地理和拓扑结构。一个大型的ISP会倾向于在整个网络中缓慢地进行更改。
偶尔,紧急修复必须被推送到一个或多个设备。管理系统必须能够立即重启和推送配置。工程师更改数据库条目以表示所需的更改,按下按钮以生成新配置,然后检查它是否有错误,最后通知系统将其推送到设备。
尽管我们不知道有哪些ISP实际执行此操作,但基于编译的方法可以轻松使用更复杂的机制来验证和构建配置。
当设备配置完全生成时,配置的正式版本位于管理系统上,而不是设备上(图3)。这意味着设备配置不应该意外改变。为了验证这一点,可以使用一些工具,例如rancid(http://shrubbery.net/rancid/),它们用于定期从设备上获取运行配置(传统上每小时一次),将其存档,如果发现不同于以前的或规范的配置就会自动向工程师发送电子邮件。
图3 配置监控系统结构示意图
rancid只是简单的用来收集和区分来自所有设备的运行配置,它不一定与网络数据库或配置生成系统相关联。
当然,外部人员造成的配置改变是一种侵入的形式。这意味着可以使用标准的入侵检测和跟踪技术,可以跟踪未经授权更改的机器的IP地址(当然,这是假设网元或连接到它的控制台服务器做了足够的日志记录,本身就是一个重要的安全要求)。此外,授权配置与入侵者安装的配置之间的差异可以给出有价值的线索目标和动机。
成功管理安全配置需要三个要素:明确的政策;准确了解所有计算机和网络元素;适当的管理软件。可以肯定的是,所有这些要素都是其他类型的配置管理所需要的。但是,在安全设置中,故障可能会导致远远超出一个设备或系统的故障。因此,配置管理对网络安全至关重要。根据工作经验我们断言,即使在中等规模的网络环境中,也不应该完全依靠手工管理配置,这样会产生太多的错误。
[1]J.Postel and J.Reynolds,File transfer protocol, Intern et Engineering Task Force,RFC 959,Oct.1985.[Online].Av ailable:http://www.rfceditor.org/rfc/rfc959.txt.
[2]D.Martin,S. Rajagopalan, and A. D. Rubin,Blocking Java applets at the firewall,Proc. Internet Society Symposium on Network and Distributed System Security,1997.
[3]A.Mayer,A.Wool,and E. Ziskind,Fang:A firewall analysis engine,in Proc. IEEE Symposium on Security and Privacy, 2000.
[4]Worldwide Infrastructure Security Report. Arbor Networks,2007,vol.III.[Online]. Available:http://www.harborn etworks.com/report..