一、介绍
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端
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 访问管理页面
我本地链接如下,输入账密后进入页面:
未配置过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/