Wazuh开源主机安全解决方案
转载自:https://blog.csdn.net/watermelonbig/article/details/125586549?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167988170316800192220048%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167988170316800192220048&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-2-125586549-null-null.blog_rank_default&utm_term=Wazuh&spm=1018.2226.3001.4450
日渐重要的主机安全管理
随着各种数字币风起云涌的发展,原本以运行Linux系统为主、少有病毒或木马侵扰的企业主机安全管理领域也越发变得不太平起来了,各色人等为了获得“免费”的企业级算力挖币,纷纷打起了企业服务器的主意。企业应用信息安全的管理已经不再满足于仅仅配备几个“网络安全”设备了,仅做到这一点的话,恐怕会连目前的等级保护三级标准也通过不了。
目前一些有实力的大厂都有自研的Linux主机安全管理工具,也有几家专做安全产品企业服务的厂商推出了商用产品,几大公有云厂商的云应用商店里也都将主机安全产品与云防火墙、DDos防护打包提供给客户了。
相较网络安全防护产品而言,主机安全产品的成本投入会更高一些,因为这需要在每个主机上都安装agent节点,计费基本上都是按节点数量收费。对于有一定运营规模的企业来说,使用几百个物理机、虚机或云主机都是很常见的,全面部署商用主机安全产品的成本压力很大。
今天我们给大家介绍的这款开源主机安全产品——Wazuh,是免费的开源软件。其组件遵守GNU通用公共许可证2版和Apache许可证2.0版(ALv2)。Wazuh平台提供XDR和SIEM功能来保护云、容器和服务器工作负载。其中包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测,以及支持检查对法规遵从性的检测。
几个安全专业名词:
XDR(跨层检测与响应)
EDR(端点检测与响应)
NTA(网络流量分析)
SIEM(安全信息与事件管理)
Wazuh的使用场景
- 日志数据分析
- Rootkits检测
- 配置评估
- 脆弱性检测
- 容器服务安全
- 文件完整性监控
- 主动响应并扼制
- 系统资源清单管理
- 云服务安全
- 法规遵从
Wazuh主要组件
Wazuh解决方案基于部署在受监控端点上的Wazuh agent,以及三个核心组件:Wazuh服务器、Wazuh索引器和Wazuh仪表盘。
- Wazuh indexer:一个高扩展性的全文检索与分析引擎
- Wazuh server:用于配置和管理agents,接收agents发送的数据并解析,单实例部署可以支持几百到几千个agents,支持集群模式以提供更大的处理能力。
- Wazuh dashboard:Web UI,主要用于安全事件、法规遵从、入侵检测、文件完整性监控及配置评估结果的可视化展示,也用于Wazuh的服务配置与状态监控。
- Wazuh agents:安装在各种类型终端上的软件,支持Linux, Windows, macOS, Solaris, AIX, and HP-UX。提供威胁预防、检测和响应能力。
除了基于agent的监控功能外,Wazuh平台还可以监控agentless设备,如防火墙、交换机、路由器或IDS等。例如,可以通过Syslog收集系统日志数据,并且可以通过SSH或API定期探测其数据来监视其配置。
Wazuh部署架构
对于业务负载较重的场景,建议将server与indexer分别部署在不同的主机节点,视负载大小还可以选择进行server/indexer的单实例或集群模式部署。
Wazuh的组件间通信与常用端口
Wazuh agent与Wazuh server的通信
Wazuh server默认监听1514端口,用于处理与agents的通信,默认使用AES加密传输。
接收到的数据会保存到以下默认路径:
- /var/ossec/logs/archives/archives.json,保存从agents收到的所有事件消息,建议部署cron定时任务以只保持近期数据,避免发生存储空间满的故障
- /var/ossec/logs/alerts/alerts.json,保存匹配上识别规则的事件消息
Wazuh server与Wazuh indexer的通信
Wazuh server通过TLS加密,使用Filebeat将警报和事件数据发送到Wazuh indexer。Filebeat读取Wazuh server输出数据并将其发送到Wazuh indexer(默认情况下,侦听端口9200/TCP)。一旦数据被Wazuh indexer索引,Wazuh仪表盘将用于进一步信息挖掘和可视化展示。
Wazuh仪表盘查询Wazuh RESTful API(默认情况下监听Wazuh server上的55000/TCP端口),以显示Wazuh server和agent的配置和状态相关信息。
Wazuh使用的服务端口与默认值
Wazuh的单实例部署与体验
为体验Wazuh的功能,我们可以在测试环境快速部署一个单实例的服务,即Wazuh server, Wazuh indexer 和 Wazuh dashboard都部署在一个主机上面。
主机操作系统建议:CentOS7/8,Ubuntu 16.04/18.04/20.04/22.04
安装Wazuh:
$ curl -sO https://packages.wazuh.com/4.3/wazuh-install.sh && sudo bash ./wazuh-install.sh -a
在需要监控的终端主机上部署Wazuh agent软件,参考方法:https://documentation.wazuh.com/current/installation-guide/wazuh-agent/index.html
安装Linux Wazuh agnet:
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << EOF
[wazuh]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=EL-\$releasever - Wazuh
baseurl=https://packages.wazuh.com/4.x/yum/
protect=1
EOF
WAZUH_MANAGER="10.0.0.2" yum install wazuh-agent
systemctl daemon-reload
systemctl enable wazuh-agent
systemctl start wazuh-agent
禁用Wazuh agent的更新,以避免agent的版本因为不小心而升级为高于server的版本:
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/wazuh.repo
怎么样删除删除Wazuh服务:
$ sudo bash ./wazuh-install.sh --uninstall
注:如果网络条件差,yum安装报错,可以试下从官网下载相关的rpm包进行安装 https://documentation.wazuh.com/current/installation-guide/packages-list.html
集成部署Wazuh 与 Elastic Stack basic license
实现了Wazuh与Elastic Stack的功能集成,消息数据存储到Elastic并基于Elastic Stack进行数据的检索与图表化展示。
有两种部署方式:
- All-in-one deployment ,单机部署所有,用于测试或小规模环境。
- Distributed deployment
在这里,我们通过部署一套All-in-one的环境,给大家做一个演示。
注:以下测试,我们都是基于centos7系统展开的。
安装几个工具包
yum install zip unzip curl
安装Elasticsearch
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elastic.repo << EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
yum install elasticsearch-7.10.2
elastic配置文件:
curl -so /etc/elasticsearch/elasticsearch.yml https://packages.wazuh.com/4.3/tpl/elastic-basic/elasticsearch_all_in_one.yml
安装数字证书:
curl -so /usr/share/elasticsearch/instances.yml https://packages.wazuh.com/4.3/tpl/elastic-basic/instances_aio.yml
/usr/share/elasticsearch/bin/elasticsearch-certutil cert ca --pem --in instances.yml --keep-ca-key --out ~/certs.zip
unzip ~/certs.zip -d ~/certs
mkdir /etc/elasticsearch/certs/ca -p
cp -R ~/certs/ca/ ~/certs/elasticsearch/* /etc/elasticsearch/certs/
chown -R elasticsearch: /etc/elasticsearch/certs
chmod -R 500 /etc/elasticsearch/certs
chmod 400 /etc/elasticsearch/certs/ca/ca.* /etc/elasticsearch/certs/elasticsearch.*
rm -rf ~/certs/ ~/certs.zip
chown -R elasticsearch.elasticsearch /etc/elasticsearch/
注意需要使用到jdk8
设置服务启动方式:
systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
创建Elastic Stack pre-built roles and users:
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
检查下安装结果
curl -XGET https://localhost:9200 -u elastic:<elastic_password> -k
安装Wazuh server
Wazuh server负责从agents收集数据并进行分析,主要包括了Wazuh manager、Wazuh API和Filebeat三个组件。
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << EOF
[wazuh]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=EL-\$releasever - Wazuh
baseurl=https://packages.wazuh.com/4.x/yum/
protect=1
EOF
安装wazuh-manager:
yum install wazuh-manager
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
安装Filebeat:
用于将报警事件和归档消息转发到Elasticsearch存储。
yum install filebeat-7.10.2
filebeat的配置文件:
curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.3/tpl/elastic-basic/filebeat_all_in_one.yml
Wazuh报警配置模板:
curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.3/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json
下载Filebeat使用的Wazuh模块:
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.2.tar.gz | tar -xvz -C /usr/share/filebeat/module
更新/etc/filebeat/filebeat.yml配置文件中的密码信息:
output.elasticsearch.password: <elasticsearch_password>
将上面password参数值设置为elastic用户的密码
部署证书:
cp -r /etc/elasticsearch/certs/ca/ /etc/filebeat/certs/
cp /etc/elasticsearch/certs/elasticsearch.crt /etc/filebeat/certs/filebeat.crt
cp /etc/elasticsearch/certs/elasticsearch.key /etc/filebeat/certs/filebeat.key
启动Filebeat:
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat
测试安装结果:
filebeat test output
安装Kibana:
yum install kibana-7.10.2
部署证书:
mkdir /etc/kibana/certs/ca -p
cp -R /etc/elasticsearch/certs/ca/ /etc/kibana/certs/
cp /etc/elasticsearch/certs/elasticsearch.key /etc/kibana/certs/kibana.key
cp /etc/elasticsearch/certs/elasticsearch.crt /etc/kibana/certs/kibana.crt
chown -R kibana:kibana /etc/kibana/
chmod -R 500 /etc/kibana/certs
chmod 440 /etc/kibana/certs/ca/ca.* /etc/kibana/certs/kibana.*
curl -so /etc/kibana/kibana.yml https://packages.wazuh.com/4.3/tpl/elastic-basic/kibana_all_in_one.yml
编辑/etc/kibana/kibana.yml,更新密码:
elasticsearch.password: <elasticsearch_password>
password参数值设置为elastic用户的密码
mkdir /usr/share/kibana/data
chown -R kibana:kibana /usr/share/kibana
安装Wazuh kibana插件:
cd /usr/share/kibana
sudo -u kibana /usr/share/kibana/bin/kibana-plugin install https://packages.wazuh.com/4.x/ui/kibana/wazuh_kibana-4.3.5_7.10.2-1.zip
允许kibana用户使用443端口:
setcap 'cap_net_bind_service=+ep' /usr/share/kibana/node/bin/node
登录web平台:
URL: https://<wazuh_server_ip>
user: elastic
password: <PASSWORD_elastic>
禁用wazuh,elastic的yum安装源,以避免部分软件包被自动更新而导致出现兼容性问题:
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/wazuh.repo
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/elastic.repo
安装Wazuh agent
找一个测试机,安装Wazuh agent,用于验证测试相关功能。
https://documentation.wazuh.com/current/installation-guide/wazuh-agent/index.html
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << EOF
[wazuh]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=EL-\$releasever - Wazuh
baseurl=https://packages.wazuh.com/4.x/yum/
protect=1
EOF
WAZUH_MANAGER="IP-OF-WAZUH-MANAGER" yum install wazuh-agent
请将WAZUH_MANAGER参数值替换为Wazuh-manager主机的IP地址
systemctl daemon-reload
systemctl enable wazuh-agent
systemctl start wazuh-agent
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/wazuh.repo
登录kibana web平台查看配置结果
从下面的截图可以看到,Wazuh提供的安全管理功能是非常丰富的,有很多维度和层次,图形化界面的展示使用体验也很不错。
Wazuh server 服务的配置管理
配置远程服务的地址
编辑/var/ossec/etc/ossec.conf文件,使用remote标签可以自定义服务监听使用的本地ip地址。
<ossec_config>
<remote>
<local_ip>172.17.116.129</local_ip>
</remote>
</ossec_config>
systemctl restart wazuh-manager
设置报警级别
/var/ossec/etc/ossec.conf文件,alerts标签:
<ossec_config>
<alerts>
<log_alert_level>3</log_alert_level>
<email_alert_level>12</email_alert_level>
</alerts>
</ossec_config>
# 这里设置的是可以触发报销消息的最低事件级别阈值,从低至高共16个级别
systemctl restart wazuh-manager
与外部API接口进行功能集成
Wazuh可以按需和外部的其他事件管理、监控报警管理平台进行集成,自动地将将定级别或类别的报警消息发送到第三方的平台上去,以实现统一的事件管理。
使用/var/ossec/etc/ossec.conf文件,integration标签:
<!--Custom external Integration -->
<integration>
<name>custom-integration</name>
<hook_url>WEBHOOK</hook_url>
<level>10</level>
<group>multiple_drops|authentication_failures</group>
<api_key>APIKEY</api_key> <!-- Replace with your external service API key -->
<alert_format>json</alert_format>
</integration>
- 只有name属性是必填的,该参数值是自定义脚本文件的文件名
- 自定义脚本必须要以"custom-"作为文件名的前缀,可以是shell或python脚本文件
- 自定义脚本必须读取和解析处理命令行参数,其中参数1对应着包含报警消息内容的文件、参数2对应着api_key的值、参数3对应着hook_url的值。
- 在ossec.conf–integration中除name参数是必填外,其它参数均是选填。
自定义脚本文件的部署路径与权限设置:
chmod 750 /var/ossec/integrations/custom-script
chown root:ossec /var/ossec/integrations/custom-script
以下是实现与jira API功能集成的一个自定义脚本示例:
#!/usr/bin/env python
import sys
import json
import requests
from requests.auth import HTTPBasicAuth
# Read configuration parameters
alert_file = open(sys.argv[1])
user = sys.argv[2].split(':')[0]
api_key = sys.argv[2].split(':')[1]
hook_url = sys.argv[3]
# Read the alert file
alert_json = json.loads(alert_file.read())
alert_file.close()
# Extract issue fields
alert_level = alert_json['rule']['level']
ruleid = alert_json['rule']['id']
description = alert_json['rule']['description']
agentid = alert_json['agent']['id']
agentname = alert_json['agent']['name']
# Set the project attributes ===> This section needs to be manually configured before running!
project_key = 'WT' # You can get this from the beggining of an issue key. For example, WS for issue key WS-5018
issuetypeid = '10002' # Check https://confluence.atlassian.com/jirakb/finding-the-id-for-issue-types-646186508.html. There's also an API endpoint to get it.
# Generate request
headers = {'content-type': 'application/json'}
issue_data = {
"update": {},
"fields": {
"summary": 'Wazuh Alert: ' + description,
"issuetype": {
"id": issuetypeid
},
"project": {
"key": project_key
},
"description": {
'version': 1,
'type': 'doc',
'content': [
{
"type": "paragraph",
"content": [
{
"text": '- Rule ID: ' + str(ruleid) + '\n- Alert level: ' + str(alert_level) + '\n- Agent: ' + str(agentid) + ' ' + agentname,
"type": "text"
}
]
}
],
},
}
}
# Send the request
response = requests.post(hook_url, data=json.dumps(issue_data), headers=headers, auth=(user, api_key))
#print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) # <--- Uncomment this line for debugging
sys.exit(0)
官网参考资料:https://wazuh.com/blog/how-to-integrate-external-software-using-integrator/
配置Wazuh输出报警消息到syslog的方法
使用/var/ossec/etc/ossec.conf文件,syslog_output标签:
<ossec_config>
<syslog_output>
<level>9</level>
<server>192.168.1.241</server>
</syslog_output>
<syslog_output>
<server>192.168.1.240</server>
</syslog_output>
</ossec_config>
systemctl restart wazuh-manager
配置Wazuh输出报警消息到数据库的方法
使用/var/ossec/etc/ossec.conf文件,database_output标签:
<database_output>
<hostname>192.168.1.122</hostname>
<username>MySQLadmin</username>
<password>secret1234</password>
<database>Alerts_DB</database>
<type>mysql</type>
</database_output>
准备好库与用户、权限:
CREATE DATABASE Alerts_DB;
CREATE USER 'MySQLadmin'@'<MANAGER_IP>' IDENTIFIED BY 'secret1234';
GRANT INSERT,SELECT,UPDATE,CREATE,DELETE,EXECUTE on Alerts_DB.* to 'MySQLadmin'@'<MANAGER_IP>';
初始化库表结构:
mysql -u root -p Alerts_DB < src/os_dbd/mysql.schema
systemctl restart wazuh-manager
配置Wazuh每天生成一份报告
使用/var/ossec/etc/ossec.conf文件,reports标签:
<ossec_config>
<reports>
<category>syscheck</category>
<title>Daily report: File changes</title>
<email_to>example@test.com</email_to>
</reports>
</ossec_config>
- 将syscheck类别的报警消息发给指定邮箱
配置邮件发送服务
使用/var/ossec/etc/ossec.conf文件,global标签:
<ossec_config>
<global>
<email_notification>yes</email_notification>
<email_to>me@test.com</email_to>
<smtp_server>mail.test.com</smtp_server>
<email_from>wazuh@test.com</email_from>
</global>
</ossec_config>
- email_to参数值只能填写一个邮件地址,但email_to参数允许使用多个
- Wazuh不支持smtp认证,如果需要进行smtp认证则请参照这份资料配置一个代理: configure a server relay
更加细粒度的邮件报警配置方法:
<ossec_config>
<email_alerts>
<email_to>alice@test.com</email_to>
<event_location>server1|server2</event_location>
</email_alerts>
<email_alerts>
<email_to>is@test.com</email_to>
<event_location>/log/secure$</event_location>
</email_alerts>
<email_alerts>
<email_to>bob@test.com</email_to>
<event_location>192.168.</event_location>
</email_alerts>
<email_alerts>
<email_to>david@test.com</email_to>
<level>12</level>
</email_alerts>
</ossec_config>
systemctl restart wazuh-manager
Wazuh agent的安装、注册与配置管理
部署Wazuh Agent常用的环境变量
Linux系统下的常用环境变量:
- WAZUH_MANAGER
- WAZUH_MANAGER_PORT
- WAZUH_PROTOCOL
- WAZUH_REGISTRATION_SERVER
- WAZUH_REGISTRATION_PORT
- WAZUH_REGISTRATION_PASSWORD
- WAZUH_KEEP_ALIVE_INTERVAL
- WAZUH_TIME_RECONNECT
- WAZUH_REGISTRATION_CA
- WAZUH_REGISTRATION_CERTIFICATE
- WAZUH_REGISTRATION_KEY
- WAZUH_AGENT_NAME
- WAZUH_AGENT_GROUP
- ENROLLMENT_DELAY
变量参数的详细说明,可以参见:https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/client.html
其它操作系统环境,请参见:https://documentation.wazuh.com/current/user-manual/deployment-variables/deployment-variables.html
使用示例:
WAZUH_MANAGER="10.0.0.2" WAZUH_REGISTRATION_PASSWORD="TopSecret" \
WAZUH_AGENT_NAME="yum-agent" yum install wazuh-agent
WAZUH_MANAGER="10.0.0.2" WAZUH_REGISTRATION_SERVER="10.0.0.2" WAZUH_REGISTRATION_PASSWORD="TopSecret" \
WAZUH_AGENT_GROUP="my-group" yum install wazuh-agent
WAZUH_MANAGER="10.0.0.2" WAZUH_REGISTRATION_SERVER="10.0.0.2" WAZUH_AGENT_NAME="yum-agent" \
WAZUH_REGISTRATION_CA="rootCA.pem" yum install wazuh-agent
WAZUH_MANAGER="10.0.0.2,10.0.0.3" WAZUH_REGISTRATION_SERVER="10.0.0.2" \
WAZUH_AGENT_NAME="yum-agent" yum install wazuh-agent
WAZUH_MANAGER "10.0.0.2" WAZUH_REGISTRATION_SERVER "10.0.0.2" WAZUH_REGISTRATION_KEY "/var/ossec/etc/sslagent.key" \
WAZUH_REGISTRATION_CERTIFICATE "/var/ossec/etc/sslagent.cert" yum install wazuh-agent
Wazuh agent 注册
Agent 注册是将Wazuh Agent注册为Wazuh安全管理服务的授权成员的过程。
Agent 注册包含以下工作:
- Wazuh manager可以批准Agent注册并为其生成唯一密钥。
- 使用密钥加密manager和agent之间的通信。
- 验证与manager通信的agent的身份。
注册方法:
- 通过agent配置进行注册:一旦指定了manager的IP地址,agent将能够自动请求密钥并将其导入。这是推荐的注册方法。
- 通过manager API进行注册:用户需要先从manager API请求密钥,然后手动将其导入agent以完成注册过程。
依赖条件:
- 已安装并正在运行的Wazuh manager服务。
- 在用户需要注册的主机节点上安装并运行Wazuh agent。
- 放行从Wazuh agent到Wazuh manager服务的出站连接。
以下端口可配置:
- 1514/TCP for agent communication.
- 1515/TCP for enrollment via automatic agent request.
- 55000/TCP for enrollment via manager API.
/var/ossec/etc/ossec.conf配置文件,
配置标签:
<client>
<server>
<address>MANAGER_IP</address>
</server>
</client>
- 以上配置将允许agent连接到manager并自动获取一个密钥。
可选地,使用下面更加定制化的配置方法:
/var/ossec/etc/ossec.conf配置文件,配置标签:
<client>
<enrollment>
<agent_name>EXAMPLE_NAME</agent_name>
<groups>GROUP1,GROUP2,GROUP3</groups>
</enrollment>
</client>
- 在完成agent注册的同时,可以指定agent name, groups属性设置。
以上配置变更,需要重启agent服务以生效:
systemctl restart wazuh-agent
通过manager API进行agent注册的方法,实际上是将上面自动注册的步骤拆解并由人工方式完成,包括了登录接口获取token、请求获取key密钥以及在agent本地导入密钥等操作步骤,详情可参见:https://documentation.wazuh.com/current/user-manual/agent-enrollment/via-manager-API/index.html 。
Wazuh agent 注册的附加安全选项
注:以下安全选项不支持API注册方式。
增加密码认证
manager服务节点的 /var/ossec/etc/ossec.conf文件,增加auth标签:
<auth>
<use_password>yes</use_password>
</auth>
manager服务节点增加/var/ossec/etc/authd.pass文件,用于维护一个密码参数:
echo "<CUSTOM_PASSWORD>" > /var/ossec/etc/authd.pass
chmod 644 /var/ossec/etc/authd.pass
chown root:wazuh /var/ossec/etc/authd.pass
systemctl restart wazuh-manager
注:如果未维护一个authd.pass的文件,则在重启manager服务后会在 /var/ossec/logs/ossec.log中打印一个随机密码,需要注意的是该随机密码在重启manager服务时会随之变化。
在Wazuh agent侧增加密码文件 /var/ossec/etc/authd.pass:
echo "<CUSTOM_PASSWORD>" > /var/ossec/etc/authd.pass
chmod 644 /var/ossec/etc/authd.pass
chown root:wazuh /var/ossec/etc/authd.pass
增加访问manager服务时的身份验证
如果在部署Wazuh服务时已经一次性制作好了所有服务组件的证书文件,那可以跳过制作manager服务证书的步骤。
否则,请参考下面链接为manager服务生成一份证书文件:
https://documentation.wazuh.com/current/user-manual/agent-enrollment/security-options/manager-identity-verification.html
设置agent服务在注册时引用根证书 /var/ossec/etc/ossec.conf:
<client>
<server>
<address>MANAGER_IP</address>
</server>
<enrollment>
<server_ca_path>/path/to/rootCA.pem</server_ca_path>
</enrollment>
</client>
增加访问agent服务时的身份验证
如果在部署Wazuh服务时已经一次性制作好了所有服务组件的证书文件,那可以跳过制作agent证书的步骤。
否则,请参考下面链接为Wazuh agent生成一份证书文件:
https://documentation.wazuh.com/current/user-manual/agent-enrollment/security-options/agent-identity-verification.html
Wazuh manager节点:
需确认部署了/var/ossec/etc/rootCA.pem证书文件。
需要在/var/ossec/etc/ossec.conf中增加引用agent证书的配置参数:
<auth>
<ssl_agent_ca>/var/ossec/etc/rootCA.pem</ssl_agent_ca>
</auth>
Wazuh agent节点:
将agent证书 sslagent.cert 、sslagent.key部署到agent节点上一份。
在agent节点 /var/ossec/etc/ossec.conf中增加引用证书文件的配置参数:
<client>
<server>
<address>MANAGER_IP</address>
</server>
<enrollment>
<agent_certificate_path>CERTIFICATE_PATH</agent_certificate_path>
<agent_key_path>KEY_PATH</agent_key_path>
</enrollment>
</client>
在变更配置和重启服务后,如果出现服务异常或报错,那么优先通过查看日志 /var/ossec/logs/ossec.log 进行原因分析。
管理Wazuh agent
查看与删除agent
查看所有agents的命令: /var/ossec/bin/agent_control -l
查看连接状态的agents的命令:/var/ossec/bin/manage_agents -l
此外,也可以登录Wazuh web界面,在Agents标签页中查看和管理agents。
删除agents的命令:/var/ossec/bin/manage_agents,需人工交互式选择并确认
或者可以免确认式操作,删除指定ID的agent:
/var/ossec/bin/manage_agents -r 001
Wazuh agent的分组配置
有两种方式配置agent的分组功能,一个是本地配置方式,另一个是通过远程集中配置的方式,后一方式更有利于灵活、高效的对agents进行分组管理。
我们接下来,主要介绍远程集中配置agent分组的方法。
将ID为002的agent加入到名为dbms的分组中:
/var/ossec/bin/agent_groups -a -i 002 -g dbms
查看dbms组中有哪些agents:
/var/ossec/bin/agent_groups -l -g dbms
当创建了一个新的分组后,会生成以下相应的组配置文件,我们针对该组配置文件做的变更会自动同步到组内所有的agents节点上去:
/var/ossec/etc/shared/dbms/agent.conf
- 这个组配置文件变更信息的分发同步操作并不是实时的,但会在20min内完成
将一个agent加入到多个分组的方法:
/var/ossec/bin/agent_groups -a -i 001 -g webserver
/var/ossec/bin/agent_groups -a -i 001 -g apache
查询一个agent属于哪些分组的方法:
/var/ossec/bin/agent_groups -s -i 001
- 注意,当agent从属于多个分组时,越是排位在后面的分组,其优先级越高
重置agent的分组设置的方法:
/var/ossec/bin/agent_groups -a -f -i 001 -g apache
- 增加了一个
-f
参数,会完全覆盖掉旧有的分组信息
查看指定agent分组信息的数据同步状态:
/var/ossec/bin/agent_groups -S -i 001
查看服务配置信息
登录web控制台后,可以查看接入管理的agents配置参数信息,可以查看和管理manager配置信息,以及对接受管理的agents做管理。
制作与部署Wazuh数字证书
Wazuh证书与脚本工具
我们使用官方提供的证书管理工具—— wazuh-certs-tool.sh,来制作部署Wazuh服务使用的各种证书。
在安装Wazuh服务中使用的三种证书:
- root-ca,根证书,用来对其它证书进行签名
- node,节点证书,运行Wazuh indexer的节点都需要使用这个证书,且该node节点的IP需要包含在证书内。
- admin,管理员证书是具有管理和安全相关任务所需特权的客户端证书。
创建包括rootCA在内的全套Wazuh证书
使用上述脚本工具创建的数字证书,默认使用以下参数值:
C: US
L: California
O: Wazuh
OU: Wazuh
CN: Name of the node
需要根据实际信息,准备配置文件config.yml:
nodes:
# Wazuh indexer nodes
indexer:
- name: node-1
ip: <indexer-node-ip>
# - name: node-2
# ip: <indexer-node-ip>
# - name: node-3
# ip: <indexer-node-ip>
# Wazuh server nodes
# Use node_type only with more than one Wazuh manager
server:
- name: wazuh-1
ip: <wazuh-manager-ip>
# node_type: master
# - name: wazuh-2
# ip: <wazuh-manager-ip>
# node_type: worker
# Wazuh dashboard nodes
dashboard:
- name: dashboard
ip: <dashboard-node-ip>
- 这里的node-ip既可以直接使用IP地址,也可以使用DNS名称
在准备好config.yml文件后,使用以下命令一键创建所有的证书:
bash wazuh-certs-tool.sh -A
wazuh-certificates/
├── admin-key.pem
├── admin.pem
├── dashboard-key.pem
├── dashboard.pem
├── indexer-key.pem
├── indexer.pem
├── root-ca.key
├── root-ca.pem
├── server-key.pem
└── server.pem
注:使用wazuh-certs-tool.sh工具创建的证书有效期默认值均为10年。
使用已有rootCA创建Wazuh服务证书
bash wazuh-certs-tool.sh -A /path/to/root-ca.pem /path/to/root-ca.key