一 安装
官方网站:Wazuh - Open Source XDR. Open Source SIEM.
Installing the Wazuh indexer step by step - Wazuh indexer
1 添加仓库
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
2 安装wazuh
yum -y install wazuh-manager
二 Wazuh的简介
Wazuh是HIDS
1 Wazuh的启动
#启动服务 后台启动
systemctl start wazuh-manager
# 前端启动 进入bin目录
bin/wazuh-control start
# 观察启动的结果
bin/wazuh-contrl status
2 目录结构
Wazuh安装成功之后, 存储在 /var/ossec
目录下 :
drwxr-x---. 3 root wazuh 17 7月 9 12:25 active-response # wazuh主动相应脚本的存储路径
drwxr-x---. 2 root wazuh 286 7月 9 12:25 agentless # 不设置代理
drwxr-x---. 4 root wazuh 42 7月 9 12:25 api
drwxr-x---. 5 root wazuh 44 7月 9 12:25 backup
drwxr-x---. 2 root wazuh 4096 7月 9 12:25 bin # wazuh的执行文件的目录存储
drwxrwx---. 7 wazuh wazuh 242 7月 9 12:26 etc # 配置文件的目录 核心配置文件(ossec.conf) 解码器 和 规则问你件
drwxr-x---. 5 root wazuh 48 7月 9 12:26 framework
drwxr-x---. 2 root wazuh 183 7月 9 12:26 integrations
drwxr-x---. 2 root wazuh 4096 7月 9 12:26 lib
drwxrwx---. 8 wazuh wazuh 143 7月 9 12:26 logs #wazuh的日志文件 两种格式 json 、log(文本格式)
drwxr-x---. 18 root wazuh 231 7月 9 12:26 queue
drwxr-x---. 5 root wazuh 46 7月 9 12:26 ruleset # 自定义解码器和规则文件的存储位置
drwxr-x---. 2 wazuh wazuh 6 6月 6 16:32 stats
dr--r-----. 2 root wazuh 37 7月 9 12:26 templates
drwxrwx--T. 2 root wazuh 38 7月 9 12:26 tmp
drwxr-x---. 9 root wazuh 106 7月 9 12:26 var
drwxr-x---. 6 root wazuh 93 7月 9 12:26 wodles
重点操作的目录 :
etc
、logs
、ruleset
核心配置文件
/var/ossec/etc/ossec.conf
日志文件
/var/ossec/logs/alerts/alerts.json # 通常json格式的预警不适合用于直接查看,而主要是用于分析和展示
/var/ossec/logs/alerts/alerts.log # 而.log的预警信息则更多适用于直接查看,而非分析和展示
规则库
/var/ossec/ruleset/rules
解码器
/var/ossec/ruleset/decoders
三 操作系统登录预警
1 演示
查看wazuh的日志文件
tail -f /var/ossec/logs/alerts/alerts.log
SSH登录
C:\Users\chenyun>ssh root@192.168.6.74
(1)SSH登录失败
尝试通过SSH以错误的密码远程登录wazuh所在主机,测试Wazuh是否会预警。利用 tail -f alerts.log 查看日志
通过日志输出可以看到,SSH登录失败触发了ID为:5716的日志,日志级别为5级(在Wazuh中,级别越高,表示越严重)
** Alert 1721389462.562648: - syslog,sshd,authentication_failed,gdpr_IV_35.7.d,gdpr_IV_32.2,gpg13_7.1,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,pci_dss_10.2.4,pci_dss_10.2.5,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,
2024 Jul 19 19:44:22 localhost->/var/log/secure
Rule: 5760 (level 5) -> 'sshd: authentication failed.'
Src IP: 192.168.5.5
Src Port: 57773
User: root
Jul 19 19:43:56 localhost sshd[2869]: Failed password for root from 192.168.5.5 port 57773 ssh2
(2)SSH连续登录失败
当SSH连续登录失败时,便触发了ID为2502,级别为10的新规则。
** Alert 1721391517.3198: - syslog,access_control,authentication_failed,pci_dss_10.2.4,pci_dss_10.2.5,gpg13_7.8,gdpr_IV_35.7.d,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_AU.14,nist_800_53_AC.7,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,
2024 Jul 19 20:18:37 localhost->/var/log/secure
Rule: 2502 (level 10) -> 'syslog: User missed the password more than one time'
Src IP: 192.168.5.5
User: root
Jul 19 20:18:35 localhost sshd[3921]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.5.5 user=root
2 规则解读
1 Wazuh的核心配置文件
/var/ossec/etc/ossec.conf
因为我们在登录主机的时候,主机会把所有的登录信息记录在一个日志文件中, /var/log/secure
<ossec_config>
<localfile>
<log_format>audit</log_format>
<location>/var/log/audit/audit.log</location>
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/var/ossec/logs/active-responses.log</location>
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/var/log/messages</location>
</localfile>
<!--主机的系统登录操作日-->
<localfile>
<log_format>syslog</log_format>
<location>/var/log/secure</location>
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/var/log/maillog</location>
</localfile>
</ossec_config>
2 解码器
/var/ossec/ruleset/decoders/0310-ssh_decoders.xml
<!--
name="sshd" : 作用有两个
1.给其他的解码器使用
2.可以给规则文件使用
-->
<decoder name="sshd">
<!--
program_name : 匹配日志内容 使用的正则表达式
^sshd :这个一个正则 以 sshd 开始的
-->
<program_name>^sshd</program_name>
</decoder>
<decoder name="sshd-success">
<!-- 根据解码器名字 使用父解码器 -->
<parent>sshd</parent>
<!--
prematch :预匹配 以Accepted 开始
-->
<prematch>^Accepted</prematch>
<!--
正则的匹配
offset="after_prematch" :和前面的与匹配呼应的 他的是有两个after_prematch、before_prematch
^ \S+ for (\S+) from (\S+) port (\S+)
()代表数据提取
password for root from 192.168.10.1 port 1066 ssh2
-->
<regex offset="after_prematch">^ \S+ for (\S+) from (\S+) port (\S+)</regex>
<!--
order : 提取的数据 按照正则中的 ()的顺序对应起来
-->
<order>user, srcip, srcport</order>
<fts>name, user, location</fts>
</decoder>
<decoder name="ssh-failed">
<!--
sshd[8267]: Failed password for illegal user test from 62.67.45.4 port 39141 ssh2
-->
<parent>sshd</parent>
<prematch>^Failed \S+ </prematch>
<regex offset="after_prematch">^for (\S+) from (\S+) port (\d+)</regex>
<order>user, srcip, srcport</order>
</decoder>
3 规则文件
/var/ossec/ruleset/rules/0095-sshd_rules.xml
<!--
- Copyright (C) 2015, Wazuh Inc.
-->
<!--
每一个规则文件 都需要设计好规则ID ,方便以后维护
SSH rules ID: 5700 - 5764
-->
<!--
name : 定义的使用的解码器的名字
-->
<group name="syslog,sshd,">
<!--
id : 定义规则ID编号
level :定义攻击行为的级别
noalert : 1 ,不发出警告
-->
<rule id="5700" level="0" noalert="1">
<decoded_as>sshd</decoded_as>
<description>SSHD messages grouped.</description>
</rule>
<!--
ID : 定义规则ID编号
level :定义攻击行为的级别 8
-->
<rule id="5701" level="8">
<!--
if_sid : 5700 在满足5700规则时 5701规则才会起作用
-->
<if_sid>5700</if_sid>
<match>Bad protocol version identification</match>
<description>sshd: Possible attack on the ssh server (or version gathering).</description>
<mitre>
<id>T1190</id>
</mitre>
<group>gdpr_IV_35.7.d,gpg13_4.12,nist_800_53_SI.4,pci_dss_11.4,recon,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
</rule>
<rule id="5702" level="5">
<if_sid>5700</if_sid>
<match>^reverse mapping</match>
<regex>failed - POSSIBLE BREAK</regex>
<description>sshd: Reverse lookup error (bad ISP or attack).</description>
<group>gdpr_IV_35.7.d,gpg13_4.12,nist_800_53_SI.4,pci_dss_11.4,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
</rule>
</group>
四 mysql登录预警
1 分析mysql日志
远程登录mysql
mysql -uroot -proot -h 192.168.5.17
mysql登录失败的日志
240719 23:58:20 6 Connect root@192.168.5.26 as anonymous on
6 Connect Access denied for user 'root'@'192.168.5.26' (using password: YES)
2 配置Wazuh的核心配置文件
<localfile>
<log_format>syslog</log_format>
<location>/opt/lampp/logs/mysql.log</location>
</localfile>
3 配置解码器
/var/ossec/ruleset/decoders/0150-mysql_decoders.xml
<decoder name="mysql_log">
<prematch>\d+ Connect</prematch>
</decoder>
4 配置规则
/var/ossec/ruleset/rules/0295-mysql_rules.xml
<rule id="50106" level="9">
<if_sid>50100</if_sid>
<match>Access denied for user</match>
<description>MySQL: authentication failure.</description>
<group>authentication_failed,</group>
</rule>
5 mysql爆破预警
<rule id="561001" level="12" frequency="5" timeframe="30">
<if_matched_sid>50106</if_matched_sid>]
<description>Too Many Fails to Login, Maybe Force Crack.</description>
<group>attack,</group>
</rule>