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的环境,给大家做一个演示。

注:以下测试,我们都是基于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
posted @ 2023-03-27 11:20  哈喽哈喽111111  阅读(1256)  评论(0编辑  收藏  举报