如何在Linux中使用AIDE监控文件的完整性

简介

AIDE(高级入qin检测环境)是文件完整性检查程序和入qin检测程序。

特性

  • 主要用途是检查文件的完整性,审计计算机上哪些文件被更改过。
  • AIDE根据从/etc/aide.conf配置文件中找到的正则表达式规则创建数据库。初始化该数据库后,就可以用来验证文件的完整性。还可以检查所有通常的文件属性是否存在不一致。它可以读取旧版本或更新版本的数据库。AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列号。
  • 这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户其实目录以及临时目录。

背景

当一个入qin者进入了你的系统并且种植了,通常会想办法来隐蔽这个(除了自身的一些隐蔽特性外,他会尽量给你检查系统的过程设置障碍),通常入qin者会修改一些文件,比如管理员通常用ps aux来查看系统进程,那么入qin者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以使用ps命令查不到正在运行的程序。如果入qin者发现管理员正在运行crontab作业,也有可能替换掉crontab程序等等。所以由此可以看出对于系统文件或是关键文件的检查是很必要的。目前就系统完整性检查的工具用的比较多的有两款:Tripwire和AIDE,前者是一款商业软件,后者是一款免费的但功能也很强大的工具。

操作步骤

安装

[[email protected] ~]# yum -y install aide

修改配置文件

/etc/aide.conf

/etc/aide.conf 默认配置文件路径
/usr/sbin/aide 默认二进制可执行文件路径
/var/lib/aide  默认数据库文件路径
/var/log/aide  默认日志文件路径

初始化默认的AIDE的库:

`which aide` --init

执行完这步操作后会在默认数据库路径/var/lib/aide下产生一个名为“aide.db.new.gz”的数据库文件,/etc/aide.conf中定义的规则都写入到了该数据库文件中。

生成检查数据库(建议初始化数据库存放到安全的地方)

mv /var/lib/aide/aide.db{.new,}.gz

因为aide默认是从aide.db.gz数据库文件中读取/etc/aide.conf文件中定义的规则来检测文件完整性的,所以需要重命名初始化的库文件。

检测

`which aide` --check

更新数据库

`which aide` --update

检测完需要更新文件数据库,否则下次检测还是从旧的文件数据库中读取规则来检测文件的完整性。同时需要重命名数据库文件

AIDE默认规则

#
#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

#haval:  haval checksum (MHASH only)
#gost:   gost checksum (MHASH only)
#crc32:  crc32 checksum (MHASH only)
#whirlpool:     whirlpool checksum (MHASH only)

AIDE规则定义及使用

规则定义格式:规则名 = 具体规则
【例】:TEST = a+m+c

规则使用格式:文件/目录 规则名
【例】:/dir1  TEST
注:如果在文件或目录前面加了“!”,则表示忽略检测

AIDE规则验证

在/etc/aide.conf文件中定义如下规则,这里的/dir1目录刚开始是空的。

TEST = a+c+m
/dir1 TES

测试1:

在该目录下创建一个新的文件file1,并写入"hello aide"
[[email protected] ~]# aide --check

AIDE, version 0.15.1

### All files match AIDE database. Looks okay!

[[email protected] ~]# echo "hello aide" > /dir1/file1
[[email protected] ~]# aide --check
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2019-11-10 19:12:57

Summary:
  Total number of files:    3
  Added files:          1
  Removed files:        0
  Changed files:        1

---------------------------------------------------
Added files:
---------------------------------------------------

added: /dir1/file1

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /dir1

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

Directory: /dir1
 Mtime    : 2019-11-10 19:12:00              , 2019-11-10 19:12:55
 Ctime    : 2019-11-10 19:12:00              , 2019-11-10 19:12:55

以上输出表示在/dir1目录下添加了file1文件,并且修改了/dir1目录的Ctime和Mtime属性

测试2:

将/dir1/file1文件的内容由"hello aide"修改为"hello world"
[[email protected] ~]# sed -i ‘/hello/c hello world‘ /dir1/file1 ; cat /dir1/file1
hello world
[[email protected] ~]# aide --check
AIDE 0.15.1 found differences between database and filesystem!!
Start timestamp: 2019-11-10 19:14:34

Summary:
  Total number of files:    3
  Added files:          1
  Removed files:        0
  Changed files:        1

---------------------------------------------------
Added files:
---------------------------------------------------

added: /dir1/file1

---------------------------------------------------
Changed files:
---------------------------------------------------

changed: /dir1

---------------------------------------------------
Detailed information about changes:
---------------------------------------------------

Directory: /dir1
 Atime    : 2019-11-10 19:12:02              , 2019-11-10 19:12:57
 Mtime    : 2019-11-10 19:12:00              , 2019-11-10 19:14:31
 Ctime    : 2019-11-10 19:12:00              , 2019-11-10 19:14:31

这时候/dir1目录的Atime,Mtime,Ctime都被修改了。

原文地址:https://blog.51cto.com/hexiaoshuai/2449268

时间: 2024-10-04 00:31:06

如何在Linux中使用AIDE监控文件的完整性的相关文章

如何在linux中解压.rar文件

在liunx下原本是不支持rar文件的,需要安装liunx下的winrar版本 步骤: 1.http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz 从这个网址下载所需的压缩包 2.将压缩包上传到linux服务上并且解压 3.使用cd切换到解压后的目录 如:cd /usr/local/rar 4.使用make命令进行编译 看见下面这些信息就是安装成功了 mkdir -p /usr/local/bin mkdir -p /usr/local/lib cp r

如何在linux中进行全局按文件类型搜索

结合find命令和grep 首先利用find命令过滤出指定类型的文件,下面的例子是查找 "*.c" 和 "*.h" 文件. </pre><pre name="code" class="plain">find . -regex ".*\.\(h\|c\)" 然后将记过 find . -regex ".*\.\(h\|c\)" | xargs grep -Inwr &

如何在Linux中使用sFTP上传或下载文件与文件夹

如何在Linux中使用sFTP上传或下载文件与文件夹 sFTP(安全文件传输程序)是一种安全的交互式文件传输程序,其工作方式与 FTP(文件传输协议)类似. 然而,sFTP 比 FTP 更安全;它通过加密 SSH 传输处理所有操作.在本文中,我们将向你展示如何使用 sFTP 上传/下载整个目录(包括其子目录和子文件). 作者:Aaron Kili来源:Linux中国|2017-03-09 14:42 移动端 收藏 分享 51CTO诚邀您9月23号和秒拍/国美/美团元专家一起聊智能CDN的优化之路

&lt;实训|第十一天&gt;学习一下linux中的进程,文件查找,文件压缩与IO重定向

[[email protected]~]#序言 在今后的工作中,运维工程师每天的例行事务就是使用free -m,top,uptime,df -h...每天都要检查一下服务器,看看是否出现异常.那么今天我们就讲解一下关于运维工程师例行事务的知识!  开班第十一天: [[email protected]~]#今天的课程大纲 查看进程,中断进程,切换进程 内存与swap分区 linux中文件查找的基本方法 linux中是如何解压缩文件的 关于I/O重定向的知识点 远程scp配合管道 详细讲解: [[e

如何在Linux中显示和设置主机名

原文链接 随着连接到网络的计算机数量越来越多,每一台计算机都需要有一个属性来区别于其它计算机.和现实世界中的人一样,计算机也有一个叫做hostname(主机名)的属性. 什么是hostname 从它的操作手册来看,hostname是用来显示系统的DNS名字以及为了显示和设置它的主机名或者NIS域名名字.所以hostname依赖于DNS(Domain Name System域名系统)或者NIS(Network Information System网络信息系统). 怎么显示hostname host

如何在linux中执行一个脚本

---恢复内容开始--- 如何在LINUX中在系统启动时自动执行一个执行脚本 如果是开机马上执行的脚本,可以将脚本写到rc.local中: 如果是用户登录后自动执行脚本,可以将脚本写到相应的用户目录下"-/.bash_profile",若脚本"-/.bash_profile"不存在,可以直接拷贝"/etc/profile"命名为"-/.bash_profile": 如果是要任一用户登录后自动执行脚本,可以将脚本写到"

如何在 Linux 中安装微软的 .NET Core SDK | Linux 中国

本分步操作指南文章解释了如何在 Linux 中安装 .NET Core SDK 以及如何使用 .NET 开发出第一个应用程序.-- Sk致谢译自 | ostechnix.com 作者 | Sk译者 | LCTT / runningwater .NET Core 是微软提供的免费.跨平台和开源的开发框架,可以构建桌面应用程序.移动端应用程序.网络应用程序.物联网应用程序和游戏应用程序等.如果你是 Windows 平台下的 dotnet 开发人员的话,使用 .NET core 可以很轻松就设置好任何

【转】如何在 Linux 中查看可用的网络接口

原文:https://www.cnblogs.com/qianpangzi/p/10563979.html 查看ubuntu系统当前的可用的网络接口.方法如下 ----------------------------------------------------------------------------------------- 在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了.当然,你可以在安装系统时进行网络接口的配置.但是,对于某些人来说,他们更偏爱在安装完系统后再进

linux中如何清空一个文件的内容

方法1: echo "" > /www.jbxue.com /xxx.log 方法2: echo "" >> /www.jbxue.com /xxx.log 方法3: 此命令能与“echo > /var/log/big.log”达到相同效果,不过,命令执行后,需要用“Ctrl + d”结束 方法4: clear > /opt/log/big.log 此命令会把big.log文件内容清空,而不删除文件 方法5: 同样的效果,用true.f