5.2 实战操作
监控时间配置
<frequency>
标签设置在多少时间为一个周期进行扫描系统需要监控的文件有没有被篡改,默认为43200秒(12小时),可以根据自己的需要设置时间周期,这也是生产环境设置最佳时间。
但是由于这边需要测试效果,使用同步功能同步agent.conf配置文件到centos代理端,修改默认时间为20秒,保存文件更改。
[root@wazuh-manager ~]# cat /var/ossec/etc/shared/default/agent.conf
<agent_config>
<syscheck>
<frequency>20</frequency>
</syscheck>
</agent_config>
验证配置文件是否有问题,显示都ok就可以重启服务。
[root@wazuh-manager ~]# /var/ossec/bin/verify-agent-conf
verify-agent-conf: Verifying [/var/ossec/etc/shared/default/agent.conf]
verify-agent-conf: OK
verify-agent-conf: Verifying [/var/ossec/etc/shared/centos/agent.conf]
verify-agent-conf: OK
verify-agent-conf: Verifying [/var/ossec/etc/shared/windows/agent.conf]
verify-agent-conf: OK
verify-agent-conf: Verifying [/var/ossec/etc/shared/ubuntu/agent.conf]
verify-agent-conf: OK
在centos代理端删除命令/usr/bin/who,20秒后manager端告警日志/var/ossec/logs/alerts/alerts.json
就会接收到如下的日志。在full_log字段可以看到who命令被删除,并且syscheck字段内的event字段是对文件进行删除操作。

重启扫描设置
<scan_on_start>
标签是当wazuh服务启动的时候是否开始进行文件完整性检测,默认值是yes,即服务启动就进行文件完整性检测。
<syscheck>
<frequency>3600</frequency>
<scan_on_start>yes</scan_on_start>
<syscheck>
使用同步功能将配置文件同步过去,监控了/etc目录(默认在ossec.conf里面配置),在/etc目录创建几个文件,但是监控的频率周期是1个小时,所以创建之后无法实时检测到。
[root@wazuh-centos-agent ~]# echo "test" >> /etc/test
[root@wazuh-centos-agent ~]# echo "test1" >> /etc/test1
将代理端服务重启之后,大概10几秒就可以看到管理端告警日志显示几个文件被添加成功。

新文件告警
<alert_new_files>
标签是当有新文件创建之后是否需要告警,默认设置是yes,即检测到新文件就会告警(生成告警到日志里面),但是仅限于管理端服务和单机模式(local),单机模式是编译安装才能选择出现,现在一般使用都是管理端和代理端通信模式二进制包安装,原则上来说,现在没有单机模式,所以单机模式就忽略。
<syscheck>
<alert_new_files>no</alert_new_files>
<syscheck>
设置为no状态,并且重启管理端服务,可以看到不断在/etc目录创建文件,右侧的告警日志并没有收到新文件告警。我将这个配置复制到代理端,发现并没有生效,验证了官方只说适用于管理端侧。

忽略监控文件
<ignore>
标签是忽略<directories>
标签的文件夹和里面的文件,一条记录忽略一个文件,可以写正则匹配,也可以写多条记录。这些目录还会进行文件完整性检测,但是不会将变化结果写进日志里面。
[root@wazuh-manager ~]# cat /var/ossec/etc/shared/default/agent.conf
<agent_config>
<syscheck>
<directories check_all="yes">/test</directories>
<ignore>/test/t1</ignore>
<ignore>/test/t2/abc2</ignore>
<ignore type="sregex">.log$|re$</ignore>
</syscheck>
</agent_config>
在配置文件设置了监控/test目录,并且忽略三条记录,分别代表目录忽略、文件忽略以及正则匹配忽略。其中/test/t1是目录忽略、/test/t2/abc2为文件忽略、ingore有正则匹配功能(type="sregex"),wazuh正则匹配分为两种:regex和sregex,前者有很多匹配关键字,而后者只有三个匹配关键字。
在配置文件可以看到两个匹配关键字:^
指定文本的开头(没出现),$
指定文本的结尾。|
指定多个文本之间的或关系,所以上面配置文件正则匹配是匹配.log(结尾)和re(结尾)的文件名字。
根据实战需求,创建了如下的目录文件内容,从配置文件的看,只有abc3文件是没有被忽略,还处于告警状态。左侧代理端往不同文件输入内容,过了一会在告警日志里面只有看到abc3文件的告警,所以ingore功能是成功生效并且有用的。
[root@wazuh-centos-agent ~]# tree /test/
/test/
├── t1
│ └── abc1
├── t2
│ └── abc2
└── t3
├── abc3
├── c1.log
└── xxxre

realtime实时监控
在现实环境下,需要立刻知道文件被增删改,wazuh对于目录监控提供了两个实时监控属性**realtime
和whodata
。**
realtime是wazuh自带,其获取的内容跟正常的syscheck获取的没有区别,只不过多了一个实时功能;而whodata是依赖Linux的audit软件,它对监控的目录写上审计的规则,由于audit是涉及到对底层之间通信的审计,所以监控的内容会非常详细。
修改agent.conf,删除监控时间,默认监控时间为12小时,对这些监控目录设置realtime属性为yes,并且重启管理端服务。
[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/agent.conf
<agent_config>
<syscheck>
<directories realtime="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories realtime="yes">/bin,/sbin,/boot</directories>
</syscheck>
</agent_config>
代理端删除which命令,管理端告警日志就显示文件被删除并且是被realtime实时模式所发现。
[root@wazuh-centos-agent ~]# rm -rf /usr/bin/which
可以看到使用realtime实时监控的模式。

linux whodata实时审计
使用whodata
属性进行实时审计的话,需要用到Linux系统audit服务,默认情况Linux系统都会安装,但是有些Linux系统会没有自带audit软件,所以需要安装audit软件。
#centos系统安装命令
yum install audit
#ubuntu系统安装命令
apt install auditd
安装audit完成之后,在管理端修改agent.conf,设置whodate
属性为yes,并且重启管理端wazuh服务。
[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/agent.conf
<agent_config>
<syscheck>
<directories whodata="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories whodata="yes">/bin,/sbin,/boot</directories>
</syscheck>
</agent_config>
在代理端服务器上面使用auditctl -l
命令可以看到wazuh会生成对监听目录的审计规则,其中-w
参数是指插入审计规则的目录;-p
审计过滤属性,有四种属性rwax,r=read,w=write,x=execute,a=attribute
,默认规则是监控写入和文件属性变更;-k
就是这条规则的名字,是wazuh用于规则匹配使用的。
[root@wazuh-centos-agent ~]# auditctl -l
-w /bin -p wa -k wazuh_fim
-w /boot -p wa -k wazuh_fim
-w /etc -p wa -k wazuh_fim
-w /sbin -p wa -k wazuh_fim
-w /usr/bin -p wa -k wazuh_fim
-w /usr/sbin -p wa -k wazuh_fim
在centos代理端删除wait
命令,可以看到它的监控模式是whodata
,也就是调用Linux audit软件进行监控。
[root@wazuh-centos-agent ~]# rm -rf /usr/bin/wait
与realtime模式不同,whodata呈现出了更多审计情况。uname_after
(文件后用户权限,与之对应的uname_before
,但是这里只是做了删除,并没有更改文件的所属用户,所以到最后还是root用户,后面的那些字段也是这样一一对应。)、mtime_after
(文件最后修改的时间)、size_after
(文件最后的大小)、path
(文件的位置)、shal_after
(文件最后检验值)、gname_after
(最后文件的用户组权限)、process_name
(调用的程序,因为我是使用rm命令进行删除的)、process_id
(进程的ID)、process_ppid
(主进程的ID)、login_user_name
(使用什么用户登录系统进行操作)。

windows whodata实时监控
本地安全策略设置审计文件系统和审计句柄操作以及配置审计对象访问。


修改Windows代理端的ossec.conf配置文件,审计C:\Windows\System32\drivers\etc
目录。
<syscheck>
<directories check_all="yes" whodata="yes">C:\Windows\System32\drivers\etc</directories>
</syscheck>
往该目录创建test.txt文件。

一段时间后,就收到了文件创建的审计日志。

文件内容更改明细
在这之前,我们知道文件变化情况,也就是被人新增文件、修改文件和删除文件的时候,wazuh是能够监控到,现在有这么一个需求,将监控文件更加细化,当我往文件添加内容或者删除内容,我希望能够监控到文件内容添加和删除。
在directories标签有一个属性是report_changes
(文件内容变更记录),默认情况是no,也就是不做文件内容变更记录,所以开启这个功能就需要将它设置为yes
状态。如下配置在agent.conf
设置两条监控文件记录,对Linux系统/etc
目录监控。
[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/agent.conf
<agent_config>
<syscheck>
<directories check_all="yes" realtime="yes" report_changes="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories check_all="yes" realtime="yes" report_changes="yes">/bin,/sbin,/boot</directories>
</syscheck>
</agent_config>
测试文件内容变化情况

在Linux系统监控了/etc
目录,所以我对test文件内容进行添加和删除,wazuh监控到这种行为,最后生成变更记录,可以看到下图diff参数记录了内容变更,其中2c2,4
是该行记录第四列开始内容更改,2c1为变更标识,<
是指删改内容,>
是指添加内容。

如果使用report_changes
参数监控文件内容变化中存在一些敏感文件,则可以使用nodiff
选项。此选项禁用计算列出文件的差异,通过警报发送文件内容更改来避免数据泄漏。
[root@wazuh-manager ~]# cat /var/ossec/etc/shared/default/agent.conf
<agent_config>
<syscheck>
<directories check_all="yes" realtime="yes" report_changes="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories check_all="yes" realtime="yes" report_changes="yes">/bin,/sbin,/boot</directories>
<nodiff>/etc/test</nodiff>
</syscheck>
</agent_config>
查看告警日志,可以看到diff
没有显示出来变更内容。

文件校验值设置
默认情况下,wazuh会记录文件变化之前和变化之后的文件校验值(MD5,SHA1,SHA256),具体属性如下表:
check_all
检测文件和目录前缀为check_*的属性
check_sum
检测文件的MD5,SHA-1和SHA-256哈希值变化情况,是check_sha1sum,check_md5sum、check_sha256sum属性的合集
check_sha1sum
检测文件SHA-1的哈希值变化情况
check_md5sum
检测文件MD5的哈希值变化情况
check_sha256sum
检测文件SHA-256的哈希值变化情况
设置只使用MD5记录变化。
[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/agent.conf
<agent_config>
<syscheck>
<directories check_all="no" check_md5sum="yes" realtime="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories check_all="no" check_md5sum="yes" realtime="yes">/bin,/sbin,/boot</directories>
</syscheck>
</agent_config>
修改/etc/test
文件,就会收到文件变更日志,其中只有MD5属性,没有SHA1和SHA256的属性值。

注册表监控
[root@wazuh-manager ~]# cat /var/ossec/etc/shared/default/agent.conf
<agent_config>
<syscheck>
<windows_registry arch="both" check_all="yes" realtime="yes">HKEY_LOCAL_MACHINE\SOFTWARE</windows_registry>
<registry_ignore type="sregex">\Enum$</registry_ignore>
</syscheck>
</agent_config>
不常用配置
<disable>
标签:判断是否启动文件完整性监控功能,默认设置为no,即默认启动文件完整性监控。
<auto_ignore>
标签:判断是否忽略在一定时间内一个文件发送变化频率的告警,这个功能仅限于wazuh管理端,默认是不忽略变化告警的。
<skip_nfs>、<skip_dev>、<skip_proc>、<skip_sys>
四个标签:是否忽略扫描nfs(网络文件系统)、dev目录、proc目录、sys目录,默认是yes,即忽略跳过扫描。
<process_priority>
标签:为syscheck运行进程设置优先级,默认值设置为10,其中-20是优先级最高,19为优先级最低。
<max_eps>
标签:设置日志事件最大的吞吐量。默认的值为100,其中范围是0到一百万的整数值,0为禁止。
<scan_time>
标签:设置一天的什么时候进行扫描检测,没有默认值,设置的值是22:00或者10pm
<scan_day>
标签:设置一周中那一天需要进行扫描,没有默认值,其中选择范围是sunday, saturday, monday等,可以选择多个,使用逗号隔开。
最后更新于
这有帮助吗?