4.1 wazuh共享

由于是管理端控制代理端,一旦管理端对配置文件某个内容进行修改之后,总不能对所有文件一个一个复制过去,这样的工作量就非常大了。所以wazuh管理端有一个下发配置文件(share)的功能,作为下发配置文件以及其他引用的文件。这个功能具体运行逻辑是:

  1. 在管理端修改代理端的配置文件/var/ossec/ect/share/群组/agent.conf

  2. 重启管理端服务或者等上一段时间就会同步到代理端。

  3. 文件同步到代理端之后,会自动重新启动代理端的配置文件,用来更新服务。

wazuh的共享是基于默认群组和不同的群组进行下发文件,那么群组就显得很重要,wazuh自带的命令agent_groups命令可以创建群组、删除群组、插入主机、查看群组等功能。

CLI命令行

接下来展示一下这个命令的具体功能操作。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -h

    agent_groups.py [ -l [ -g group_id ] | -c -g group_id | -a (-i agent_id -g groupd_id | -g group_id) [-q] [-f] | -s -i agent_id | -S -i agent_id | -r (-g group_id | -i agent_id) [-q] ]

    Usage:
    	-l                                    # List all groups
    	-l -g group_id                        # List agents in group
    	-c -g group_id                        # List configuration files in group
    	
    	-a -i agent_id -g group_id [-q] [-f]  # Add group to agent
    	-r -i agent_id [-q] [-g group_id]     # Remove all groups from agent [or single group]
    	-s -i agent_id                        # Show group of agent
    	-S -i agent_id                        # Show sync status of agent
    	
    	-a -g group_id [-q]                   # Create group
    	-r -g group_id [-q]                   # Remove group


    Params:
    	-l, --list
    	-c, --list-files
    	-a, --add-group
    	-f, --force-single-group
    	-s, --show-group
    	-S, --show-sync
    	-r, --remove-group

    	-i, --agent-id
    	-g, --group

    	-q, --quiet (no confirmation)
    	-d, --debug

使用-l参数可以查看所有的群组的信息,默认自带的群组的名字叫default组,不可以删除,所有代理端默认都有default群组,里面有默认的配置文件,如果不设置其他的群组,代理端的配置都会使用default群组里面的配置

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -l
Groups (1):
  default (2)
Unassigned agents: 0.

根据架构图,这边将操作系统分为centos、Ubuntu、Windows三种类型,于是使用命令创建三种类型的群组。-a参数代表添加群组,-g代表群组的名字,-q静默确定模式,不需要确认。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g centos
Do you want to create the group 'centos'? [y/N]: y
Group 'centos' created.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g ubuntu -q
Group 'ubuntu' created.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g windows -q
Group 'windows' created.

使用-l参数查看有什么群组,可以看到centos、Ubuntu、windows的群组创建完毕,但是没有代理端主机加进去,因为代理端默认就存在于default组,所以可以看到有三台代理端主机添加进去。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -l
Groups (4):
  centos (0)
  default (2)
  ubuntu (0)
  windows (0)
Unassigned agents: 0.

与创建群组命令相似,只需将-a参数变成-r参数就可以将原先创建的群组给删除掉。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -r -g centos
Do you want to remove the 'centos' group? [y/N]: y
Group centos removed.
No affected agents.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -r -g ubuntu  -q
Group ubuntu removed.
No affected agents.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -r -g windows -q
Group windows removed.
No affected agents.

再次查看群组信息,发现之前的创建的群组已经删除完毕。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -l
Groups (1):
  default (2)
Unassigned agents: 0.

添加代理端到群组里面,使用-i参数指定那个代理端,使用-a-g参数指定要添加到那个群组里面。

#查看代理端信息
[root@wazuh-manager ~]# /var/ossec/bin/agent_control -l

Wazuh agent_control. List of available agents:
   ID: 000, Name: wazuh-manager (server), IP: 127.0.0.1, Active/Local
   ID: 002, Name: wazuh-centos-agent, IP: any, Active
   ID: 003, Name: wazuh-ubuntu-agent, IP: any, Active
   ID: 004, Name: win2008-agent, IP: any, Active

#根据不同系统的代理端添加到不同的群组里面
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g ubuntu -q -i 003
Group 'ubuntu' added to agent '003'.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g centos -q -i 002
Group 'centos' added to agent '002'.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -a -g windows -q -i 004
Group 'windows' added to agent '004'.

#查看群组信息,可以看到default群组是拥有所有代理端以及相应代理端也添加到相应群组。
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -l
Groups (4):
  centos (1)
  default (4)
  ubuntu (1)
  windows (1)
Unassigned agents: 0.

删除群组里面的代理端只需添加-i参数指定需要删除的代理端ID号,如果不添加-g参数,默认会删除该代理端所加的群组(除了default群组)。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -r -i 002
Do you want to delete all groups of agent '002'? [y/N]: y
Agent '002' removed from 'centos'. Agent reassigned to group default.

使用-s-i参数指定代理端ID,查看当前代理端里面存在什么群组。

[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -s -i 002
The agent 'wazuh-centos-agent' with ID '002' belongs to groups: default.
[root@wazuh-manager ~]# /var/ossec/bin/agent_groups -s -i 003
The agent 'wazuh-ubuntu-agent' with ID '003' belongs to groups: default, ubuntu.

图形操作

因为有wazuh-api这个服务存在,所以kibana的wazuh插件就会调用其API进行增删查改。在浏览器打开kibana界面(http://192.168.1.201:5601/app/wazuh)。

点击management选项栏,里面就可以看到groups(管理你的代理群组)。

点击groups进行之后,找到add new group进行添加新的群组。

刷新页面查看,可以发现Centos、Ubuntu、Windows群组已经添加完毕。

添加群组完成

点击centos群组的名称,就能够进入到详细的页面对功能进行操作。Manage agents是添加或者删除代理端到该群组里面。Files是查看该群组的共享配置文件。

添加centos代理端到centos群组。

添加代理端完成

查看Files选项卡,可以看到有三个文件,这三个文件待会详细说明。

共享

wazuh共享(share)是由wazuh管理端对不同群组内的文件共享下发,在下面可以看到有这些文件:

agent-template.conf是说明agent.conf的标准模板,没有用,可以忽略;

ar.conf是后面章节主动响应的内容,在这里暂时不展开。

在default群组默认会有很多的文件,cis_*(安全基线规则)以及木马病毒查找特征文件,后面章节会进行展开。

有三个群组,可以发现每个群组默认都有两个文件,代理端配置文件(agent.conf)和合并下发记录文件(merged.mg)。

[root@wazuh-manager shared]# tree /var/ossec/etc/shared
/var/ossec/etc/shared
├── agent-template.conf
├── ar.conf
├── centos
│   ├── agent.conf
│   └── merged.mg
├── default
│   ├── agent.conf
│   ├── cis_apache2224_rcl.txt
│   ├── cis_debian_linux_rcl.txt
│   ├── cis_mysql5-6_community_rcl.txt
│   ├── cis_mysql5-6_enterprise_rcl.txt
│   ├── cis_rhel5_linux_rcl.txt
│   ├── cis_rhel6_linux_rcl.txt
│   ├── cis_rhel7_linux_rcl.txt
│   ├── cis_rhel_linux_rcl.txt
│   ├── cis_sles11_linux_rcl.txt
│   ├── cis_sles12_linux_rcl.txt
│   ├── cis_win2012r2_domainL1_rcl.txt
│   ├── cis_win2012r2_domainL2_rcl.txt
│   ├── cis_win2012r2_memberL1_rcl.txt
│   ├── cis_win2012r2_memberL2_rcl.txt
│   ├── merged.mg
│   ├── rootkit_files.txt
│   ├── rootkit_trojans.txt
│   ├── system_audit_rcl.txt
│   ├── system_audit_ssh.txt
│   ├── win_applications_rcl.txt
│   ├── win_audit_rcl.txt
│   └── win_malware_rcl.txt
├── ubuntu
│   ├── agent.conf
│   └── merged.mg
└── windows
    ├── agent.conf
    └── merged.mg

4 directories, 31 files

其中agent.conf是关系到代理端怎么运作问题,比如我有100台服务器,需要获取某个日志文件,只需在agent.conf写上对应与ossec.conf相同的配置内容。

打开ossec.confagent.conf做对比,就可以发现不同的是主标签(agent_config)与(ossec_config)区别,其子标签的内容都是一致的,还有agent.conf配置文件优先级大于ossec.conf,前者的内容会覆盖后者的内容(这里指的代理端的ossec.conf,不是管理端的ossec.conf)。

不同群组的merged.mg下发记录都是各不相同的,该文件记录群组内配置文件的内容变更信息。

wazuh支持一个agent有多个群组,**这里面就有一个多个群组优先级问题。**比如,当两个agent配置文件存在相同的标签(syscheck)的时候,系统会选择最后添加进来的组的配置文件,也就是说第一个组默认是default组,接着添加第二个组centos组的时候,会选择使用centos组的配置文件。

例子:default组设置sca扫描要两分钟,centos群组设置扫描一分钟,frequency是设置扫描频率的秒数,在wazuh管理端default和centos群组内分别设置。

[root@wazuh-manager shared]# cat /var/ossec/etc/shared/centos/agent.conf
<agent_config>
  <syscheck>
    <frequency>60</frequency>
  </syscheck>
</agent_config>
[root@wazuh-manager shared]# cat /var/ossec/etc/shared/default/agent.conf
<agent_config>
  <syscheck>
    <frequency>120</frequency>
  </syscheck>
</agent_config>

使用-S参数查看管理端跟代理端文件同步情况,文件更改之后,可以看到还没有进行同步,过了一会再次查看就会显示已经同步成功。

[root@wazuh-manager shared]# /var/ossec/bin/agent_groups -i 002 -S
Agent '002' is synchronized. 

来到centos这台服务器,查看centos代理端的agent.conf文件,可以看到有两条记录,分别来自wazuh管理端的default群组和centos群组配置信息。

[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/agent.conf 
<!-- Source file: default/agent.conf -->
<agent_config>
  <syscheck>
    <frequency>120</frequency>
  </syscheck>
</agent_config>
<!-- Source file: centos/agent.conf -->
<agent_config>
  <syscheck>
    <frequency>60</frequency>
  </syscheck>
</agent_config>

查看centos代理端的运行日志,会发现syscheck扫描时间间隔为1分钟就可以说明centos群组优先级比default群组高

当前还有更加简单的验证方法,在不同群组内创建同名的文件,最后看那个群组覆盖那个群组。可以看到centos组覆盖了default的测试文件。

[root@wazuh-manager shared]# echo "i am centos" >> centos/test.txt
[root@wazuh-manager shared]# echo "i am centos" >> default/test.txt

一段时间过去之后,查看test.txt文件,就证明centos群组优先级比default群组高

[root@wazuh-centos-agent ~]# cat /var/ossec/etc/shared/test.txt 
i am centos

最后更新于

这有帮助吗?