HIDS之Wazuh的简易部署
简介
Wazuh是一个安全检测,可见性和合规性开源项目。它诞生于OSSEC HIDS的分支,后来与Elastic Stack和OpenSCAP集成,演变成更全面的解决方案。
大概的运行流程:
- 服务器上运行的Agent端会将采集到的各种信息通过加密信道传输到管理端。
- 管理端负责分析从代理接收的数据,并在事件与告警规则匹配时触发警报。
-
LogStash
会将告警日志或者监控日志发送到Elasticsearch
上面,最后通过Kibana
可视化展示日志。
分布式部署:在不同主机上运行Wazuh
服务器和Elastic Stack
集群(一个或多个服务器)。
单主机架构:在同一系统上运行Wazuh
服务器和Elastic Stack
。
两者的主要差别在于,前者需要使用FileBeat
与Logstash
进行日志传输,后者直接本机读取日志文件。
这里使用单机部署。
服务端部署
更换软件源
如果网速比较慢的可以更换为国内软件源,默认情况下并不用
yum repolist
查看当前使用的源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
备份原来的源
wget http://mirrors.aliyun.com/repo/Centos-7.repo
下载阿里云centos7源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
下载163 centos7源
mv 你下载的源 /etc/yum.repos.d/CentOS-Base.repo
yum clean all && yum makecache
清理并重建yum缓存
安装软件包
服务器系统CentOS 7.5 64位版,官网下载最新软件包。(官方软件包更新的很快,已经到3.7.2版,当时写的时候还是3.5版,开源的魅力)
https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-manager/wazuh-manager_3.5.0-1_amd64.deb
https://packages.wazuh.com/3.x/apt/pool/main/w/wazuh-api/wazuh-api_3.5.0-1_amd64.deb
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-amd64.deb
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.deb
https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-amd64.deb
先yum install epel-release
,安装扩展库
然后再安装nodejs、npm
,是wazuh-api和Kibana的运行环境。设置好JDK环境变量供elastic stack
使用。(具体安装过程官方文档)
因为elasticsearch
记录的时间是按照服务器自身时间,所以需要校准时间以免错乱(要不然在kibana上看的时间与现实时间差别太大)
yum -y install ntp ntpdate
ntpdate cn.ntp.org.cn
hwclock --systohc #系统时间写入硬件时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #linux的时区设置为上海时区
然后rpm -ivh
各种包,注意要先安装wazuh-manager,再安装wazuh-api,有了这个api就可以通过http请求进行管理操作了。
-
systemctl enable xxx
设为自启动服务 -
systemctl start xxx
启动指定服务 -
systemctl status xxx
查看服务情况 -
systemctl stop xxx
停止指定服务。
几个步骤要注意:(注意:下面命令中的版本不一定是最新的)
-
一个是es安装完毕后建立模板
curl https://raw.githubusercontent.com/wazuh/wazuh/3.7/extensions/elasticsearch/wazuh-elastic6-template-alerts.json | curl -XPUT 'http://localhost:9200/_template/wazuh' -H 'Content-Type: application/json' -d @-
-
logstash安装完毕后下载配置文件(这里是
elasticsearch
和manager没有分离部署,直接读取的本地ossec文件)
curl -so /etc/logstash/conf.d/01-wazuh.conf https://raw.githubusercontent.com/wazuh/wazuh/3.7/extensions/logstash/01-wazuh-local.conf
-
kibana安装完毕后设置环境变量
export NODE_OPTIONS="--max-old-space-size=3072"
,以及安装wazuh app/usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.7.0_6.5.1.zip
-
如果是单机部署则不需要安装filebeat,因为logstash可以直接读取ossec的alert.json
-
重新配置
wazuh-api
的连接密码,在wazuh-app
中调用
cd /var/ossec/api/configuration/auth
node htpasswd -c user myUserName
- alert.json要设置权限,否则logstash不能读取。
usermod -a -G ossec logstash
防火墙开放端口
这里使用firewall-cmd
来配置。
[root@localhost ~]# firewall-cmd --list-all #查看规则情况
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
firewall-cmd --add-port=1515/tcp --permanent
1515端口是给agent来获取认证key的,还有1514/udp管理端监听端口,5601/tcp Kibana端口,55000/tcp Wazuh-api 端口看情况开放,--permanent
表示永久保存。
最后firewall-cmd --reload
重载规则生效。
Agent 注册
所有的软件包
管理端
防火墙要开启1515端口
如果要禁止重复ip或者计算机名注册,需要修改etc/ossec.conf
<auth>
<force_insert>yes</force_insert>
<force_time>0</force_time>
</auth>
0表示一旦该项有新的agent过了0秒后删除旧的agent
/var/ossec/bin/ossec-authd
可以用-h
查看可用参数
使用密码验证 echo "TopSecret" > /var/ossec/etc/authd.pass
然后bin/ossec-authd -P -a
Windows客户端
这里下载Windows的msi包。
bin/agent-auth -m 管理端ip -P "管理端密码"

输入管理ip后保存,然后启动Agent服务。

Linux客户端
以centos
为例,上一步注册完毕后,需要修改/var/ossec/etc/ossec.conf
中client
节点address
项
<ossec_config>
<client>
<server>
<address>10.0.0.10</address>
<protocol>udp</protocol>
</server>
</client>
</ossec_config>
保存后systemctl restart wazuh-agent
,没有systemctl
可以使用service wazuh-agent restart
。
接下来打开安装好Wazuh App的Kibana,设置好与Wazuh Api的连接,红框表示你之前设置的密码

选择Agent可以看到确实连接成功了

在命令行可以用./bin/agent_control -l
查看
错误处置
如果看不到告警信息,运行lsof /var/ossec/logs/alerts/alerts.json
单机部署应该能看到ossec-analysisd
and java
两个进程在读取这个文件。
分布式部署看到ossec-analysisd
and filebeat
查看运行日志中记录的错误
查看 Elastic Stack log files:
cat /var/log/elasticsearch/elasticsearch.log | grep -i -E "error|warn"
cat /var/log/filebeat/filebeat | grep -i -E "error|warn"
cat /var/log/logstash/logstash-plain.log | grep -i -E "error|warn"
查看Wazuh app log file:
cat /usr/share/kibana/plugins/wazuh-logs/wazuhapp.log | grep -i -E "error|warn"
查看Wazuh Manager log file:
cat /var/ossec/logs/ossec.log | grep -i -E "error|warn"
根据错误信息去谷歌找解决办法。
- 下一篇,编写wazuh解码规则与报警规则
- 实操 Wazuh联动audit监测攻击行为
- 2018年12月20日更新,Wazuh联动osquery检测反弹shell