通过 RPM 进行简单的检查通常可以发现不需要的更改。软件包管理器具有内置的验证功能,可以检查系统中所有已管理的文件是否发生了更改。要验证所有文件,请运行命令 rpm -Va。但是,此命令还会显示配置文件中的更改,您需要进行一些过滤才能检测到重要的更改。
使用 RPM 的另一个问题是,一个聪明的攻击者可以修改 rpm 本身,以隐藏任何可能由某种 rootkit 造成的更改,从而允许攻击者掩盖入侵并获得 root 权限。为了解决这个问题,您应该实施一个辅助检查,该检查也可以独立于已安装的系统运行。
在安装系统之前,请验证您的介质的校验和(请参阅 “启动”手册,第 4 章“故障排除”,第 4.1 节“检查介质”),以确保您没有使用受损的源。安装系统后,初始化 AIDE 数据库。为了确保安装过程中和安装之后一切顺利,请直接在控制台进行安装,而不要将任何网络连接到计算机。在 AIDE 创建其数据库之前,请勿让计算机无人看管或连接到任何网络。
AIDE 默认情况下未安装在 openSUSE Leap 上。要安装它,请使用 › ,或在命令行中以 root 用户身份输入 zypper install aide。
要告诉 AIDE 应检查哪些文件的哪些属性,请使用 /etc/aide.conf 配置文件。必须对其进行修改才能成为实际的配置。第一部分处理常规参数,例如 AIDE 数据库文件的位置。对于本地配置,更重要的是 自定义规则 和 目录和文件 部分。典型的规则如下所示
Binlib = p+i+n+u+g+s+b+m+c+md5+sha1
在定义变量 Binlib 后,相应的文件部分中使用相应的复选框。重要的选项包括以下内容
|
选项 |
描述 |
|---|---|
|
p |
检查所选文件或目录的文件权限。 |
|
i |
检查 inode 号。每个文件名都有一个唯一的 inode 号,不应更改。 |
|
n |
检查指向相关文件的链接数。 |
|
u |
检查文件的所有者是否已更改。 |
|
g |
检查文件的组是否已更改。 |
|
s |
检查文件大小是否已更改。 |
|
b |
检查文件使用的块数是否已更改。 |
|
m |
检查文件的修改时间是否已更改。 |
|
c |
检查文件的访问时间是否已更改。 |
|
S |
检查文件大小是否已更改。 |
|
I |
忽略文件名更改。 |
|
md5 |
检查文件的 md5 校验和是否已更改。我们建议使用 sha256 或 sha512。 |
|
sha1 |
检查文件的 sha1 (160 位) 校验和是否已更改。我们建议使用 sha256 或 sha512。 |
|
sha256 |
检查文件的 sha256 校验和是否已更改。 |
|
sha512 |
检查文件的 sha512 校验和是否已更改。 |
这是一个配置,用于使用在 Binlib 中定义的选项检查 /sbin 中的所有文件,但省略 /sbin/conf.d/ 目录
/sbin Binlib !/sbin/conf.d
要创建 AIDE 数据库,请按以下步骤操作
打开 /etc/aide.conf。
定义应使用哪些复选框检查哪些文件。有关可用复选框的完整列表,请参阅 /usr/share/doc/packages/aide/manual.html。文件选择的定义需要对正则表达式有一定的了解。保存您的修改。
要检查配置文件是否有效,请运行
# aide --config-check此命令的任何输出都表明配置无效。例如,如果您收到以下输出
# aide --config-check
35:syntax error:!
35:Error while reading configuration:!
Configuration error预计在 /etc/aide.conf 的第 36 行出现错误。错误消息包含配置文件的最后一行。
初始化 AIDE 数据库。运行命令
# aide -i将生成的数据库复制到安全的位置,例如 CD-R 或 DVD-R、远程服务器或闪存盘以供以后使用。
此步骤至关重要,因为它避免了损害您的数据库。建议使用只能写入一次的介质来防止修改数据库。切勿将数据库保留在您想要监视的计算机上。
要执行文件系统检查,请按以下步骤操作
重命名数据库
# mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db在任何配置更改之后,您始终需要重新初始化 AIDE 数据库,然后移动新生成的数据库。备份此数据库也是一个好主意。请参阅 第 20.2 节,“设置 AIDE 数据库” 以获取更多信息。
使用以下命令执行检查
# aide --check如果输出为空,则一切正常。如果 AIDE 发现更改,它将显示更改摘要,例如
# aide --check
AIDE found differences between database and file system!!
Summary:
Total number of files: 1992
Added files: 0
Removed files: 0
Changed files: 1要了解实际的更改,请使用参数 -V 增加详细程度。对于前面的示例,这可能如下所示
# aide --check -V
AIDE found differences between database and file system!!
Start timestamp: 2009-02-18 15:14:10
Summary:
Total number of files: 1992
Added files: 0
Removed files: 0
Changed files: 1
---------------------------------------------------
Changed files:
---------------------------------------------------
changed: /etc/passwd
--------------------------------------------------
Detailed information about changes:
---------------------------------------------------
File: /etc/passwd
Mtime : 2009-02-18 15:11:02 , 2009-02-18 15:11:47
Ctime : 2009-02-18 15:11:02 , 2009-02-18 15:11:47在此示例中,触摸了文件 /etc/passwd 以演示效果。
为了避免风险,建议也从受信任的源运行 AIDE 二进制文件。这排除了攻击者也修改了 aide 二进制文件以隐藏其踪迹的风险。
要完成此任务,AIDE 必须从独立于已安装系统的救援系统运行。使用 openSUSE Leap,很容易使用任意程序扩展救援系统,从而添加所需的功能。
在开始使用救援系统之前,您需要在系统中提供两个软件包。这些软件包使用与您将驱动程序更新磁盘添加到系统中的相同语法包含在内。有关用于此目的的 linuxrc 的可能性,请参阅 https://en.opensuse.net.cn/SDB:Linuxrc。以下讨论了一种完成此任务的可能方法。
提供 FTP 服务器作为第二台机器。
将软件包 aide 和 mhash 复制到 FTP 服务器目录,在本例中为 /srv/ftp/。用相应的 ARCH 和 VERSION 替换占位符
#cp DVD1/suse/ARCH/aideVERSION.ARCH.rpm /srv/ftp#cp DVD1/suse/ARCH/mhashVERSION.ARCH.rpm /srv/ftp
创建信息文件 /srv/ftp/info.txt,该文件提供救援系统所需的启动参数
dud:ftp://ftp.example.com/aideVERSION.ARCH.rpm dud:ftp://ftp.example.com/mhashVERSION.ARCH.rpm
用您在系统上使用的 FTP 域名、VERSION 和 ARCH 替换。
使用从 DVD 启动的救援系统,将以下字符串添加到启动参数
info=ftp://ftp.example.com/info.txt
此参数告诉 linuxrc 也从 info.txt 文件中读取所有信息。
救援系统启动后,AIDE 程序已准备就绪。
有关 AIDE 的信息可在以下位置获得
AIDE 的主页:https://aide.sourceforge.net
在文档化的模板配置 /etc/aide.conf 中。
在安装 aide 软件包后,/usr/share/doc/packages/aide 下的几个文件中。
在 AIDE 用户邮件列表中:https://www.ipi.fi/mailman/listinfo/aide。