当今许多Linux服务器都不是刚刚部署完毕的新机器,有专业的Linux系统管理员进行定期维护,IT技术人员往往需要为自己所使用的服务器在安全性方面负全责.如果大家的服务器遭到侵入,不仅所有的敏感信息很可能暴露无遗,服务器本身也许还会在攻击者手中造成更大规模的破坏.为了避免上述事态的发生,我们务必要确保自己的服务器配置正确并且定期更新.所以,利用下面要提到的各类工具及程序按时进行安全审计是非常必要的.
最有效的Linux安全审计方式是在服务器上运行专门为之量身打造的应用程序及服务项目.这意味着我们必须首先了解自己所要审计的运行环境,进而判断安全风险可能会隐藏在哪些部位,最终决定安全扫描应该从何处着手.举例来说,运行中的网页服务器,其最薄弱的环节无疑是Web脚本风险,这也正是黑客们最常见的攻击目标之一.更不用说网页服务器本身或者是其中的任何模块都可能存在着过期、脆弱或是不安全的配置.
要想部署一套成功的审计流程,我们还需要了解一些关于网络、编程(如Perl、PHP或者是其它服务器上支持的语言)及Linux系统的知识.这可能要求我们花费时间来学习一些自己尚不能运用自如的技术.然而,在某些情况下我们似乎没有更好的选择.举例来说,如果大家有关服务器的投诉中得知自己所在的数据中心存在如垃圾邮件或黑客攻击之类的可疑活动,那么安全审计是必不可少的.专门在企业中设立相关职位、聘请了解此类技术的专业人士当然是不错的选择,然而如果大家无法承受常设人员所带来的经济负担,也可以考虑暂时雇用一家Linux服务器管理公司,或是将业务平台整体迁移至某家负责的共享服务器供应商处.
一旦大家准备好着手实施安全审计,请按照下列步骤进行操作:
◆执行渗透测试
◆检查日志文件
◆比较及扫描文件
◆检查可疑活动及rootkits
◆从外部挂载调用服务器驱动器
下面一一说明.
渗透测试
渗透测试能够帮助大家找出存在于自己服务器上的漏洞并对设备的整体安全性进行评估.这种评估是任何形式的安全审计工作的基础.它能够就如何提高服务器安全性给出实用的结论,并为即将开展的进一步安全审计提供有关扫描侧重点的重要信息.
要执行渗透测试,我们可以使用诸如Nessus之类的漏洞扫描程序,这款工具具备能够接入几乎任何在线服务项目的端口.不过虽然Nessus是公认最流行、最先进的漏洞扫描工具,大家仍然可以尝试其它选择,例如Nmap,虽然它总体来说只是个端口扫描器,还不能完全称之为漏洞扫描器;Metasploit,功能强大但使用复杂、售价昂贵;或者是Backtrack Linux,已发布的Linux渗透测试工具大合集.无论大家最终选择哪款工具或者说如何部署自己的渗透测试工作,总会有一些漏洞被揪出来,尽管它们可能并不是情况最严重、影响最恶劣的.这种情况其实证明了当下流行的一套理论:任何暴露在公众视野内的资源或服务项目都应被视为具有潜在安全隐患,并且应对其加以密切监测.这也正是安全审计接下来要做的工作:检查日志并扫描文件.
检查日志
检查服务器日志文件能够为安全事件提供详尽的参考信息.如果大家对日志记录进行了正确配置,那么黑客的攻击及行迹其实完全可以被追踪到.而如果手头要审计的几台服务器很少使用,那么整个检查过程就相对简单,只需使用简单的Linux命令,例如Splunk.Splunk为快速搜索多套系统中的大量日志文件提供了一套直观的网页接口.它也可以在发现特定预设事件时及时通知大家,并协助阻止安全危害的发生.不过,要准确判断哪些日志文件有必要被监测实际上要求我们具备相当高的技术水平,尤其是必须了解每个服务项目本身的情况.由于应用程序与日志文件间有着极大的差异,因此我们所能给出的建议只能是尽量关注那些异常动向.
比较及扫描文件
安全审计的下一步是比较并扫描服务器上的文件.查获恶意内容绝不轻松,因为攻击代码可以很容易地被混淆、编码及加密,进而变得难以识别,连最选择的扫描工具及安全产品也使它们没辙.另外,不管大家在编程方面的经验多么丰富,藏身于成千上万其它代码中的恶意代码片段仍然极有可能成为漏网之鱼.这时大家可以求助于AIDE(高级入侵检测环境),它会跟踪那些两次安全审计之间内容发生了变化的文件.但是,我们要在之前的安全审计中至少将其运行一次,以使其创建针对当时情况的数据库镜像.另外,大家必须能够跟踪到所有发生了变化的文件.如果服务器上的文件变动程度较大,这一点恐怕很难甚至不可能实现.在这种情况下,大家可以选择直接搜索那些包含恶意内容的文件.为此,使用诸如卡巴斯基在内的通用防病毒应用程序或者有针对性地为类似Web脚本恶意代码创建内部工具都是可行的.在执行此类文件扫描工作之前,请大家务必牢记:该流程属于系统资源密集型,尽量把此类工作安排在服务器负载较轻的时段.如果必要的话,大家也可以将扫描范围设定为那些允许公开访问的文件.
检查可疑活动及rootkits