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>
相关推荐
星哥说事29 分钟前
腾讯云iOA:全面提升企业办公安全与效率的智能解决方案
网络·安全·腾讯云
武晓兵35 分钟前
Ethernet, WiFi, Cellular, BLE, LoRa 分别解释
网络
哈基米喜欢哈哈哈1 小时前
Cookies和Sessions
网络·后端·计算机网络
wanhengidc2 小时前
云手机网速和本机网速的关系
网络·智能手机
猫头虎4 小时前
如何实现在多跳UDP传输场景,保证单文件和多文件完整传输的成功率?
java·开发语言·网络·python·网络协议·golang·udp
期待未来的男孩4 小时前
Cisco IOS Classic Firewall
网络·安全
丰锋ff5 小时前
计算机网络摘星题库800题笔记 第4章 网络层
网络·笔记·计算机网络
weixin_446260856 小时前
使用 NetBird 创建安全的私有网络,简化远程连接!
网络·安全
Whoami!7 小时前
2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
网络安全·信息安全·漏洞扫描·oscp
周某人姓周7 小时前
防火墙双机热备部署
网络安全