wazuh中的规则编写以及日志分析

什么是wazuh

Wazuh是一个免费、开源和企业级的安全监控解决方案,用于威胁检测、完整性监控、事件响应和合规、也就是一套开源的完善的edr。
Wazuh是一个安全检测、可视化和安全合规开源项目。它最初是OSSEC HIDS的一个分支,后来与Elastic Stack和OpenSCAP集成在一起,发展成为一个更全面的解决方案。

Wazuh的功能有:
入侵检测
日志数据分析
完整性检查
漏洞检测
配置评估
应急响应
云、容器安全等。

如何搭建wazuh

1.首先你需要下载VMware软件
2.在github上找到在不同系统的虚拟机下的安装方法(寻找一个适合你自己的系统方式)
3.在github开源网站上下载一个OVA镜像
官方文档:
https://documentation.wazuh.com/current/index.html

实验环境

wazuh的规则

wazuh的规则,在我们wazuh-server的/var/ossec/rulerset/rules这个路径下
在这里插入图片描述
可以清楚的看到有这么多跳规则。
而用户的自定义规则是在/var/ossec/etc/rules目录下。
为什么不把用户自定义的规则放在wazuh的规则目录下,而是放在单独的自定义规则目录下呢?

这是因为wazuh的规则是在实时更新的,如果用户自定义的规则放在wazuh的规则目录下,有可能在更新的时候删除掉用户自定义的规则。
在这里插入图片描述
这是其中一条规则。
ruleid是65260,风险等级为0级。解码器为f5-bigip,description则为它的描述。
其他规则就自行查找,查找自己想要了解的规则。
解码器
说到规则,我们就要了解到解码器,它是十分重要的,以上图片我们已经了解到了解码器是什么东西。

Wazuh中的解码器就是从特定类型的事件中提取相关数据。解码分为预解码阶段和解码阶段。

预解码阶段:从已知字段(如syslog记录头中的字段)提取静态信息。这通常包括时间戳、主机名和程序名,这些值通常在所有syslog消息中都能找到,而不管哪个应用程序生成它们。
解码阶段:将从事件中提取更多的动态信息,如源IP地址、用户名、URL等等。一个或多个解码器专门用于从许多不同的应用程序和日志源中提取字段数据。

我自己的一个理解的它的工作过程:在规则触发后,我们可以看到wazuh给我们报警的实时信息而产生的日志。而解码器呢,通过这个产生的日志,根据解码器自身所编写的规则,将这个日志进行匹配,匹配一些解码器自己想要的字段,然后在将这些字段放到解码器所对应的规则上,在这个规则的一些正则表达式的匹配或者过滤下,进行产生动作,进行拦截或者进行报警。

简单来说,解码器能够从日志中提取一些关键信息,比如时间,主机ip,用户名,端口号等等

然后发送给规则,规则再进行匹配,生成告警,最后发送到可视化界面。

解码器在/var/ossec/ruleset/decoders目录下

配置代理

我这里是直接下载的一个OVA镜像,然后用软件打开就好了。

顺序:
左上角—>文件—>打开—>选择下载好的OVA文件
在这里插入图片描述
这样就装完成一台wazuh服务器了。

光有一台wazuh肯定是不够了,这样就不能体现出它强大的功能了。
我这里使用的centos7的代理。
在这里插入图片描述
填写wazuh service address就是你wazuh-server的ip地址
在这里插入图片描述
我这里是10.0.0.100。
然后直接copy下来安装路径,在centos7代理机下直接安装。
在这里插入图片描述
显示安装成功。
接着
按照给定你的步骤进行重启服务。

sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

在wazuh-server的服务机上,查看是否有这个代理。
在这里插入图片描述
可以看到是已经有的。

注:客户端的目录在/var/ossec/下。

在这里插入图片描述
可以很清楚的看到已经产生了一台代理。

wazuh中的配置了解

<global>
    <jsonout_output>yes</jsonout_output>
    
    预警记录
    <alerts_log>yes</alerts_log>
    
    不记录所有
    <logall>no</logall>
    不记录所有的json格式
    <logall_json>no</logall_json>
    邮件相关配置
    <email_notification>no</email_notification>
    <smtp_server>smtp.example.wazuh.com</smtp_server>
    <email_from>wazuh@example.wazuh.com</email_from>
    <email_to>recipient@example.wazuh.com</email_to>
    <email_maxperhour>12</email_maxperhour>
    <email_log_source>alerts.log</email_log_source>
    
    代理100分钟离线
    <agents_disconnection_time>100m</agents_disconnection_time>
    代理告警时间为实时
    <agents_disconnection_alert_time>0</agents_disconnection_alert_time>
  </global>
 <alerts>
  只要预警>=3级及以上就会记录到alert.log中
    <log_alert_level>3</log_alert_level>
    只要>=12级就会发邮件
    <email_alert_level>12</email_alert_level>
  </alerts>
 <remote>
    <connection>secure</connection>
    <port>1514</port>
    <protocol>tcp</protocol>
    <queue_size>131072</queue_size>
  </remote>

上述是客户端连接的端口。

监控root相关
  <!-- Policy monitoring -->
  <rootcheck>
  关闭为no,说明开启了
    <disabled>no</disabled>
    <check_files>yes</check_files>
    <check_trojans>yes</check_trojans>
    <check_dev>yes</check_dev>
    <check_sys>yes</check_sys>
    <check_pids>yes</check_pids>
    <check_ports>yes</check_ports>
    <check_if>yes</check_if>

    <!-- Frequency that rootcheck is executed - every 12 hours -->
    每12小时执行一次
    <frequency>43200</frequency>

监控rootkit(维持root权限的后门)
    <rootkit_files>etc/rootcheck/rootkit_files.txt</rootkit_files>
    <rootkit_trojans>etc/rootcheck/rootkit_trojans.txt</rootkit_trojans>

    <skip_nfs>yes</skip_nfs>
  </rootcheck>

可以看到有很多基线检查,比如

debian_linux操作系统的基线检查、MySQL的基线检查

rhel_linux操作系统的基线检查、Windows2012R2操作系统的基线检查等

wazuh可以检测了很多后门或者蠕虫可能存在的文件位置,基本上涵盖了百分之90的后门

ssh的暴力破解

我们使用kali进行暴力破解
在这里插入图片描述
查看wazuh的报警信息。
在这里插入图片描述
可以看到有报警日志,风险等级为5,规则的id是5710。

用户自定义规则

除了在wazuh服务器上自带的规则外,我们还可以自己编写一些我们自己想要进行防御的规则。

在wazuh的官方文档,我们可以进行清楚的了解如何编写我们想要的规则。

https://wazuh.com/blog/detecting-common-linux-persistence-techniques-with-wazuh/

SQL注入的检测

在你的代理机centos上装上apache服务器。
在这里插入图片描述
在这里插入图片描述
然后我测试,写一些注入语句。
在这里插入图片描述
我们可以看到wazuh-server出现了报警信息。
在这里插入图片描述
已经出现了告警,显示尝试SQL注入

我们怎么去防御呢?wazuh有它自身的Active-response。

wazuh有两种封堵方式:

根据告警等级来封堵,比如说当告警等级大于7时,自动进行封堵,但这也容易造成误判,范围太大
根据规则ID来封堵,当触发了某条规则时,自动进行封堵,但这范围太小,面对多条规则不便于写配置文件。

在wazuh服务器,也就是manager的配置文件里写入如下内容

当触发31103和31171这两条规则时,执行firewall-drop命令。

<active-response>
    <command>firewall-drop</command>
    <location>local</location>
    <rules_id>31103,31171</rules_id>
    <timeout>600</timeout>
</active-response>

然后我们同样进行测试。
可以发现这次进行SQL注入时直接就被进行了拦截了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值