天天看点

OSSEC文档——完整性检查

翻译:http://ossec-docs.readthedocs.io/en/latest/manual/syscheck/index.html

完整性检查

Syscheck是OSSEC内部完整性检查过程的名称。它定期运行以检查是否有任何配置的文件(或Windows上的注册表条目)发生了变化。

为什么完整性检查?

有多种类型的攻击和许多攻击向量,但是它们都有一种独特之处:它们留下痕迹,并且总是以某种方式改变系统。从修改一些文件的病毒到改变内核的内核级rootkit,系统的完整性总是有一些变化。

完整性检查是入侵检测的一个重要部分,它可以检测到系统完整性的变化。OSSEC通过查找系统和Windows注册表中关键文件的md5/sha1校验和的变化来完成这一工作。

它的工作方式是,代理每隔几个小时(用户定义)扫描系统,并将所有校验和发送到服务器。服务器存储校验和并查找对其进行修改。如果有任何变化,就会发出警报。

简要情况

它的运行频率是多少?

默认情况下每6个小时,但频率或时间/日是可配置的。

数据库存储在哪里?

在管理端的/var/ossec/queue/syscheck

它对遵从性有什么帮助?(PCI DSS等)

它帮助了11.5节(安装FIM软件)和10.5(日志文件的完整性检查)PCI。

它使用了多少CPU?

扫描的执行速度很慢,以避免使用太多的cpu/内存。

误报如何处理?

在配置或使用规则时,可以手动忽略文件。默认情况下,当文件改变了3次后,会自动忽略更改。

实时配置

ossec-syscheckd能够在Windows和现代Linux发行版中实时检查文件的完整性。Windows提供了支持,但是在Linux系统上,可能需要安装inotify包。检查inotify dev包,以及inotify-tools包。

配置项

这些配置选项可以在每个代理的ossec中指定。除了auto_ignore和 alert_new_file,它适用于管理器和本地安装。如果在管理器上指定,那么忽略选项适用于所有代理。

directories

使用该选项添加或删除要监视的目录(它们必须是逗号分隔的)。所有的文件和子目录也将被监视。没有目录的驱动器是无效的。至少是“.”应该包括(D:\.)。这应该设置在您希望监视的系统上(或者在agent.conf)。

默认: /etc,/usr/bin,/usr/sbin,/bin,/sbin

属性:

realtime: Value=yes

这将使Linux(使用inotify系统调用)和Windows系统的realtime/持续监控。

report_changes: Value=yes

报告文件的变化。这个限制是在这个时候的文本文件。

这个选项只在类unix系统上可用。

check_all: Value=yes

所有下面的检查选项一起使用。

check_sum: Value=yes

检查这些文件的md5和sha1散列会被检查。

这和使用两者是一样的check_sha1sum=”yes”和check_md5sum=”yes”

check_sha1sum: Value=yes

当只使用该文件的sha1值时,将检查它。

check_md5sum: Value=yes

文件的md5值将被检查。

check_size: Value=yes

文件的大小将会被检查。

check_owner: Value=yes

选中所选文件的所有者。

check_group: Value=yes

选中所选文件/目录的组所有者。

check_perm: Value=yes

选中选中的文件/目录的UNIX权限。在windows上,这只会检查POSIX权限。

restrict: Value=string

一个字符串,它将把检查限制为包含文件名中包含该字符串的文件。

允许:任何目录或文件名(但不是路径)

ignore

被忽略的文件或目录列表(每个元素的一个条目)。文件和目录仍然被检查,但是结果被忽略了。

默认:/etc/mtab

属性:

type:value=sregex

这是一个简单的regex模式,用于过滤出文件,因此不会生成警报。

允许:任意目录或者文件名

frequency

将被执行的频率(以秒为单位),默认值是6小时或21600秒

scan_time

运行扫描的时间(可以以21pm、8:30、12am等格式)

scan_day

每周的扫描时间(可以是sunday, saturday, monday等)。

auto_ignore

是否会忽略经常变化的文件(在第三次更改之后),默认yes

alert_new_files

是否应该对创建的新文件发出警告,默认:no

新的文件只会在一次完整的扫描中被检测到,这个选项在实时的情况下是无效的。

scan_on_start

是否应该在开始时进行第一次扫描。默认yes

windows_registry

使用这个选项来添加Windows注册表项,以监视(只Windows)。默认:HKEY_LOCAL_MACHINESoftware

registry_ignore

被忽略的注册表项的列表。

refilter_cmd

命令运行以防止预链接产生误报。

这个选项可能会对性能产生负面影响。已配置的命令将运行于检查的每个文件。

例如:

<prefilter_cmd>/usr/sbin/prelink -y</prefilter_cmd>

skip_nfs

是否应该扫描网络挂载的文件系统。在Linux和FreeBSD上工作。目前,skipnfs将中止对CIFS或NFS装载的检查。默认no

配置示例

要配置syscheck,必须提供一个文件和目录的列表。checkall选项检查md5、sha1、所有者和文件的权限。

<syscheck>
    <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/root/users.txt,/bsd,/root/db.html</directories>
</syscheck>
           

使用ignore(在Windows注册表中registry_ignore)忽略文件和目录

<syscheck>
    <ignore>/etc/random-seed</ignore>
    <ignore>/root/dir</ignore>
    <ignore type="sregex">.log$|.tmp</ignore>
</syscheck>
           

type属性可以设置为sregex,以便在忽略选项中指定正则表达式语法。

<syscheck>
    <ignore type="sregex">^/opt/application/log</ignore>
</syscheck>
           

可以使用本地规则修改对特定文件或目录的更改的严重程度:

<rule id="100345" level="12">
    <if_matched_group>syscheck</if_matched_group>
    <match>/var/www/htdocs</match>
    <description>Changes to /var/www/htdocs - Critical file!</description>
</rule>
           

在上面的示例中,创建了一个规则,以便在htdocs目录中对文件的更改进行严格的警告(12)。

实时监控

OSSEC支持在Linux上实时(持续)的文件完整性监视(支持被添加的内核版本2.6.13)和Windows系统。

配置非常简单,在<directories>中指定需要监控的目录,添加realtime="yes"即可

<syscheck>
    <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>
</syscheck>
           

实时监控不会立即开始。首先ossec-syscheckd需要扫描文件系统,并将每个子目录添加到实时队列中。这可能需要一段时间才能完成(“ossec-syscheckd: INFO: Starting real time file monitoring”)

实时只适用于目录,而不是单独的文件。

rootcheck和syscheck都在同一个线程上运行,所以当rootcheck运行时,inotify事件将会被排队,直到它结束。

报告更改

当对Linux和unix系统上的文本文件进行修改时,OSSEC支持发送diffs

配置syscheck来显示diffs是很简单的,在<directories>添加report_changes="yes"即可

<syscheck>
    <directories report_changes="yes" check_all="yes">/etc</directories>
    <directories check_all="yes">/bin,/sbin</directories>
</syscheck>
           

如果OSSEC没有使用libmagic支持编译,那么报告更改将复制指定的任何文件,例如mp3、iso、可执行文件、/chroot/dev/urandom(这将填充您的硬盘驱动器)。因此,除非使用了libmagic,否则您将非常小心地使用您启用报告更改的目录。