http://Linux.chinaitlab.com/server/860516.html

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

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

Linux服务器安全审计工具与流程完全指南的更多相关文章

  1. Linux audit安全审计工具

    /********************************************************************** * Linux audit安全审计工具 * 说明: * ...

  2. Linux服务器的初步配置流程

    作者: 阮一峰 日期: 2014年3月14日 开发网站的时候,常常需要自己配置Linux服务器. 本文记录配置Linux服务器的初步流程,也就是系统安装完成后,下一步要做的事情.这主要是我自己的总结和 ...

  3. Linux服务器常用工具

    一.Ubuntu18版本 服务器 1)替换源.将原有的源注释掉 vi /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ bioni ...

  4. Linux可视化服务器管理工具webmin

    webmin是一个可视化的linux服务器管理工具,可以帮助我们实现很多功能. Webmin官网: http://www.webmin.com/ 下载地址:http://prdownloads.sou ...

  5. 监控linux服务器工具nmon的使用

    做压测时,需要查看服务器中的cpu.内存变化,但由于服务器是linux环境,则需要监控linux服务器的工具,下面用到的工具是nmon. 1.安装nmon.在网上下载nmon安装包,在linux服务器 ...

  6. linux服务器部署tomcat和Nginx

    项目需要,申请了三台测试机器,好在测试机里面光秃秃的什么都没有,我就可以好好的学习一把玩一把了!接下来以图文的形式讲一下我所碰到的坑以及小小的收获吧! 一.准备工作 首先你得有一台可以玩的linux服 ...

  7. [转帖]服务器备份工具:Amanda,Bakula,Clonezilla,Rsnapshot,Mondo Rescue

    服务器备份工具:Amanda,Bakula,Clonezilla,Rsnapshot,Mondo Rescue https://ywnz.com/linuxyffq/5270.html 改天试用一下. ...

  8. 拿到新linux服务器,从配置环境到跑起项目的部署流程

    今早翻开手机看到某云一条广告Linux1 核 2 GB 1 Mbps服务器10元一个月,正巧最近在搞linux,于是下单了一台2个月20. 上班来到公司后,借空闲时间一顿研究,一波骚操作配置后,浏览器 ...

  9. linux下的ssh工具之,本地上传到linux服务器and Linux服务器文件另存为本地。非sftp工具。

    首先,当你只有一个ssh工具可以连接linux,但你有想把文件在 linux 和windows(本地)直接的切换.其实可以的: 本文参考 1.将本地的文件,放到ssh远程的linux服务器上: 首先要 ...

随机推荐

  1. Android性能优化之常见的内存泄漏

    前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary.MAT等工具来检 ...

  2. 我为什么选择go语言

    这里,我并不打算引起语言争论的口水仗,我并不是什么大牛,对语言的造诣也不深,只是想通过自己实际的经历,来说说为什么我在项目中选择go. 其他语言的经历 C++ 在接触go之前,我已经有多年的c++开发 ...

  3. Django练习——TodoList

    TodoList是django入门一个比较基础的例程,主要参考如下博客,写的非常好: simple-todo: http://www.cnblogs.com/cacique/archive/2012/ ...

  4. 72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)

    题目描述: 一个二叉搜索树,给定两个节点a,b,求最小的公共祖先 _______6______ / \ ___2__ ___8__ / \ / \ 0 _4 7 9 / \ 3 5 例如: 2,8 - ...

  5. 从模板模式到JdbcTemplate

    模板模式初探 关于模板模式,大家可以参阅 模板方法模式深度解析(一) 原始的jdbc 关于原始的jdbc,如下: import java.sql.Connection; import java.sql ...

  6. Swift基础之UITabBarController(这是在之前UITableView中直接添加的)

    这些基础内容基本已经可以搭建项目框架,剩下的就是一些优化,细节和数据请求问题,慢慢更新.... 在AppDelegate中创建方法 //创建方法执行UITabBarController func cr ...

  7. 移动App设计的十条建议

    原文链接: 10 Key Design Tips for Great Mobile Apps 原文日期: 2014年03月24日 翻译日期: 2014年04月01日 使用Android和iOS编写一个 ...

  8. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

  9. 【Android 应用开发】BluetoothDevice详解

    一. BluetoothDevice简介 1. 继承关系 public static Class BluetoothDevice extends Object implement Parcelable ...

  10. obj-c编程16:键值编码(KVC)

    我们可以借助obj-c中的键值编码(以后简称KVC,Key-Value Coding)来存取类的属性,通过指定所要访问的属性名字符串标示符,可以使用存取器方法来获取或设置类的属性.下面的例子,借助于K ...