Nagios系统监控实践(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.4 安全

黑客可以通过Rootkit轻而易举地使大型监控系统成为大型攻击平台,所以在安全方面的考虑刻不容缓。

因为监控系统往往需要被监控主机的远程执行权限,所以监控系统很容易引入后门和漏洞到其他安全系统中。更糟糕的是,因为这些程序都是以合法程序的身份安装到系统上的,所以这些漏洞可能会被渗透测试、审计工具所忽略。首先,也是最重要的事情,就是当构建安全的监控系统时,需要了解远程执行是怎样完成的。

历史上,商业监控工具包含的Agent(代理)程序不仅体积巨大而且功能单一,即使使用基本功能,也要在每一台客户端上安装并启用。这些Agent往往包含远程Shell功能或者专有的字节码解释器,监控主机可以通过Agent的这些功能在客户端上执行任何操作。这种实现方式很难坚持基本的安全原则,比如说特权。任何人,只要通过监控平台,就能对它所监控的区域进行完全的控制。

相比之下,Nagios遵从UNIX哲学:“只做一件事,并把它做好”。它并没什么功能,只是一项最优化调度和通知框架的任务而已。Nagios本身并不具备在其他电脑上运行程序的能力,而且完全不提供Agent程序。这些功能都是以独立的、专用的程序存在,并在Nagios中配置后才可以使用。通过将远程执行功能“外包”给外部程序,Nagios维持着“默认关闭”的策略,而且不会尝试“重复发明轮子”,比如加密协议,虽然关键而且重要,但是很难实现。使用Nagios,很容易限制监控服务器对客户端的访问,但是部分缺少安全实践的管理员依然会导致不安全的系统产生。结果是,安全始终取决于你。

监控系统应当按需访问远程主机,并仅在远程主机上执行所需的指定插件。由于Rexec及类似的插件会在远程主机上执行任意字符串,所以应当避免使用。理想情况下,每个需要远程执行的插件应当都是专用程序,即仅有监控平台才有权访问并执行它们。有些非常有用的插件在一个二进制文件中提供了大量的功能,比如之前提到过的Check_MK。NSClIENT++是专为Windows系统设计的Agent,可以查询远程系统的性能计数器。多用途的超级插件因为太引人注目而在很多环境中都不适应,但是至少可以利用其认证的功能,从而确保访问权限尽可能小。

远程执行插件与监控系统之间的通信通道应当加密。避免使用非标准和专利的加密协议  商业监控应用往往会犯此类错误。 。加密协议是出了名的难以实现,更不用说再去发明了。Nagios上流行的远程执行插件使用行业标准OpenSSL库,有比你我更聪明的同行在持续地评审它。即使没有任何敏感信息传输,实现也应当包含加密通道,以供开始的启动阶段使用。如果系统构建优秀,它将会快速成长,这时再加入加密通道就相当困难了,还不如在开始时一同考虑并构建。

简单网络管理协议(Simple Network Management Protocol,SNMP),作为系统监控的中流砥柱,基本上现在每一台计算设备都支持,但不应该在外网使用,对于私人来说,更应该避免使用该协议。因为大多数用途包含通用的工作站和服务器,都具有比SNMP更好的替代品。如果一定要在网络设备上使用SNMP协议,那么尝试使用包含加密的SNMPv3协议。无论使用哪个版本,一定要确保SNMP协议的配置是只读方式而且只接受指定主机的访问。无论因为什么原因,系统管理员一般不习惯更改SNMP团体的字符串名称,这个简单的部署缺陷,是SNMP协议臭名远扬的绝大部分原因。更多关于SNMP的信息,请参见第6章。

多数企业中的网络都进行了物理隔离,也有可能使用其他方式禁止其他网络访问。在这种情况下,对隔离子网中服务的监控只有在监控服务器上添加网卡(Network Interface Card,NIC)一种方法,通过这张网卡来连接隔离的网段,或者设置监控服务器的VLAN能够访问该网段并将其接入到主干交换机端口上。隔离的网段往往因为某些特殊理由进行隔离,所以应使监控系统的访问权限最小化,监控系统应当配置严格的本地防火墙规则,阻止其他网段将流量从一个子网转发至其他子网。在这种情况下,应当花时间考虑为禁止访问的网络构建分离的监控系统。

当必须要在防火墙上开发一个端口,以便监控服务器能够检测不同网段中主机的状态时,考虑使用远程执行以最小化所需开发端口的数量。比如,图1-3中的Nagios服务器必须监控服务器1上的Web服务器和SMTP守护进程。可以直接在防火墙上开放三个端口,也可以通过在服务器1上远程执行一个服务检测插件,从而检测Apache和Qmail守护进程的运行状态。使用后一种方式,可以只开放1个而非3个端口,减少了恶意团体滥用端口的机会。而诸如Check_MK的超级插件做得更棒,它可以通过单一端口的单一连接,实现大量服务的检测。

优秀的监控系统除了能够完成本职工作外,还不能增加新的风险或缺陷以避免被入侵者利用,只要实施者致力于构建安全的监控系统,Nagios将使其构建变得简单。

图1-3 正确地使用远程执行功能,可以通过最小化防火墙ACL(访问控制列表)来实现安全的加强

[1] 商业监控应用往往会犯此类错误。