Linux如何基于AIDE检测文件系统完整性

一、AIDE

AIDE(Advanced Intrusion Detection Environment)是一款针对文件和目录进行完整性对比检查的程序,它被开发成Tripwire的一个替代品。

AIDE如何工作

AIDE通过构造指定文件的完整性样本库(快照),作为比对标准,当这些文件发生改动时,其对应的校验值也必然随之变化,AIDE可以识别这些变化从而提醒管理员。AIDE监控的属性变化主要包括:权限、属主、属组、文件大小、创建时间、最后修改时间、最后访问时间、增加的大小以及链接数,并能够使用SHA1、MD5等算法为每个文件生成校验码。

这款工具年纪也不小了,相对来同类工具Tripwire说,它的操作也更加简单。它需要对系统做快照,记录下HASH值,修改时间,以及管理员对文件做的预处理。这个快照可以让管理员建立一个数据库,然后存储到外部设备进行保管。
当管理员想要对系统进行一个完整性检测时,管理员会将之前构建的数据库放置一个当前系统可访问的区域,然后用AIDE将当前系统的状态和数据库进行对比,最后将检测到的当前系统的变更情况报告给管理员。另外,AIDE可以配置为定时运行,利用cron等日程调度技术,每日对系统进行检测报告。
这个系统主要用于运维安全检测,AIDE会向管理员报告系统里所有的恶意更迭情况。

AIDE的特性

  • 支持消息摘要算法:md5, sha1, rmd160, tiger, crc32, sha256, sha512, whirlpool
  • 支持文件属性:文件类型,文件权限,索引节点,UID,GID,链接名称,文件大小,块大小,链接数量,Mtime,Ctime,Atime
  • 支持Posix ACL,SELinux,XAttrs,扩展文件系统属性
  • 纯文本的配置文件,精简型的数据库
  • 强大的正则表达式,轻松筛选要监视的文件和目录
  • 支持Gzip数据库压缩
  • 独立二进制静态编译的客户端/服务器监控配置装

[root@centos7 ~]$yuminstall-y aide

安装AIDE

下载:http://sourceforge.net/projects/aide

yum install aide
vi /etc/aide.conf
database=file:@@{DBDIR}/aide.db.gz #系统镜像库位置
database_out=file:@@{DBDIR}/aide.db.new.gz #新生成系统镜像库,默认在/var/lib/aide/下
# Next decide whatdirectories/files you want in the database.
/boot  NORMAL
/bin  NORMAL
/sbin  NORMAL
/lib  NORMAL
/lib64 NORMAL
#/opt  NORMAL #注释不检查目录
/usr  NORMAL
/root  NORMAL
# These are too volatile ,排除掉个别不检查的目录
!/usr/src
!/usr/tmp
#根据需求在下面添加新的检测目录
/etc/exports NORMAL
/etc/fstab  NORMAL
/etc/passwd  NORMA

配置文件详解#定义了数据库路径的变量与日志路径的变量

@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide

#开启压缩

gzip_dbout=yes

# 将多个权限定义成规则赋给变量,便于后面引用

CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
CONTENT = sha256+ftype
PERMS = p+u+g+acl+selinux+xattrs

# 采用哪种规则对哪些文件进行监控

/boot/ CONTENT_EX
/bin/ CONTENT_EX
/sbin/ CONTENT_EX
/lib/ CONTENT_EX
/lib64/ CONTENT_EX #采用CONTENT_EX定义的规则进行监测
/opt/ CONTENT #仅对opt目录进行校验码与文件类型监测
/root/\..* PERMS #PERMS并没有hash校验值,因为/root下的数据会经常变化

# 不监控的文件

!/etc/.*~
#p:   permissions
#i:   inode:
#n:   number of links
#u:   user
#g:   group
#s:   size
#b:   block count
#m:   mtime
#a:   atime
#c:   ctime
#S:   check for growing size
#acl:      Access Control Lists
#selinux    SELinux security context
#xattrs:    Extended file attributes
#md5:  md5 checksum
#sha1:  sha1 checksum
#sha256:    sha256 checksum
#sha512:    sha512 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum

定义规则

编辑配置文件/etc/adie.conf,定义一个规则变量mon,监控/app目录下所有文件,不监控/app/saomiao.log。

[root@centos7 aide]$ vim /etc/aide.conf
 mon = p+u+g+sha512+m+a+c
 /app mon
 !/app/juli.sh

创建数据库

生成数据库文件,在配置文件中定义各文件计算各校验码放入数据库中,用于以后比对。从提示中看出生成了一个/var/lib/aide/aide.db.new.gz数据库文件,这个数据库文件为初始数据库,如果进行入侵检测将与/var/lib/aide/aide.db.gz数据库文件作比对,如果发现两个数据库不一致则提示被入侵。

[root@centos7 aide]$aide --init
AIDE, version 0.15.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.

模拟文件被入侵更改

模拟文件被修改 : 向saomiao.sh文件添加换行,促使更改校验码、Mtime、Ctime

[root@centos7 aide]$ echo >> /app/saomiao.sh

检测:AIDE的检测机制是计算出现在的数据库后与aide.db.gz比对。aide.db.gz默认又不存在,所以要将之前的创建的初始化数据库aide.db.new.gz改名为aide.db.gz。

[root@centos7 aide]$mv aide.db.new.gz aide.db.gz

入侵检测

最后使用aide -C注意是大写,将现在计算出的数据与aide.db.new.gz比对,查看数saomiao.sh文件的Mtime、CtimeSHA512被更改过

设置任务计划,定期检测

crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #每天早上08:30执行一次

也可以将信息发送到邮件:

30 08 * * * /usr/sbin/aide --check| mail –s “AIDE report“ test@163.co

二、RKHunter

RKHunter工具时专门检测系统是否遭受rootkit的一个工具,他通过自动执行一系列的脚本来全面的检测服务器是否感染rootkit。

RKHunter的功能

  • 检测易受攻击的文件;
  • 检测隐藏文件;
  • 检测重要文件的权限;
  • 检测系统端口号;

安装

[root@centos7 aide]$yum install rkhunter

检测

使用命令rkhunker -c对系统进行检测。RKHunter检测会分几部分,第一部分主要检测系统的二进制工具,因为这些工具时rootkit的首要感染目标。每检测完一部分需要Enter来确认继续。

[ ok ] 表示没有异常

[ no found ] 是没有找到此工具,不用理会

[ warning ] 如果是红色的Warnning那就需要进一步确认这些工具是否被感染或者被替换。

设置任务计划,定期检测

crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #每天早上08:30执行一次

也可以将信息发送到邮件:

30 08 * * * /usr/sbin/aide --check| mail –s “AIDE report“ test@163.co

二、RKHunter

RKHunter工具时专门检测系统是否遭受rootkit的一个工具,他通过自动执行一系列的脚本来全面的检测服务器是否感染rootkit。

RKHunter的功能

  • 检测易受攻击的文件;
  • 检测隐藏文件;
  • 检测重要文件的权限;
  • 检测系统端口号;

安装

[root@centos7 aide]$yum install rkhunter

检测

使用命令rkhunker -c对系统进行检测。RKHunter检测会分几部分,第一部分主要检测系统的二进制工具,因为这些工具时rootkit的首要感染目标。每检测完一部分需要Enter来确认继续。

[ ok ] 表示没有异常
[ no found ] 是没有找到此工具,不用理会
[ warning ] 如果是红色的Warnning那就需要进一步确认这些工具是否被感染或者被替换。

如果想让程序自动检测而不是每检测完一部分就让用户确认,可以使用

rkhunter --check --skip-keypress

同时如果要想达到每周或者每月自动检测就可以将他加入到计划任务中自动执行

crontab -e
1 10 7 * * * root /usr/bin/rkhunter --check --cronjob

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 安全检测Unix和Linux服务器安全设置入门精讲

    其实每一个黑客都有自己独到的方法.笔者对于入侵网站服务器的资料收集了很多,但是因为实际情况的不同,往往造成许多方法的失效:由此可见,每一个网站的情况都不同,需要入侵者区分对待.假设深圳的线路比北京的线路要好的多,从而给了词典穷举很大的方便,深圳用户就可以依靠这个优势在线攻击口令,作为北京的用户就需要优先考虑其它办法了.针对这么多的入侵手段,笔者参考H ackalot先生这位黑客界名人的一篇文章给大家介绍一下入侵网站的基本步骤.   分析一部分的主页被黑的事例可以发现使用入侵者最热衷于入侵Web服

  • linux 检测远程端口是否打开方法总结

    检测远程端口是否打开 常用telnet 110.101.101.101 80方式测试远程主机端口是否打开. 除此之外还可以使用: 方法1.nmap ip -p port 测试端口 nmap ip 显示全部打开的端口 根据显示close/open确定端口是否打开. 方法2. nc -v host port  端口未打开返回状态为非0 方法3. nc -v host port 端口未打开返回状态为非0 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • shell脚本实现linux系统文件完整性检测

    今天发现个可以检测系统文件完整性的shell脚本,自己试了下还可以吧,介绍给大家. 系统:centos 5.x 脚本内容: 复制代码 代码如下: cat my_filecheck.sh #!/bin/bash # # 变量首先声明才能使用 shopt -s -o nounset   # 声明   # 建立日期   Date=$(date +'%Y%m%d%H%M%S')   # 加入审核的目录         #   Dirs="/bin /sbin /usr/bin /usr/sbin /li

  • Linux Shell脚本实现检测tomcat

    Linux Shell脚本检测tomcat并自动重启 后台运行命令 sh xxx.sh & 查看后台任务:jobs 召唤到前台:fg jobs编号 可以删掉while循环的代码放到crontab里面定时执行,可以将脚本直接后台运行, #!/bin/bash while [ true ] do url="http://www.jb51.net/"; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk

  • 用Python制作检测Linux运行信息的工具的教程

    在这篇文章里,我们将会探索如何使用Python语言作为一个工具来检测Linux系统各种运行信息.让我们一起来学习吧. 哪种Python? 当我提到Python时,我一般是指CPython 2(准确来说是2.7).当同样的代码不能在CPython3(3.3)运行时,我们明确地把它指出并给出替代的代码,解释它们之间的不同点.请确保你已经安装了CPython,在终端输入python或者python3你会看到Python提示符出现在你的终端里. 请注意,所有的脚本程序都会以#!/usr/bin/env

  • Linux内存泄漏检测shell脚本

    本文实例为大家分享了Linux内存泄漏检测的shell脚本,供大家参考,具体内容如下 #!/bin/sh if [ $# -ne 1 ]; then echo "Usage: `basename $0` process_name" exit 1 fi APPNAME=$1 PROC="`ps -ef | grep "$APPNAME" | grep -v "grep" | grep -v "awk" | grep -

  • Linux 检测服务器是否连接着网络

    Linux 检测服务器是否连接着网络 摘要: 每隔5分钟检测一次服务器是否连接着网络,如果三次检测都没有网络?则自动关机! 主要使用场景: 由于自己有一台服务器放在偏远的老家,有可能会遇到停电导致断网的问题,并且停电后UPS使用时间也有限制, 因此设计此脚本为了解决停电的时候服务器突然断电引起的各种问题,当停电后网络也就不通了,此时需要自动关闭服务器. 当然,来电后需要手动启动服务器!!! #!/bin/bash # 检测服务器是否连接着网络,如果网络不通 则 3次后 关机 # crontab

  • linux的shell命令检测某个java程序是否执行

    linux下的shell命令: ps -ef |grep java|grep " " " "l里面写上你需要grep查找的java程序名字应该就可以了

  • Linux如何基于AIDE检测文件系统完整性

    一.AIDE AIDE(Advanced Intrusion Detection Environment)是一款针对文件和目录进行完整性对比检查的程序,它被开发成Tripwire的一个替代品. AIDE如何工作 AIDE通过构造指定文件的完整性样本库(快照),作为比对标准,当这些文件发生改动时,其对应的校验值也必然随之变化,AIDE可以识别这些变化从而提醒管理员.AIDE监控的属性变化主要包括:权限.属主.属组.文件大小.创建时间.最后修改时间.最后访问时间.增加的大小以及链接数,并能够使用SH

  • Linux环境中使用Ext3文件系统

    Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统.这在关键行业的应用是一个致命的弱 点.本文向各位介绍Linux下使用ext3日志文件系统应用. Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠.它完全兼容ext2文件系统.用户可以平滑地过渡到一个日志功能健全的文件系统中来.这实际上了也是ext3

  • Linux环境下使用JFS文件系统

    JFS是IBM公司为linux系统开发的一个日志文件系统.从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统. JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的.JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态.JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏. 一.JFS文件系统特点 1.存储空间更大 JFS 支持的最小文件系统是 16M 字节.最大文件系统的大小为 512 万亿字节(TB

  • linux下基于C语言的信号编程实例

    本文实例讲述了linux下基于C语言的信号编程方法.分享给大家供大家参考.具体如下: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> void sig_handler(int sig_no, siginfo_t *info, void *ctext){ printf("receive si

  • Chkdsk 基于所用的文件系统,创建和显示磁盘的状态报告

    Chkdsk 基于所用的文件系统,创建和显示磁盘的状态报告.Chkdsk 还会列出并纠正磁盘上的错误.如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态. 语法 chkdsk [volume:][[Path] FileName] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:size]] 参数 volume:  指定驱动器号(冒号分隔).装入点或卷名.  [Path} FileName]  指定需要 chkdsk 检查碎片整理的文件或文件集的位置和名称.使用通配

  • js学习总结_基于数据类型检测的四种方式(必看)

    1.typeof 用来检测数据类型的运算符 console.log(typeof 12)//Number 使用typeof检测数据类型,首先返回的都是字符串 ,其次字符串中包含了对应的数据类型 例如:"number"."string"."boolean"."undefined"."function"."object" console.log(typeof typeof function(

  • Python基于pillow判断图片完整性的方法

    本文实例讲述了Python基于pillow判断图片完整性的方法.分享给大家供大家参考,具体如下: 1.安装第三方库. pip install pillow 2.函数示例. #encoding=utf-8 #author: walker #date: 2016-07-26 #summary: 判断图片的有效性 import io from PIL import Image #判断文件是否为有效(完整)的图片 #输入参数为文件路径 def IsValidImage(pathfile): bValid

  • python基于opencv检测程序运行效率

    这篇文章主要介绍了python基于opencv检测程序运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 涉及到的函数主要有两个: 1.cv2.getTickCount()函数返回从参考点到这个函数被执行的时钟数.所以当你在一个函数前后都调用它的话,你就会得到这个函数的执行时间(时钟数). 2.cv2.getTickFrequency()返回时钟频率,或者说每秒钟的时钟数. 所以你可以按照以下的方式得到一个函数运行了多少秒: # -*- c

  • linux服务器安装SonarQube代码检测工具的详细步骤

    目录 背景 注意(重点) 步骤 1.安装jdk 2.安装配置mysql5.7 3.安装SonarQube 4.配置数据库和SonarQube 5.安装中文语音包 背景 最近公司技术大佬同事告知,sonarlint可以用来检测代码是否有问题,并且能将其集成到Jenkins里面.本着好奇的心思来研究了一下,花了点时间将其在linux服务器上搭建完毕,网上可以查到的文章和教程资料并不少,但是很多写的不是很完美,会很容易踩坑,所以这里把本次成功的步骤记录下,并且把安装前注意的点接下来介绍下. 注意(重点

  • Linux环境下的ReiserFS文件系统

    ReiserFS是一个非常优秀的文件系统.也是最早用于Linux的日志文件系统之一. ReiserFS的开发者非常有魄力,整个文件系统完全是从头设计的.目前,ReiserFS可轻松管理上百G的文件系统,这在企业级应用中非常重要. 一.ReiserFS的特点 1.先进的日志机制 ReiserFS有先进的日志(Journaling/logging)功能 机制.日志机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘.文件与数据的安全性有了很大提高. 2.高效的磁盘空间利用 Reiserfs对一些

随机推荐