接下来的阶段是安全扫描流程中最复杂的部分:寻找服务器上的可疑活动及rootkits.这一步非常必要,因为无论大家对日志及文件进行怎样严谨的审查,服务器安全都无法仅通过这种措施得到万全的保障.对于攻击者来说,只要获得一定资源及权限,隐藏踪迹可谓相当轻松.首先,我们要使用netstat-ntuap命令对自己服务器上的TCP及UDP端口或活动连接加以侦测.不要忘记程序名称是可以反复更改的,因此攻击者们常常会使用诸如"apache 2"这样的名称让我们误以为这是服务器工作中的正常进程.如果对正在运行的程序抱有任何疑问,立即运行lsof –p XXXX指令,这里的XXXX是可疑程序的进程号.此命令将列出所有接入此进程号的运行文件,包括已被删除的对象.
在Linux环境下,前1000个端口是为那些具有超级用户权限的应用程序所预留的.由于攻击者往往并不具备此类超级权限,这就意味着他们所制作的脚本大部分必须运行于编号为1000以上的端口.例如看到6667端口上运行着某个名为apache 2、由用户johnb发起的程序,而且与其相关联的文件(包括已被删除的)包含在/tmp目录中,则可以初步断定该程序有问题.
检查可疑的网络活动也很重要,因为几乎所有的攻击者都希望留下一道后门,这样他就可以轻松地再次连入受害者的计算机.由此,我们可以使用ps auxwf命令搜索包括网络在内的任何可疑进程.此命令将显示所有正在运行的进程以及其启动的方式,包括雇用这些进程的原始文件.
如果攻击者已然获得了超级用户权限,那么我们恐怕无法查出任何可疑活动,因为他们往往会在第一时间安装rootkit.Rootkit能够完全篡改我们的环境,变更那些重要的可执行项目如ps、netstat以及who,并加载恶意Linux内核模块.这也正是安全审计中总是不能落下诸如Rootkit Hunter这类rootkit扫描工具的原因.这种工具易用且高效,能够通过MD5校验手段可靠地确保系统中二进制文件的完整性.它还会对服务器进行扫描,以寻获那些已被加载的、内核级别的rootkit.
从外部挂载调用服务器驱动器
上面提到的各个步骤对于应付大多数Linux服务器部署中的风险都绰绰有余,包括网页、电子邮件、DNS及数据库任务.但是,如果我们的Linux服务器中存储的是有关财务或重要机密文件等敏感信息,那安保手段恐怕还要再进一步.在完整的安全审计流程中,我们可以将自己的Linux服务器硬盘接入另一台计算机,并通过手动或使用主流Linux杀毒软件的方式检查其上的全部文件.有些时候服务器发生了严重故障,那么通过外部硬盘启动计算机可能是我们找出蛛丝马迹的惟一机会.在某些情况下,攻击者在服务器上的最后操作是将其瘫痪化并加以摧毁.当前最受技术人员青睐的应对方法是利用诸如System Rescue CD之类的绿色Linux系统盘以硬盘接入的形式激活瘫痪设备.然而,这套方案具体实施起来并不简单--它会导致宕机,而我们也很可能没有额外的物理设备能够应付这一时段内的访问--但相对来说它还是较为可行的,尤其是当我们使用虚拟服务器时,存储文件在此方案下能够被直接访问.
专家总结:Linux服务器安全审计不应被视为一次性工作加以处理.相反,此类审计必须定期进行.一旦大家真正着手执行,绝对能从流程中找到一些可以通过自动化处理以简化任务操作的方法.而一旦大家的Linux服务器在安全审计中获得了令人满意的结果,我们就可以将更多的精力投入到数据存储以及提高服务正常运行时间的工作中去,进而对自己的商业运作状态充满信心.
备注:PCI标准
PCI数据安全标准及评估是由银行卡行业人士组建的代表委员会.其频繁发布的各类强制性标准及程序在保障敏感信息,例如信用卡在交易过程中的详细信息存储方面贡献良多.这些标准大多可延伸至其它行业,在合理分配网络、正确配置日志记录、有效进行渗透测试以及软件更新规划方面提供权威性参考.PCI标准及其评估流程中对渗透测试部分尤为重视.