Linux入侵检测工具

1、rootkit简介c++

rootkit是Linux平台下最多见的一种木马后门工具,它主要经过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它经过一套工具来创建后门和隐藏行迹,从而让攻击者保住权限,以使它在任什么时候候均可以使用root权限登陆到系统。安全

rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍:bash

一、文件级别rootkit服务器

文件级别的rootkit通常是经过程序漏洞或者系统漏洞进入系统后,经过修改系统的重要文件来达到隐藏本身的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。一般容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最常常被替换的,由于当访问Linux时,不管是经过本地登陆仍是远程登陆,/bin/login程序都会运行,系统将经过/bin/login来收集并核对用户的帐号和密码,而rootkit就是利用这个程序的特色,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者经过输入设定好的密码就能轻松进入系统。此时,即便系统管理员修改root密码或者清除root密码,攻击者仍是同样能经过root用户登陆系统。攻击者一般在进入Linux系统后,会进行一系列的攻击动做,最多见的是安装嗅探器收集本机或者网络中其余服务器的重要数据。在默认状况下,Linux中也有一些系统文件会监控这些工具动做,例如ifconfig命令,因此,攻击者为了不被发现,会千方百计替换其余系统文件,常见的就是ls、ps、ifconfig、du、find、netstat等。若是这些文件都被替换,那么在系统层面就很难发现rootkit已经在系统中运行了。网络

这就是文件级别的rootkit,对系统维护很大,目前最有效的防护方法是按期对系统重要文件的完整性进行检查,若是发现文件被修改或者被替换,那么极可能系统已经遭受了rootkit入侵。检查件完整性的工具不少,常见的有Tripwire、 aide等,能够经过这些工具按期检查文件系统的完整性,以检测系统是否被rootkit入侵。ssh

二、内核级别的rootkittcp

内核级rootkit是比文件级rootkit更高级的一种入侵方式,它可使攻击者得到对系统底层的彻底控制权,此时攻击者能够修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序,也就是说,当用户要运行程序A时,被入侵者修改过的内核会伪装执行A程序,而实际上却执行了程序B。ide

内核级rootkit主要依附在内核上,它并不对系统文件作任何修改,所以通常的检测工具很难检测到它的存在,这样一旦系统内核被植入rootkit,攻击者就能够对系统随心所欲而不被发现。目前对于内核级的rootkit尚未很好的防护工具,所以,作好系统安全防范就很是重要,将系统维持在最小权限内工做,只要攻击者不能获取root权限,就没法在内核中植入rootkit。工具

2、rootkit后门检测工具chkrootkit测试

chkrootkit是一个Linux系统下查找并检测rootkit后门的工具,它的官方址: http://www.chkrootkit.org/。 chkrootkit没有包含在官方的CentOS源中,所以要采起手动编译的方法来安装,不过这种安装方法也更加安全。下面简单介绍下chkrootkit的安装过程。

一、安装依赖并下载安装包  

    [root@server ~]# yum -y install gcc
    [root@server ~]# yum -y install gcc-c++
    [root@server ~]# yum -y install glibc-static

         官方下载地址:http://www.chkrootkit.org/download/

             [root@server ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz #下载软件包

二、安装 

             

    [root@server ~]# tar zxf chkrootkit.tar.gz
    [root@server ~]# cd chkrootkit-*
    [root@server ~]# make sense 

    [root@server ~]# cd ..
    [root@server ~]# cp -r chkrootkit-* /usr/local/chkrootkit
    [root@server ~]# rm -rf chkrootkit-*

三、使用  

    安装完的chkrootkit程序位于/usr/local/chkrootkit目录下,执行以下命令便可显示chkrootkit的详细用法:
    [root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit -h
    chkrootkit各个参数的含义以下所示: 

    -h显示帮助信息
    -v显示版本信息
    -l显示测试内容
    -ddebug模式,显示检测过程的相关指令程序
    -q安静模式,只显示有问题的内容
    -x高级模式,显示全部检测结果
    -r dir设置指定的目录为根目录
    -p dir1:dir2:dirN指定chkrootkit检测时使用系统命令的目录
    -n跳过NFS链接的目录

  chkrootkit的使用比较简单,直接执行chkrootkit命令便可自动开始检测系统。下面是某个系统的检测结果:

    [root@server chkrootkit]# /usr/local/chkrootkit/chkrootkit
    Checking `ifconfig'... INFECTED
    Checking `ls'... INFECTED
    Checking `login'... INFECTED
    Checking `netstat'... INFECTED
    Checking `ps'... INFECTED
    Checking `top'... INFECTED
    Checking `sshd'... not infected
    Checking `syslogd'... not tested
    Checking `tar'... not infected
    Checking `tcpd'... not infected

  从输出能够看出,此系统的ifconfig、ls、login、netstat、ps和top命令已经被感染。针对被感染rootkit的系统,最安全而有效的方法就是备份数据从新安装系统。

四、chkrootkit的缺点    

  chkrootkit在检查rootkit的过程当中使用了部分系统命令,所以,若是服务器被黑客入侵,那么依赖的系统命令可能也已经被入侵者替换,此时chkrootkit的检测结果将变得彻底不可信。为了不chkrootkit的这个问题,能够在服务器对外开放前,事先将chkrootkit使用的系统命令进行备份,在须要的时候使用备份的原始系统命令让chkrootkit对rootkit进行检测。这个过程能够经过下面的操做实现:  

    [root@server ~]# mkdir /usr/share/.commands
    [root@server ~]# cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands
    [root@server ~]# /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/
    [root@server share]# cd /usr/share/
    [root@server share]# tar zcvf commands.tar.gz .commands
    [root@server share]# rm -rf commands.tar.gz

  上面这段操做是在/usr/share/下创建了一个.commands隐藏文件,而后将chkrootkit使用的系统命令进行备份到这个目录下。为了安全起见,能够将.commands目录压缩打包,而后下载到一个安全的地方进行备份,之后若是服务器遭受入侵,就能够将这个备份上传到服务器任意路径下,而后经过chkrootkit命令的“-p”参数指定这个路径进行检测便可。

3、rootkit后门检测工具RKHunter

RKHunter是一款专业的检测系统是否感染rootkit的工具,它经过执行一系列的脚原本确认服务器是否已经感染rootkit。

一、安装RKHunter

  下载地址:https://sourceforge.net/projects/rkhunter/files/latest/download

    [root@server ~]# tar -zxf rkhunter-1.4.0.tar.gz     #版本可能不一样,命令都同样
    [root@server ~]# cd rkhunter-1.4.0
    [root@server rkhunter-1.4.0]# ./installer.sh --layout default --install

  这里采用RKHunter的默认安装方式,rkhunter命令被安装到了/usr/local/bin目录下。

二、使用rkhunter指令

  [root@server ~]#/usr/local/bin/rkhunter --help

    -c, –check必选参数,表示检测当前系统
    –configfile <file>使用特定的配置文件
    –cronjob做为cron任务按期运行
    –sk, –skip-keypress自动完成全部检测,跳过键盘输入
    –summary显示检测结果的统计信息
    –update检测更新内容
    -V, –version显示版本信息
    –versioncheck检测最新版本

  检测:

  [root@server rkhunter-1.4.0]#/usr/local/bin/rkhunter   -c

  第一部分,先进行系统命令的检查,主要是检测系统的二进制文件,由于这些文件最容易被rootkit攻击。显示OK字样表示正常,显示Warning表示有异常,须要引发注意,而显示“Not found”字样,通常无需理会;

  第二部分,主要检测常见的rootkit程序,显示“Not found”表示系统未感染此rootkit;

  第三部分,主要是一些特殊或附加的检测,例如对rootkit文件或目录检测、对恶意软件检测以及对指定的内核模块检测;

  第四部分,主要对网络、系统端口、系统启动文件、系统用户和组配置、SSH配置、文件系统等进行检测;

  第五部分,主要是对应用程序版本进行检测;

  最后一部分,这个部分实际上是上面输出的一个总结,会生成一个日志文件:/var/log/rkhunter.log

三、定时检测

在Linux终端使用rkhunter来检测,最大的好处在于每项的检测结果都有不一样的颜色显示,若是是绿色的表示没有问题,若是是红色的,那就要引发关注了。另外,在上面执行检测的过程当中,在每一个部分检测完成后,须要以Enter键来继续。若是要让程序自动运行,能够执行以下命令:

  同时,若是想让检测程序天天定时运行,那么能够在/etc/crontab中加入以下内容:
  30 09 * * * root /usr/local/bin/rkhunter –check –cronjob
  这样,rkhunter检测程序就会在天天的9:30分运行一次。

 

安全更新:
  测试是否存在漏洞,执行如下命令:

    $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
    vulnerable
    this is a test

    若是显示如上,那么,很遗憾,必须当即打上安全补丁修复,

  临时解决办法为:

    yum -y update bash

  升级bash后,执行测试:

    $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
    bash: warning: x: ignoring function definition attempt
    bash: error importing function definition for `x'
    this is a test

    若是显示如上,表示已经修补了漏洞。

相关文章
相关标签/搜索