4.2 wazuh集群

集群配置

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的负载均衡集群是没有问题的。

最后更新于