热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了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

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


推荐阅读
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文详细探讨了 HAProxy 的基本概念及其与 LVS(Linux Virtual Server)的比较,特别是在内核空间与用户空间的工作差异。文章还深入介绍了 HAProxy 独有的数据结构——弹性二叉树,以及其在高并发场景下的表现。 ... [详细]
  • FTP作为一种传统的文件传输协议,广泛用于不同设备间的文件交换。然而,随着网络安全需求的提升及传输效率的要求,选择合适的FTP客户端变得尤为重要。本文将介绍如何利用WinSCP这款强大且安全的工具,实现两台电脑之间的文件高效传输。 ... [详细]
  • Cadence SPB 16.5 安装指南与注意事项
    本文提供了详细的 Cadence SPB 16.5 安装步骤,包括环境配置、安装过程中的关键步骤以及常见问题的解决方案。适合初次安装或遇到问题的技术人员参考。 ... [详细]
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • 本文探讨了六项Java特性,它们虽然强大,但在不当使用时可能会给应用程序带来严重问题。文章基于作者Nikita Salnikov Tarnovski多年的应用性能调优经验,提供了对这些特性的深入分析。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 对于初次购买阿里云服务器的新手用户来说,如何高效地利用服务器资源并成功部署网站是一个重要的课题。本文将详细指导您完成从购买服务器到网站上线的六个关键步骤。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 惠普战86 Pro G2:新一代商用台式机的性能与设计解析
    惠普战86 Pro G2台式机以其卓越的性能和紧凑的设计,满足了现代商务环境的需求。本文将详细介绍这款商用台式机的各项特点,包括其强大的硬件配置、精美的外观设计以及出色的稳定性和安全性。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 工作中频繁在不同Linux服务器之间切换时,频繁输入密码不仅耗时还影响效率。本文介绍如何通过设置SSH密钥认证,简化登录流程,提高工作效率。 ... [详细]
author-avatar
再度重相逢jc_866
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有