Wazuh入侵检测系统的安装和基本使用

一 安装

官方网站: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

重点操作的目录 :etclogsruleset

核心配置文件

复制代码
/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>
相关推荐
小蜗牛慢慢爬行1 小时前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
MARIN_shen1 小时前
Marin说PCB之POC电路layout设计仿真案例---06
网络·单片机·嵌入式硬件·硬件工程·pcb工艺
m0_748240022 小时前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome
終不似少年遊*2 小时前
华为云计算HCIE笔记05
网络·华为云·云计算·学习笔记·hcie·认证·hcs
星竹2 小时前
upload-labs-master第21关超详细教程
网络安全
蜜獾云2 小时前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小林熬夜学编程3 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
Hacker_Fuchen3 小时前
天融信网络架构安全实践
网络·安全·架构
上海运维Q先生3 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
ProtonBase3 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构