集群配置
wazuh集群是由一个master(主节点)以及多个worker(工作节点)所组成,其中主节点的作用是控制不同的工作节点,而工作节点则是控制下面代理端之间的通信。
一般来说,一个单节点wazuh管理端可以控制10万台代理端服务器(官方定义),但是以实际生产环境来看,一台普通服务器同时建立10万个通信连接是有一定的困难,所以需要建立wazuh的集群,分担通信压力。
按照网络架构图来做配置,wazuh管理端(192.168.1.200
)作为wazuh集群的主节点,工作节点1(192.168.1.210
)和工作节点2(192.168.1.220
)作为两台工作节点。
首先需要先配置主节点的一些信息,使用openssl命令生成随机密码用于集群之间的密码认证。
复制 [root@wazuh-manager ~]# openssl rand -hex 16
3fd8b327ec5f65e503df4c23da28c766
修改ossec.conf
文件,找到cluster
标签根据自身:
node_name
:当前节点的名字;
node_type
:节点类型,分为master和worker两种方式;
key
:集群之间通信的密码;
port
:集群通信的监听端口;
bind_addr
:集群监听地址;
nodes
:配置主节点的IP地址或者域名,当前集群只允许一个主节点,所以多余的node会被跑抛弃,只取第一个;
hidden
:是否显示该集群内的告警信息;
disable
:是否开启集群功能。
wazuh集群启动的配置方法如下所示:
复制 <cluster>
<name>wazuh</name>
<node_name>master-node</node_name>
<node_type>master</node_type>
<key>3fd8b327ec5f65e503df4c23da28c766</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>192.168.1.200</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
保存配置文件更改之后,把服务重新启动,以此生效集群功能。
工作节点1和工作节点2配置文件只需修改节点名字和节点类型,其余的与主节点配置一样,保存之后,重新启动服务。
复制 #worker-1
<cluster>
<name>wazuh</name>
<node_name>worker-node-1</node_name>
<node_type>worker</node_type>
<key>3fd8b327ec5f65e503df4c23da28c766</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>192.168.1.200</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
#worker-2
<cluster>
<name>wazuh</name>
<node_name>worker-node-2</node_name>
<node_type>worker</node_type>
<key>3fd8b327ec5f65e503df4c23da28c766</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>192.168.1.200</node>
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
在主节点使用cluster_control
命令查看集群通信的情况,可以看到集群名字、集群类型、wazuh版本、IP地址。
复制 [root@wazuh-manager ~]# /var/ossec/bin/cluster_control -l
NAME TYPE VERSION ADDRESS
master-node master 4.1.5 192.168.1.200
worker-node-2 worker 4.1.5 192.168.1.220
worker-node-1 worker 4.1.5 192.168.1.210
wazuh管理端的集群已经启动完成,那么代理端的服务器与管理端通信有两种方式:
①选择与主节点通信。
②选择与工作节点通信。
复制 [root@wazuh-centos-agent ~]# /var/ossec/bin/agent-auth -m 192.168.1.200 -P 123456
2021/07/03 05:09:11 agent-auth: INFO: Started (pid: 10902).
2021/07/03 05:09:11 agent-auth: INFO: Requesting a key from server: 192.168.1.200
2021/07/03 05:09:11 agent-auth: INFO: Using agent name as: wazuh-centos-agent
2021/07/03 05:09:11 agent-auth: INFO: Waiting for server reply
2021/07/03 05:09:11 agent-auth: INFO: Valid key received
接着修改代理端的ossec.conf
,将 address
标签内容修改为192.168.1.210(工作节点的IP地址),保存退出,最后重新启动代理端的服务。
复制 <client>
<server>
<address>192.168.1.210</address>
<port>1514</port>
<protocol>tcp</protocol>
</server>
<config-profile>centos, centos7, centos7.7</config-profile>
<notify_time>10</notify_time>
<time-reconnect>60</time-reconnect>
<auto_restart>yes</auto_restart>
<crypto_method>aes</crypto_method>
</client>
工作节点无法像主节点一样对所有的代理端进行增删查改,所以的操作只能到主节点进行操作。
复制 root@wazuh-worker-1:~# /var/ossec/bin/agent_control -l
2021/07/03 09:13:49 agent_control: ERROR: Wazuh is running in cluster mode: agent_control is not available in worker nodes. Please, try again in the master node: 192.168.1.200.
对一些代理端服务器添加到不同的集群内,可以看到006代理端是属于工作节点1,其他代理端是属于主节点。
复制 [root@wazuh-manager ~]# /var/ossec/bin/cluster_control -a
ID NAME IP STATUS VERSION NODE NAME
000 wazuh-manager 127.0.0.1 active Wazuh v4.1.5 master-node
003 wazuh-ubuntu-agent 192.168.1.100 active Wazuh v4.1.5 node01
004 win2008-agent 192.168.1.102 active Wazuh v4.1.5 node01
006 wazuh-centos-agent 192.168.1.101 active Wazuh v4.1.5 worker-node-1
主节点更改本地配置文件之后,工作节点并不能同步过来,需要对工作节点进行相同的修改,一旦修改完成之后,一定要重启服务。
故障切换
wazuh集群可以设置工作节点故障之后切换到其他节点继续通信工作,配置起来也很简单,只需额外添加一个server
标签设置另一个工作节点的IP地址,重新启动服务即可。
现在我将工作节点1服务器关闭,一段时间后,可以看到代理端自动切换到工作节点2。
查看集群可以看到切换到工作节点2
复制 [root@wazuh-manager ~]# /var/ossec/bin/cluster_control -a
ID NAME IP STATUS VERSION NODE NAME
000 wazuh-manager 127.0.0.1 active Wazuh v4.1.5 master-node
003 wazuh-ubuntu-agent 192.168.1.100 disconnected Wazuh v4.1.5 node01
004 win2008-agent 192.168.1.102 disconnected Wazuh v4.1.5 node01
006 wazuh-centos-agent 192.168.1.101 active Wazuh v4.1.5 worker-node-2
负载均衡
如果按照故障切换的思路去做应急措施的话,其工作量是非常大的,因为需要对每一台代理端的配置文件进行修改。为了更加方便快捷,可以使用负载均衡让代理端自动连接到正常的工作节点上面。
首先需要在nginx负载均衡(192.168.1.120
)这台服务器上面安装nginx服务,使用yum命令安装nginx。
安装完成之后,修改nginx配置文件,使用nginx的stream模块实现四层协议的转发、代理或者负载均衡,并在里面配置集群服务器的IP地址和端口,其中定义cluster和master的服务器,并且监听1514作为集群通信端口和监听1515作为master通信端口。
复制 #vim /etc/nginx/nginx.conf
stream {
upstream cluster {
hash $remote_addr consistent;
server 192.168.1.200:1514;
server 192.168.1.210:1514;
server 192.168.1.220:1514;
}
upstream master {
server 192.168.1.200:1515;
}
server {
listen 1514;
proxy_pass cluster;
}
server {
listen 1515;
proxy_pass master;
}
}
查看监听端口,可以看到nginx已经开放1514和1515端口。
来到centos的代理端服务器,修改配置文件,将管理端的IP地址变成是nginx服务器的地址。
查看日志发现wazuh的负载均衡集群是没有问题的。