16.4.入侵检测系统(IDS)
验证系统文件和二进制文件是非常重要的,因为它能为系统管理员和安全团队提供有关系统更改的信息。用于监控系统变化的软件应用程序称为入侵检测系统(IDS)。
FreeBSD 提供了对基本 IDS 系统的原生支持,称为 mtree(8)。虽然夜间的安全邮件会通知管理员系统的变化,但这些信息是本地存储的,存在恶意用户修改这些信息以隐藏其系统更改的风险。因此,建议创建一组单独的二进制签名,并将其存储在只读的、root 拥有的目录中,或者更理想的是,存储在可移动 USB 磁盘或远程服务器上。
还建议在每次更新后运行 freebsd-update IDS。
16.4.1. 生成规格文件
内置的 mtree(8) 工具可以用来生成目录内容的规格。一个种子值或数字常量用于生成规格,并且需要用来检查规格是否发生了变化。这样可以判断文件或二进制文件是否已被修改。由于攻击者无法知道种子值,因此伪造或检查文件的校验和值几乎是不可能的。
技巧
推荐为包含二进制文件和配置文件的目录创建规格文件,以及任何包含敏感数据的目录。通常为 /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/etc 和 /usr/local/etc 创建规格文件。
以下示例生成一组 sha512 哈希值,每个系统二进制文件对应一个哈希,并将这些值保存到用户主目录中的隐藏文件 /home/user/.bin_chksum_mtree:
# mtree -s 123456789 -c -K cksum,sha512 -p /bin > /home/user/.bin_chksum_mtree输出应类似于以下内容:
mtree: /bin checksum: 3427012225警告
123456789值表示种子,应随机选择。该值应被记住,但不共享。必须将种子值和校验和输出隐藏,以防止恶意用户访问。
16.4.2. 规格文件结构
Mtree 格式是描述文件系统对象集合的文本格式。这些文件通常用于创建或验证目录层次结构。
一个 mtree 文件由一系列行组成,每行提供一个单一文件系统对象的信息。行首的空白字符总是会被忽略。
上面创建的规格文件将用于解释格式和内容:
① 创建规格文件的用户。
② 机器的主机名。
③ 目录路径。
④ 创建规格文件的日期和时间。
⑤
/set特殊命令,定义从已分析的文件中获取的一些设置。⑥ 指代解析的目录,显示它的类型、权限模式、硬链接数量和自最后修改以来的 UNIX 格式时间戳。
⑦ 指代文件并展示其大小、时间及一系列哈希值,用于验证其完整性。
16.4.3. 验证规格文件
为了验证二进制签名是否发生变化,可以将当前目录的内容与先前生成的规格进行比较,并将结果保存到文件中。
此命令需要使用生成原始规格时所使用的种子值:
如果没有对该目录中的二进制文件进行更改,则 /home/user/.bin_chksum_output 输出文件将为空。
为了模拟更改,可以使用 touch(1) 命令更改 /bin/cat 文件的日期,并再次运行验证命令:
再次运行验证命令:
然后检查输出文件的内容:
输出应类似于以下内容:
警告
这是执行命令时显示的一个示例,展示了元数据发生变化时的内容。
最后更新于