文章目录
前言
Wazuh,作为一款顶级的开源主机入侵检测系统(HIDS),在甲方安全建设中扮演着至关重要的角色。
本文为大家提供一个全面的Wazuh安装和使用指南,帮助在企业安全建设中利用这一强大的安全工具来增强网络安全防护。
因为提供了详细的步骤,所以篇幅可能会有点长。写这篇文章的目的也很简单,网上其他关于wazuh的文章和教程实在是太乱了,wazuh在2024年的今天已经更新到4.8.1版本,无论是安装还是功能都有了质的突破,网上的wazuh文章互相抄袭严重,不同的标题但是过程一模一样,非常麻烦不说,跟着操作还报错,也不提供解决办法。
在我耗时1个星期,踩坑无数,终于总结成了这篇文章,我可以很负责任的说,入门部署wazuh,看我这一篇就够了!
文章末尾我也提供了故障排除指南和最佳实践建议,确保大家能够高效地维护和优化Wazuh部署。无论是对于网络安全新手还是经验丰富的专业人士,本文都旨在成为一个宝贵的资源,帮助他们在甲方安全建设中有效地利用Wazuh这一开源HIDS系统。
提示:以下是本篇文章正文内容,下面案例可供参考
一、安装
https://github.com/wazuh/wazuh
这是wazuh的官方开源仓库。
9.9k的stars,遥遥领先!免费的永远是最好的,也是老板们最喜欢的,能白嫖就优先用,迫不得已再买乙方的产品。(狗头)
这是wazuh的官方参考文档:
https://documentation.wazuh.com/current/installation-guide/wazuh-agent/index.html
后续有任何问题都可以查阅这个官方手册。
我们开始安装,其中wazuh分为服务端和客户端,服务端又细分为3个:indexer、manager、dashboard。客户端就是agent。
1.1 服务端安装
服务端安装有两种办法,一种是快速安装,另一个就是分布式安装。
1.1.1 快速安装
快速安装,一条命令解决:
curl-sO https://packages.wazuh.com/4.8/wazuh-install.sh &&sudobash ./wazuh-install.sh -a
是的,就是这么简单。
我的服务器是ubuntu:
如果报错,说明是服务器的内存不够,加
-i
参数就可以忽略这个服务器的配置。
目前wazuh的推荐配置是:4Gb of RAM and 2 CPU cores.太低的话,可能会造成卡顿。
ERROR: Your system does not meet the recommended minimum hardware requirements of 4Gb of RAM and 2 CPU cores.
curl-sO https://packages.wazuh.com/4.8/wazuh-install.sh &&sudobash ./wazuh-install.sh -a-i
这样就能安装好了。而且自动弹出用户名和密码,密码可以登录后修改。
访问服务器的ip就可以自动跳转到wazuh的主页。
输入用户名和密码之后进到dashboard主页:
1.2 客户端安装
左上角菜单栏点击 Home–> Overview,点击Actice就可以安装不同客户端的agent。
因为我是第二次安装,我本机的agent还没有删除,所以页面跟你们的不太一样,实际上初次安装的时候是没有agent的,它会主动弹出一个黄色的安装agent的提示框,点击之后的效果和我这里的操作其实是一样的,所以问题不大。
点击Deploy new agent,添加一个新的agent。
根据要监控的电脑系统选择不同的版本,我的电脑是macOS M2芯片,所以我选择macOS Apple silicon。其他不同的系统也类似,按类型选择即可。
Server address填写服务器的ip地址,其他的默认。注意这里的agent name最终会显示在服务器端,所以如果要真实落地部署,这里最好设置成公司员工的姓名拼音,这样就可以更好的辨认和管理。
接着运行它输出的两条安装命令就行,这个根据实际情况来。先执行第四步的安装命令,再执行第五步的启动命令。
然后agent就能上线控制台了。
如果agent客户端存在高风险操作,记录和告警都会显示在Discover这里。
1.2.1 接入钉钉机器人(自动告警)
钉钉是很方便的,新建一个群聊,添加自定义机器人。把wazuh的告警信息自动推送到钉钉,这样就能做到实时查看,不用人工的去控制台查看告警了,非常方便。
如何监测呢?其实wazuh的所有告警日志都会存储在这个文件中:
/var/ossec/logs/alerts/alerts.log
所以我们的钉钉脚本只需要这样开发就可以了,下面说说我的开发思路:
- python实现功能①:每隔3秒监测 /var/ossec/logs/alerts/alerts.log文件的变化。
- 如果 /var/ossec/logs/alerts/alerts.log文件发生变化,则将变化的最新内容(也就是最后以Alert开头的json内容打印输出到钉钉)
告警日志的格式其实很好筛选,写个正则就行了。
1.3 客户端agent卸载
https://documentation.wazuh.com/current/installation-guide/uninstalling-wazuh/agent.html#uninstalling-macos-agent
不同的客户端卸载方式不一样,基本上都是几条命令的事情,很简单。选择不同的客户端系统,按照要求来卸载就行。
我直接把macOS的agent卸载命令汇总成一条了,直接运行就能卸载。
sudo /Library/Ossec/bin/wazuh-control stop &&sudo /bin/rm -r /Library/Ossec &&sudo /bin/rm -f /Library/LaunchDaemons/com.wazuh.agent.plist &&sudo /bin/rm -rf /Library/StartupItems/WAZUH &&sudo /usr/bin/dscl .-delete"/Users/wazuh"&&sudo /usr/bin/dscl .-delete"/Groups/wazuh"&&sudo /usr/sbin/pkgutil --forget com.wazuh.pkg.wazuh-agent
卸载完agent会下线,但是依然会在控制台留有记录。如果想完全删除怎么办?可以看下一节的大标题,Wazuh安全运维汇总,里面会有各种你想要的答案。
二、Wazuh安全运维汇总
2.0. 如何在控制台卸载agent
如果安装上一节提到的卸载方式卸载,那么同事肯定心里暗骂你,这么麻烦,还搞什么安全?从此安全部门仇恨值+1…… 众所周知,安全部门在公司的地位是很低的🐶,所以让用户无感的操作才是最适合我们甲方安全宝宝的。
需要用到wazuh的二进制工具,在服务器上的这个路径:
/var/ossec/bin/manage_agents
选择r就是删除的意思。可以先选择L,列出所有的agent,然后根据agent ID来进行定向删除。(三步走删除法)
也可以直接通过id,一条命令来删除。
/var/ossec/bin/manage_agents -r 001
由于太粗暴,可能造成误删,所以更推荐第一种办法,先确认id再删除。
删除完之后,控制台会变空,出现文章开头说的黄色提示,让我们安装agent。
2.1. 是否可以远程升级agent ,比如现在 wangzhi 这个agent 的版本是v4.7.0 是否可以远程将该agent 升级到指定版本?
实验场景:ID007的agent版本是低版本,需要自动更新到最新。
服务端使用agent_upgrade工具,
-l
参数列出所有过时的代理:
sudo /var/ossec/bin/agent_upgrade -l
更新低版本的agent(指定ID即可):
sudo /var/ossec/bin/agent_upgrade -a 007
如果所有的代理都是最新的,会显示All agents are updated.。
升级可能会出现的问题&解决方法:
①sudo /var/ossec/bin/agent_upgrade -l报错:
Internal error: Error 2005 - Could not connect to wdb socket: [Errno 2] No such file or directory
解决办法:sudo service wazuh-manager restart
2.2. wazuh 服务端如何升级?升级之后是否会对原有的agent 产生影响?
wazuh服务端的升级比较麻烦,但是说麻烦其实也不麻烦,我个人觉得是不麻烦的,但是大家看的时候可能会觉得有点麻烦。
我尝试过寻找简单快捷的办法,但是wazuh没有平滑升级的方式,官方文档给出的升级文档就是要求这样升级,所以没有办法,官方怎么说就怎么来。因为官方的文档是英文的,看起来比较麻烦,很多人看的时候会忽略重要信息,所以我完整的升级了一次,把所有关键点都列出来了。下面开始这个复杂又不太复杂的升级过程~
📢注意了!!我这个升级是按照ubuntu系统的升级,如果你服务器是centos,下面的办法不适用!!!需要参考官方文档自行修改安装命令,无非就是apt-get换成yum,所以大家也不用紧张。区别不会太大,但是还是有区别的。
wazuh官方服务端升级文档
2.2.1更新wazuh-indexer
服务器命令:
/var/ossec/bin/wazuh-control info
返回具体版本
WAZUH_VERSION=“v4.7.5”
WAZUH_REVISION=“40720”
WAZUH_TYPE=“server”
逐个执行以下命令:
apt-getinstall gnupg apt-transport-https
curl-s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import&&chmod644 /usr/share/keyrings/wazuh.gpg
echo"deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main"|tee-a /etc/apt/sources.list.d/wazuh.list
apt-get update
停止dashboard和filebeat服务:
systemctl stop filebeat
systemctl stop wazuh-dashboard
服务端(密码改成你自己的wazuh的密码):
curl-X DELETE "https://127.0.0.1:9200/_index_template/ss4o_*_template"-u admin:'Ndc?OkSsdfsdfsdfsdfwewefsdffsdfsdf0t'-k
返回:{“acknowledged”:true}
curl-X PUT "https://127.0.0.1:9200/_cluster/settings"-u admin:'Nsdfsdfdsfdsfdsfdsfdfsbr9Ir0t'-k-H'Content-Type: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
'
返回:{“acknowledged”:true,“persistent”:{“cluster”:{“routing”:{“allocation”:{“enable”:“primaries”}}}},“transient”:{}}
curl-X POST "https://127.0.0.1:9200/_flush/synced"-u admin:'sdfsdfsdfsdfsdfsdfdsfr0t'-k
返回:{“_shards”:{“total”:14,“successful”:14,“failed”:0}}
systemctl stop wazuh-indexer
apt-getinstall wazuh-indexer
重启wazuh-indexer服务:
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl start wazuh-indexer
检测状态:
curl-k-u admin:'Ndc?sdfsdfsdfsdfsdfsdfsr0t'"https://127.0.0.1:9200/_cat/nodes?v"
curl-X PUT "https://127.0.0.1:9200/_cluster/settings"-u admin:'Ndc?OkSsr0t'-k-H'Content-Tdfsdfdsfsdfsdfsdfype: application/json' -d'
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
'
返回:{“acknowledged”:true,“persistent”:{“cluster”:{“routing”:{“allocation”:{“enable”:“all”}}}},“transient”:{}}
再次检查 Wazuh 索引器集群的状态以查看分片分配是否已完成:
curl-k-u admin:'Ndc?sdfdsfdsfsdfsdfsdft'"https://127.0.0.1:9200/_cat/nodes?v"
ok,到这里,你已经升级完成3分之一了。还剩三分之二。
2.2.2更新Wazuh server
apt-getinstall wazuh-manager
修改配置文件:/var/ossec/etc/ossec.conf
<vulnerability-detection><enabled>yes</enabled><index-status>yes</index-status><feed-update-interval>60m</feed-update-interval></vulnerability-detection>
注意,这段内容要放在
<ossec_config>
标签内,否则无效。
使用 Wazuh-keystore 工具将 Wazuh 索引器用户名和密码保存到 Wazuh 管理器密钥库中。
注意📢,逐个执行!
/var/ossec/bin/wazuh-keystore -f indexer -k username -v<INDEXER_USERNAME>
/var/ossec/bin/wazuh-keystore -f indexer -k password -v<INDEXER_PASSWORD>
/var/ossec/bin/wazuh-keystore -f indexer -k username -v admin
输入你的密码:
/var/ossec/bin/wazuh-keystore -f indexer -k password -v Ndc?Oksdfsdfsdfdsfsdf
配置filebeat:
curl-s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz |sudotar-xvz-C /usr/share/filebeat/module
curl-o /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.8.1/extensions/elasticsearch/7.x/wazuh-template.json
(等待时间有点久,可能要等个8分钟,不要中断命令行)
chmod go+r /etc/filebeat/wazuh-template.json
重启filebeat:
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat
上传 Filebeat 的新 Wazuh 模板和管道:
filebeat setup --pipelines
filebeat setup --index-management -Eoutput.logstash.enabled=false
到这里,你已经完成了三分之二。
2.2.3更新wazuh-dashboard
备份
/etc/wazuh-dashboard/opensearch_dashboards.yml
文件以保存您的设置。
cp /etc/wazuh-dashboard/opensearch_dashboards.yml /etc/wazuh-dashboard/opensearch_dashboards.yml.bak
更新Wazuh dashboard:
apt-getinstall wazuh-dashboard
重启服务:
systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard
选择N。
最后一步,编辑api配置文件:
/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
# Example Wazuh API configuration
hosts:
- production:
url: https://172.20.107.123
port: 55000
username: wazuh-wui
password: wazuh-wui
run_as: false
完成更新。
并且升级后对agent没有任何影响。
2.3.极端情况下如果agent 勾选了 default 的group,wazuh 重新安装是否还能自动上线
仅升级不卸载:
两个agent都勾选了default,其中一个只勾选了default。目前wazuh是4.7.5版本,升级为最新版本4.8.1后,agent都还在。这里插播一个小细节,因为csdn的尿性,我这篇文章发出去肯定会被抄袭,所以这里打个水印,原文出处:https://blog.csdn.net/weixin_43847838/article/details/141233887。
完全卸载重装wazuh:
wget https://packages.wazuh.com/4.8/wazuh-install.sh
完全卸载重装wazuh的情况下,agent会自动重连:
2.4. dashboard 关闭的情况下影响wazuh 正常运行吗?比如钉钉告警,威胁监测.
wazuh可以正常监控agent,dashboard服务已经关闭,钉钉依然可以收到告警。
所以可以最小化部署,把dashboard关闭,不把web页面暴露在公网,收敛暴露面,把安全风险降到最低。
总结
万字长文超详细的wazuh部署教程。有一点长。
本期送书:《Linux信息安全和渗透测试》
京东官网购买链接🔗:https://item.jd.com/13847177.html
《Linux信息安全和渗透测试》是一本针对网络安全渗透测试人员、运维工程师、网络管理人员和安全课程培训人员的必备指南。本书涵盖了网络安全渗透测试的理论和工具,包括Kali Linux 2的基础使用、被动扫描、主动扫描、漏洞扫描、远程控制、渗透攻击、Armitage、社会工程学工具、BeEF-XSS渗透框架、漏洞渗透模块编写、网络数据的嗅探与欺骗、身份认证攻击、无线安全渗透测试以及渗透测试报告的编写。通过深入浅出的讲解,读者将全面了解渗透测试的各个方面,并掌握实践技巧和解决问题的能力。无论您是正在学习渗透测试的学生,还是已经从事相关工作的专业人士,本书都将成为您的不可或缺的参考书籍。
扫码抽奖(微信小程序抽奖,公正公开):
欢迎大家关注EureKaSec,无论是技术交流还是有兴趣加入我们团队,都欢迎随时联络沟通。
文章原创,欢迎转载,请注明文章出处: Wazuh:最受欢迎的开源HIDS系统在甲方安全建设中的应用(文末送书).。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
版权归原作者 归去来兮-zangcc 所有, 如有侵权,请联系我们删除。