由于是管理端控制代理端,一旦管理端对配置文件某个内容进行修改之后,总不能对所有文件一个一个复制过去,这样的工作量就非常大了。所以wazuh管理端有一个下发配置文件(share)的功能,作为下发配置文件以及其他引用的文件。这个功能具体运行逻辑是:
在管理端修改代理端的配置文件/var/ossec/ect/share/群组/agent.conf
。
文件同步到代理端之后,会自动重新启动代理端的配置文件,用来更新服务。
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.conf
与agent.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