翻译: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
命令运行以防止预链接产生误报。
这个选项可能会对性能产生负面影响。已配置的命令将运行于检查的每个文件。
例如:
/usr/sbin/prelink -y
skip_nfs
是否应该扫描网络挂载的文件系统。在Linux和FreeBSD上工作。目前,skipnfs将中止对CIFS或NFS装载的检查。默认no
配置示例
要配置syscheck,必须提供一个文件和目录的列表。checkall选项检查md5、sha1、所有者和文件的权限。
/etc,/usr/bin,/usr/sbin
/root/users.txt,/bsd,/root/db.html
使用ignore(在Windows注册表中registry_ignore)忽略文件和目录
/etc/random-seed
/root/dir
.log$|.tmp
type属性可以设置为sregex,以便在忽略选项中指定正则表达式语法。
^/opt/application/log
可以使用本地规则修改对特定文件或目录的更改的严重程度:
syscheck
/var/www/htdocs
Changes to /var/www/htdocs - Critical file!
在上面的示例中,创建了一个规则,以便在htdocs目录中对文件的更改进行严格的警告(12)。
实时监控
OSSEC支持在Linux上实时(持续)的文件完整性监视(支持被添加的内核版本2.6.13)和Windows系统。
配置非常简单,在
中指定需要监控的目录,添加realtime="yes"即可
/etc,/usr/bin,/usr/sbin
/bin,/sbin
实时监控不会立即开始。首先ossec-syscheckd需要扫描文件系统,并将每个子目录添加到实时队列中。这可能需要一段时间才能完成(“ossec-syscheckd: INFO: Starting real time file monitoring”)
实时只适用于目录,而不是单独的文件。
rootcheck和syscheck都在同一个线程上运行,所以当rootcheck运行时,inotify事件将会被排队,直到它结束。
报告更改
当对Linux和unix系统上的文本文件进行修改时,OSSEC支持发送diffs
配置syscheck来显示diffs是很简单的,在添加report_changes="yes"即可
/etc
/bin,/sbin
如果OSSEC没有使用libmagic支持编译,那么报告更改将复制指定的任何文件,例如mp3、iso、可执行文件、/chroot/dev/urandom(这将填充您的硬盘驱动器)。因此,除非使用了libmagic,否则您将非常小心地使用您启用报告更改的目录。