Wazuh安装与使用

一、介绍

Wazuh是OSSEC的一个开源分支,用于安全事件检测、日志管理和合规性的安全监控解决方案。它提供了实时分析、告警和完整的日志收集,帮助组织检测和应对网络攻击、恶意行为和安全事件。可以集成到现有的安全设备和日志源上,提供了安全分析的可视化界面;

OSSEC是由趋势科技开源的主机入侵检测系统,简称HIDS。支持日志分析、文件完整性检测、策略监控、rootkit检测、实时告警等;支持设备有:Linux、Windows、MacOS、Solaris、HP-UX、AIX。

Installation guide · Wazuh documentation

二、安装

本文基于VMware安装的centos7,镜像为精简版:CentOS-7-x86_64-Minimal-2009.iso,参考下载地址:CentOS-7-x86_64-Minimal-2009.iso官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

本机配置:4C8G 200G SSD

2.1 前提

2.1.1关闭防火墙

# 修改SELINUX=disabled
vi /etc/selinux/config 

# 关闭自带防火墙
systemctl stop firewalld.service #停止firewall 
systemctl disable firewalld.service #禁止firewall开机启动 

2.1.2 安装iptables防火墙(可选)

安装iptables防火墙:

# 安装iptables防火墙
yum install iptables-services #安装  

添加防火墙设置:

# 编辑防火墙配置文件
vi /etc/sysconfig/iptables

源文件内容情况,替换为以下内容:

# Firewall configuration written by system-config-firewall 
# Manual customization of this file is not recommended. 
*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0:0] 
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 
-A INPUT -m state –state NEW -m udp -p udp –dport 514 -j ACCEPT 
-A INPUT -m state –state NEW -m udp -p udp –dport 1514 -j ACCEPT 
-A INPUT -j REJECT –reject-with icmp-host-prohibited 
-A FORWARD -j REJECT –reject-with icmp-host-prohibited 
COMMIT

设置iptables自启:

#最后重启防火墙使配置生效 
systemctl restart iptables.service

#设置防火墙开机启动
systemctl enable iptables.service 

2.1.3 安装编译环境等

yum install wget gcc make mysql mysql-server mysql-devel httpd php php-mysql sendmail pcre2-devel systemd-devel

2.1.4 配置GitHub访问

wazuh安装时要下载GitHub上的软件包,如果访问不了GitHub,可以配置下列内容:

# /etc/hosts中添加如下记录
199.232.68.133 raw.githubusercontent.com

2.2 安装Server端

Wazuh的官方开源仓库

2.2.1 参考链接

官网链接:

https://documentation.wazuh.com/current/installation-guide/index.html

CSDN较好的教程:

https://blog.csdn.net/weixin_43847838/article/details/141233887

2.2.2 快速安装

一条命令完成安装,过程中会需要下载依赖,可能需要10分钟左右完成。安装过程遇到问题失败会自动取消,解决问题后再次执行即可:

curl -sO https://packages.wazuh.com/4.8/wazuh-install.sh && sudo bash ./wazuh-install.sh -a

如果提示内存不够,加-i参数可以忽略服务器的配置:

curl -sO https://packages.wazuh.com/4.8/wazuh-install.sh && sudo bash ./wazuh-install.sh -a -i

安装完成,最后会输出Summary信息,保存访问链接与账户密码:

...
10/12/2024 11:32:29 INFO: --- Summary ---
10/12/2024 11:32:29 INFO: You can access the web interface https://<wazuh-dashboard-ip>:443
    User: admin
    Password: tH+akuc4ykZhZVj4DL84s5KhCT7XmQSP
10/12/2024 11:32:29 INFO: --- Dependencies ---
10/12/2024 11:32:29 INFO: Removing lsof.
10/12/2024 11:32:29 INFO: Installation finished.

2.4 访问管理页面

我本地链接如下,输入账密后进入页面:

https://192.168.31.103:443

未配置过agent的页面:

已配置agent的页面:

2.3 安装客户端

2.3.1 页面安装

未配置过agent的情况下,概览页面会有“Deploy new agent”的入口,点击后按照提示操作即可;

已添加过agent的,点击Agent Summary中的Active可以进入agent管理页面:

值得注意的点是,添加agent的页面中Assign a server address填写内容为server端IP

2.3.2 手动安装

与页面添加相同,根据自身操作系统下载指定agent安装包安装即可;agent的版本要与server尽量一致,我试过4.9.x用命令行连接后,页面提示仍然是未连接;

安装命令参考:

curl -o wazuh-agent-4.8.2-1.x86_64.rpm https://packages.wazuh.com/4.x/yum/wazuh-agent-4.8.2-1.x86_64.rpm && sudo WAZUH_MANAGER='192.168.31.103' WAZUH_AGENT_NAME='agent01' rpm -ihv wazuh-agent-4.8.2-1.x86_64.rpm

三、配置

3.1 简单使用说明

3.1.1 常用命令

Wazuh底层服务依然是OSSEC,具体命令参考OSSEC说明,bin目录通常是在/var/ossec/bin/,可以执行相应命令进行尝试,常用的主要有下面几个

# 服务端
agent_control  # 增删agent,生成agent认证密钥
wazuh-control  # 控制服务启停等 


# 客户端
manage_agents  # 导入server端生成的密钥
wazuh-control  # 控制服务启停等

3.1.2 配置文件

服务端、客户端配置文件默认都在 /var/ossec/etc下,其中比较重要的是ossec.conf

3.1 服务端配置

3.2 客户端配置

3.2.1 配置示例与说明

<ossec_config>

  <!-- 客户端配置 -->
  <client>
    <!-- 服务器配置 -->
    <server>
      <address>192.168.31.103</address> <!-- Wazuh服务器的主机地址 -->
      <port>1514</port> <!-- 服务器监听的端口 -->
      <protocol>tcp</protocol> <!-- 通信协议 -->
    </server>
    <config-profile>windows, windows10</config-profile> <!-- 适用于Windows和Windows 10的配置文件 -->
    <crypto_method>aes</crypto_method> <!-- 加密方法 -->
    <notify_time>10</notify_time> <!-- 通知间隔 -->
    <time-reconnect>60</time-reconnect> <!-- 重连间隔 -->
    <auto_restart>yes</auto_restart> <!-- 自动重启 -->
  </client>

  <!-- 缓冲区选项 -->
  <client_buffer>
    <disabled>no</disabled> <!-- 缓冲区是否禁用 -->
    <queue_size>5000</queue_size> <!-- 缓冲区队列大小 -->
    <events_per_second>500</events_per_second> <!-- 每秒处理的事件数 -->
  </client_buffer>

  <!-- 日志分析 -->
  <localfile>
    <location>Application</location> <!-- 监控Application事件通道 -->
    <log_format>eventchannel</log_format> <!-- 日志格式 -->
  </localfile>

  <localfile>
    <location>Security</location> <!-- 监控Security事件通道 -->
    <log_format>eventchannel</log_format> <!-- 日志格式 -->
    <query>Event/System[EventID != 5145 and EventID != 5156 and EventID != 5447 and
      EventID != 4656 and EventID != 4658 and EventID != 4663 and EventID != 4660 and
      EventID != 4670 and EventID != 4690 and EventID != 4703 and EventID != 4907 and
      EventID != 5152 and EventID != 5157]</query> <!-- 排除特定事件ID -->
  </localfile>

  <localfile>
    <location>System</location> <!-- 监控System事件通道 -->
    <log_format>eventchannel</log_format> <!-- 日志格式 -->
  </localfile>

  <localfile>
    <location>active-response\active-responses.log</location> <!-- 监控活动响应日志 -->
    <log_format>syslog</log_format> <!-- 日志格式 -->
  </localfile>

  <!-- 策略监控 -->
  <rootcheck>
    <disabled>no</disabled> <!-- 是否禁用策略监控 -->
    <windows_apps>./shared/win_applications_rcl.txt</windows_apps> <!-- 应用程序路径 -->
    <windows_malware>./shared/win_malware_rcl.txt</windows_malware> <!-- 恶意软件路径 -->
  </rootcheck>

  <!-- 安全配置评估 -->
  <sca>
    <enabled>yes</enabled> <!-- 是否启用安全配置评估 -->
    <scan_on_start>yes</scan_on_start> <!-- 启动时是否进行扫描 -->
    <interval>12h</interval> <!-- 扫描间隔 -->
    <skip_nfs>yes</skip_nfs> <!-- 是否跳过 NFS -->
  </sca>

  <!-- 文件完整性监控 -->
  <syscheck>
    <disabled>no</disabled> <!-- 是否禁用文件完整性监控 -->
    <frequency>30</frequency> <!-- 扫描频率 -->
    <directories check_all="yes" realtime="yes">F:\test</directories> <!-- 监控的目录 -->
    <alert_new_files>yes</alert_new_files> <!-- 是否告警新文件 -->
  </syscheck>

  <!-- 系统清单 -->
  <wodle name="syscollector">
    <disabled>no</disabled> <!-- 是否禁用系统清单 -->
    <interval>1h</interval> <!-- 扫描间隔 -->
    <scan_on_start>yes</scan_on_start> <!-- 启动时是否进行扫描 -->
    <hardware>yes</hardware> <!-- 是否收集硬件信息 -->
    <os>yes</os> <!-- 是否收集操作系统信息 -->
    <network>yes</network> <!-- 是否收集网络信息 -->
    <packages>yes</packages> <!-- 是否收集软件包信息 -->
    <ports all="no">yes</ports> <!-- 是否收集端口信息 -->
    <processes>yes</processes> <!-- 是否收集进程信息 -->
  </wodle>

  <!-- 活动响应 -->
  <active-response>
    <disabled>no</disabled> <!-- 是否禁用活动响应 -->
    <ca_store>wpk_root.pem</ca_store> <!-- CA证书存储文件 -->
    <ca_verification>yes</ca_verification> <!-- 是否启用CA验证 -->
  </active-response>

  <!-- 日志记录 -->
  <logging>
    <log_format>plain</log_format> <!-- 日志格式 -->
  </logging>

</ossec_config>

3.2.2 文件完整性检测配置

修改客户端ossec.conf,添加如下内容,可以实时监控指定文件夹变化:

<!-- 文件完整性监控 -->
  <syscheck>
    <disabled>no</disabled> <!-- 是否禁用文件完整性监控 -->
    <frequency>30</frequency> <!-- 扫描频率 -->
    <directories check_all="yes" realtime="yes">F:\test</directories> <!-- 监控的目录 -->
    <alert_new_files>yes</alert_new_files> <!-- 是否告警新文件 -->
  </syscheck>

配置好需要重启客户端,重启后查看日志、告警日志、页面等变化,下图是页面监控到的数据:

修改文件内容后,监测信息JSON格式示例:

{
  "syscheck": {
    "size_before": "0",
    "uname_after": "15194",
    "mtime_after": "2024-12-10T15:53:36",
    "size_after": "23",
    "md5_before": "d41d8cd98f00b204e9800998ecf8427e",
    "win_perm_after": [
      {
        "allowed": [
          "DELETE",
          "READ_CONTROL",
          "WRITE_DAC",
          "WRITE_OWNER",
          "SYNCHRONIZE",
          "READ_DATA",
          "WRITE_DATA",
          "APPEND_DATA",
          "READ_EA",
          "WRITE_EA",
          "EXECUTE",
          "READ_ATTRIBUTES",
          "WRITE_ATTRIBUTES"
        ],
        "name": "Administrators"
      },
      {
        "allowed": [
          "DELETE",
          "READ_CONTROL",
          "WRITE_DAC",
          "WRITE_OWNER",
          "SYNCHRONIZE",
          "READ_DATA",
          "WRITE_DATA",
          "APPEND_DATA",
          "READ_EA",
          "WRITE_EA",
          "EXECUTE",
          "READ_ATTRIBUTES",
          "WRITE_ATTRIBUTES"
        ],
        "name": "SYSTEM"
      },
      {
        "allowed": [
          "DELETE",
          "READ_CONTROL",
          "SYNCHRONIZE",
          "READ_DATA",
          "WRITE_DATA",
          "APPEND_DATA",
          "READ_EA",
          "WRITE_EA",
          "EXECUTE",
          "READ_ATTRIBUTES",
          "WRITE_ATTRIBUTES"
        ],
        "name": "Authenticated Users"
      },
      {
        "allowed": [
          "READ_CONTROL",
          "SYNCHRONIZE",
          "READ_DATA",
          "READ_EA",
          "EXECUTE",
          "READ_ATTRIBUTES"
        ],
        "name": "Users"
      }
    ],
    "sha256_before": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "mtime_before": "2024-12-10T15:29:43",
    "mode": "realtime",
    "path": "f:\\test\\mountdir_t\\sdf.txt",
    "sha1_after": "61f162e80df0d1b9e7f8ec83ad436bb16557ef28",
    "changed_attributes": [
      "size",
      "mtime",
      "md5",
      "sha1",
      "sha256"
    ],
    "attrs_after": [
      "ARCHIVE"
    ],
    "uid_after": "S-1-5-21-4161846983-453529976-582672788-1001",
    "event": "modified",
    "md5_after": "9fa488a8221f9371e612b7bf3425b42d",
    "sha1_before": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "sha256_after": "bf6716e350b38439691c32c2e82e28d211439712bb515b3d1743318b7671525b"
  },
  "agent": {
    "ip": "192.168.31.89",
    "name": "windows89",
    "id": "002"
  },
  "manager": {
    "name": "wazuh-server"
  },
  "rule": {
    "mail": false,
    "level": 7,
    "pci_dss": [
      "11.5"
    ],
    "hipaa": [
      "164.312.c.1",
      "164.312.c.2"
    ],
    "tsc": [
      "PI1.4",
      "PI1.5",
      "CC6.1",
      "CC6.8",
      "CC7.2",
      "CC7.3"
    ],
    "description": "Integrity checksum changed.",
    "groups": [
      "ossec",
      "syscheck",
      "syscheck_entry_modified",
      "syscheck_file"
    ],
    "nist_800_53": [
      "SI.7"
    ],
    "gdpr": [
      "II_5.1.f"
    ],
    "firedtimes": 1,
    "mitre": {
      "technique": [
        "Stored Data Manipulation"
      ],
      "id": [
        "T1565.001"
      ],
      "tactic": [
        "Impact"
      ]
    },
    "id": "550",
    "gpg13": [
      "4.11"
    ]
  },
  "decoder": {
    "name": "syscheck_integrity_changed"
  },
  "full_log": "File 'f:\\test\\mountdir_t\\sdf.txt' modified\nMode: realtime\nChanged attributes: size,mtime,md5,sha1,sha256\nSize changed from '0' to '23'\nOld modification time was: '1733815783', now it is '1733817216'\nOld md5sum was: 'd41d8cd98f00b204e9800998ecf8427e'\nNew md5sum is : '9fa488a8221f9371e612b7bf3425b42d'\nOld sha1sum was: 'da39a3ee5e6b4b0d3255bfef95601890afd80709'\nNew sha1sum is : '61f162e80df0d1b9e7f8ec83ad436bb16557ef28'\nOld sha256sum was: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'\nNew sha256sum is : 'bf6716e350b38439691c32c2e82e28d211439712bb515b3d1743318b7671525b'\n",
  "input": {
    "type": "log"
  },
  "@timestamp": "2024-12-10T07:53:21.315Z",
  "location": "syscheck",
  "id": "1733817201.2792780",
  "timestamp": "2024-12-10T15:53:21.315+0800",
  "_id": "kGyPr5MBQ97tbFw-EJqM"
}

3.2.3 自定义规则:敏感命令监控

参考:

https://zhuanlan.zhihu.com/p/667061565

结合文件完整性检测,配置敏感命令监控:

3.2.3.1 配置命令行日志

修改 ~/.bashrc

vi ~/.bashrc

在末尾添加以下内容,这段命令用于在每次执行命令之前,将命令记录到系统日志中:

PROMPT_COMMAND=$(history -a)
typeset -r PROMPT_COMMAND
function log2syslog
{
   declare command
   command=$BASH_COMMAND
   logger -p local1.notice -t bash -i -- `echo $SSH_CLIENT|awk '{print $1}'` : $USER : $PWD : $command
}
trap log2syslog DEBUG

保存,关闭后使修改生效:

source ~/.bashrc

3.2.3.2 配置日志解码器

入口如图:

进入页面点击“Add new decoders file”,名称自定义,我这里参考教程设置成 102001_command_decoder.xml

<!-- 102001_command_decoder.xml -->

<decoder name="command-audit">
  <program_name type="regex">^bash</program_name>
</decoder>

3.2.3.3 配置触发规则

入口如图:

进入页面后点击“Add new rules file”,名称自定义,我这里定义为 commandMonitor.xml

具体内容如下:

<!-- Modify it at your will. -->
<group name="local,syslog,">
  <rule id="102001" level="0" noalert="1">
    <decoded_as>command-audit</decoded_as>
    <description>command messages grouped.</description>
  </rule>
  
   <rule id="102002" level="10">
      <if_sid>102001</if_sid>
      <match>useradd</match>
      <description>安全命令审计-创建用户</description>
 </rule>

   <rule id="102003" level="10">
      <if_sid>102001</if_sid>
      <match>userdel</match>
      <description>安全命令审计-删除用户</description>
 </rule>
  
 <rule id="102004" level="9">
      <if_sid>102001</if_sid>
      <match>passwd</match>
      <description>安全命令审计-修改密码</description>
 </rule>
 
  <rule id="102005" level="8">
      <if_sid>102001</if_sid>
      <match>nc|crontab -e|chmod|ssh|sh|chown|python|sudo|su</match>
      <description>安全命令审计-危险命令工具</description>
 </rule>

  <rule id="102006" level="7">
      <if_sid>102001</if_sid>
      <match>mv|rm|mkdir|touch</match>
      <description>安全命令审计-文件操作命令</description>
 </rule>

  <rule id="102007" level="6">
      <if_sid>102001</if_sid>
      <match>ftp|wget|curl|yum|make</match>
      <description>安全命令审计-网络请求命令</description>
 </rule>

  <rule id="102030" level="2">
      <if_sid>102001</if_sid>
      <match>cat|ls</match>
      <description>安全命令审计-普通命令</description>
 </rule>
 
   <rule id="102031" level="2">
      <if_sid>102001</if_sid>
      <description>安全命令审计-其他命令</description>
 </rule>
 
</group>

配置完成后页面会提示重启server,也可以在页面贴入实际产生的日志来验证是否可行,系统日志在/var/log/messages,如图:

测试入口:

测试效果如图:

3.2.3.4 页面查看结果

3.2.4 异常提权行为检测

https://www.zhihu.com/people/67-66-85-97/posts

3.2.5 异常攻击检测

https://www.zhihu.com/people/67-66-85-97/posts

四、卸载

https://documentation.wazuh.com/current/installation-guide/uninstalling-wazuh/central-components.html

4.1 全部卸载

找到安装时下载的wazuh-install.sh,执行以下命令

sudo bash wazuh-install.sh --uninstall

4.2 部分卸载

4.2.1 卸载仪表板-dashboard

yum remove wazuh-dashboard -y
rm -rf /var/lib/wazuh-dashboard/
rm -rf /usr/share/wazuh-dashboard/
rm -rf /etc/wazuh-dashboard/

4.2.2 卸载服务端-server

yum remove wazuh-manager -y
rm -rf /var/ossec/

4.2.3 卸载管理服务-manager

systemctl disable wazuh-manager
systemctl daemon-reload

4.2.4 卸载日志采集器-filebeat

yum remove filebeat -y
rm -rf /var/lib/filebeat/
rm -rf /usr/share/filebeat/
rm -rf /etc/filebeat/

4.2.5 卸载索引服务

yum remove wazuh-indexer -y
rm -rf /var/lib/wazuh-indexer/
rm -rf /usr/share/wazuh-indexer/
rm -rf /etc/wazuh-indexer/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值