热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux服务器安全审计工具与流程

当今许多Linux服务器都不是刚刚部署完毕的新机器,有专业的Linux系统管理员进行定期维护,IT技术人员往往需要为自己所使用的服务器在安全性方面负全责.如果大家的服务器遭到侵入,不仅所有的敏感信息很可能暴露无遗,服务器本身也许还会在攻击者手中造成更大规模

  当今许多Linux服务器都不是刚刚部署完毕的新机器,有专业的Linux系统管理员进行定期维护,IT技术人员往往需要为自己所使用的服务器在安全性方面负全责.如果大家的服务器遭到侵入,不仅所有的敏感信息很可能暴露无遗,服务器本身也许还会在攻击者手中造成更大规模的破坏.为了避免上述事态的发生,我们务必要确保自己的服务器配置正确并且定期更新.所以,利用下面要提到的各类工具及程序按时进行安全审计是非常必要的.

  最有效的Linux安全审计方式是在服务器上运行专门为之量身打造的应用程序及服务项目.这意味着我们必须首先了解自己所要审计的运行环境,进而判断安全风险可能会隐藏在哪些部位,最终决定安全扫描应该从何处着手.举例来说,运行中的网页服务器,其最薄弱的环节无疑是Web脚本风险,这也正是黑客们最常见的攻击目标之一.更不用说网页服务器本身或者是其中的任何模块都可能存在着过期、脆弱或是不安全的配置.

  要想部署一套成功的审计流程,我们还需要了解一些关于网络、编程(如Perl、PHP或者是其它服务器上支持的语言)及Linux系统的知识.这可能要求我们花费时间来学习一些自己尚不能运用自如的技术.然而,在某些情况下我们似乎没有更好的选择.举例来说,如果大家有关服务器的投诉中得知自己所在的数据中心存在如垃圾邮件或黑客攻击之类的可疑活动,那么安全审计是必不可少的.专门在企业中设立相关职位、聘请了解此类技术的专业人士当然是不错的选择,然而如果大家无法承受常设人员所带来的经济负担,也可以考虑暂时雇用一家Linux服务器管理公司,或是将业务平台整体迁移至某家负责的共享服务器供应商处.

  一旦大家准备好着手实施安全审计,请按照下列步骤进行操作:

  ◆执行渗透测试

  ◆检查日志文件

  ◆比较及扫描文件

  ◆检查可疑活动及rootkits

  ◆从外部挂载调用服务器驱动器

  下面一一说明.

  渗透测试

  渗透测试能够帮助大家找出存在于自己服务器上的漏洞并对设备的整体安全性进行评估.这种评估是任何形式的安全审计工作的基础.它能够就如何提高服务器安全性给出实用的结论,并为即将开展的进一步安全审计提供有关扫描侧重点的重要信息.

  要执行渗透测试,我们可以使用诸如Nessus之类的漏洞扫描程序,这款工具具备能够接入几乎任何在线服务项目的端口.不过虽然Nessus是公认最流行、最先进的漏洞扫描工具,大家仍然可以尝试其它选择,例如Nmap,虽然它总体来说只是个端口扫描器,还不能完全称之为漏洞扫描器;Metasploit,功能强大但使用复杂、售价昂贵;或者是Backtrack Linux,已发布的Linux渗透测试工具大合集.无论大家最终选择哪款工具或者说如何部署自己的渗透测试工作,总会有一些漏洞被揪出来,尽管它们可能并不是情况最严重、影响最恶劣的.这种情况其实证明了当下流行的一套理论:任何暴露在公众视野内的资源或服务项目都应被视为具有潜在安全隐患,并且应对其加以密切监测.这也正是安全审计接下来要做的工作:检查日志并扫描文件.

  检查日志

  检查服务器日志文件能够为安全事件提供详尽的参考信息.如果大家对日志记录进行了正确配置,那么黑客的攻击及行迹其实完全可以被追踪到.而如果手头要审计的几台服务器很少使用,那么整个检查过程就相对简单,只需使用简单的Linux命令,例如Splunk.Splunk为快速搜索多套系统中的大量日志文件提供了一套直观的网页接口.它也可以在发现特定预设事件时及时通知大家,并协助阻止安全危害的发生.www.linuxidc.com不过,要准确判断哪些日志文件有必要被监测实际上要求我们具备相当高的技术水平,尤其是必须了解每个服务项目本身的情况.由于应用程序与日志文件间有着极大的差异,因此我们所能给出的建议只能是尽量关注那些异常动向.

  比较及扫描文件

  安全审计的下一步是比较并扫描服务器上的文件.查获恶意内容绝不轻松,因为攻击代码可以很容易地被混淆、编码及加密,进而变得难以识别,连最选择的扫描工具及安全产品也使它们没辙.另外,不管大家在编程方面的经验多么丰富,藏身于成千上万其它代码中的恶意代码片段仍然极有可能成为漏网之鱼.这时大家可以求助于AIDE(高级入侵检测环境),它会跟踪那些两次安全审计之间内容发生了变化的文件.但是,我们要在之前的安全审计中至少将其运行一次,以使其创建针对当时情况的数据库镜像.另外,大家必须能够跟踪到所有发生了变化的文件.如果服务器上的文件变动程度较大,这一点恐怕很难甚至不可能实现.在这种情况下,大家可以选择直接搜索那些包含恶意内容的文件.为此,使用诸如卡巴斯基在内的通用防病毒应用程序或者有针对性地为类似Web脚本恶意代码创建内部工具都是可行的.在执行此类文件扫描工作之前,请大家务必牢记:该流程属于系统资源密集型,尽量把此类工作安排在服务器负载较轻的时段.如果必要的话,大家也可以将扫描范围设定为那些允许公开访问的文件.

  检查可疑活动及rootkits

  接下来的阶段是安全扫描流程中最复杂的部分:寻找服务器上的可疑活动及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标准及其评估流程中对渗透测试部分尤为重视.


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
author-avatar
小伙砸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有