wazuh 服务器
Wazuh管理器是分析从所有注册代理接收到的数据的系统,当事件符合规则时触发警报,例如:检测到入侵、文件修改、配置不符合策略、可能的rootkit,等等。manager还作为本地机器上的代理进行操作,因此它具有代理所具有的所有特性。此外,管理员还可以通过系统日志、电子邮件或集成的外部api转发它所触发的警报。
-------这主要是一些常用XML配置标签的解释------
远程服务器:<remote>
可以配置Wazuh管理器来发布代理使用的远程服务,如下所示:
远程服务的所有配置都是通过使用< remote > XML标记的ossec .conf文件完成的。远程配置中详细介绍了可用的选项。
connection:指定要接受的传入连接的类型:secure或syslog。
prot:指定用于侦听事件的端口。
protocol:指定要使用的协议。它可用于安全连接和syslog事件。
allowed-ips:允许向服务器发送syslog消息的IP地址列表(每行一个)。
denied-ips:不允许向服务器发送syslog消息的IP地址列表(每行一个)。
local_ip:用于侦听连接的本地ip地址。
ipv6:本地IP地址是否为IPv6
queque_size:以代理事件的数量设置远程守护进程队列的容量。
您可以通过以下配置更改用于侦听服务的IP地址:
<remote>
<connection>syslog</connection>
<port>514</port>
<protocol>udp</protocol>
<allowed-ips>192.168.1.0/24</allowed-ips>
<local_ip>192.168.1.5</local_ip>
</remote>
这将把管理器监听IP地址设置为192.168.1.5。
当更改ossec .conf文件中的任何值时,必须重新启动服务,这些更改才会生效。
对于Systemd:
systemctl restart wazuh-manager
对于SysV初始化:
service wazuh-manager restart
定义报警阈值<alerts>
由Wazuh代理收集的每个事件都被传输到Wazuh管理器。管理器将根据它与规则集中的哪些规则匹配来为事件分配严重性级别。默认情况下,它将只记录严重性级别为3或更高的警报。
警报级别阈值是使用<alerts> XML标记在ossec .conf文件中配置的。警报参考中详细介绍了可用的选项(级别为1~16)
log_alert_level:设置 将存储为alert .log和/或alert .json的警报信息 的最低严重性级别。
email_alert_level:设置 生成电子邮件通知的警报信息 的最低严重性级别。
use_geoip:这个选项没有效果,并且会导致解析错误,除非用LIBGEOIP_ENABLED编译。
默认配置:
<alerts>
<log_alert_level>3</log_alert_level>
<email_alert_level>12</email_alert_level>
</alerts>
当更改ossec .conf文件中的任何值时,必须重新启动服务,这些更改才会生效。(操作见上面远程服务)
wazuh-Integrator守护进程-集成外部API和警报工具<integration>
Integrator守护进程允许Wazuh连接到外部api和警报工具,如Slack、PagerDuty和VirusTotal。
集成配置在位于Wazuh安装文件夹(/var/ossec/etc/)中的ossec.conf文件中。要配置集成,请在<ossec_config>部分中添加以下配置:
name:这表示要集成的服务。
hook_url:这是当在Slack端启用集成时,Slack提供的URL。这对Slack来说是强制性的。
api_key:这是从PagerDuty或VirusTotal API检索到的键。这对于PagerDuty和VirusTotal是强制性的。
可选择的过滤器:
level:这将按规则级别筛选警报,以便只推送具有指定级别或更高级别的警报。
rule_id:它根据规则ID过滤警报
group:此操作按规则组筛选警报。对于VirusTotal集成,只有来自syscheck组的规则可用。
event_location:这将根据事件的起源来筛选警报。遵循OS_Regex语法。https://documentation.wazuh.com/3.13/user-manual/ruleset/ruleset-xml-syntax/regex.html#os-regex-syntax
alert_format:这将以JSON格式写入警报文件。积分器使用此文件来获取字段值。
max_log: 将发送给积分器的警报片段的最大长度。较长的字符串将被截断…
配置示例:
<integration>
<name> </name>
<hook_url> </hook_url> <!-- Required for Slack -->
<api_key> </api_key> <!-- Required for PagerDuty and VirusTotal -->
<!-- Optional filters -->
<rule_id> </rule_id>
<level> </level>
<group> </group>
<event_location> </event_location>
</integration>
可以在这里找到Integrator守护进程的完整配置参考示例(Slack、PagerDuty和VirusTotal或者自定义外部集成):
启用守护进程并配置集成后,重新启动Wazuh管理器以应用更改: (操作见上面远程服务)
wazuh官方目前集成了virusTotal 监控文件中的恶意内容,下面链接中介绍了ViruTotal的功能
配置系统日志输出<ossec_config><syslog_output>
Syslog输出在ossec .conf文件中配置。Syslog输出中详细介绍了所有可用选项。
server:syslog服务器的IP地址或主机名。
port:要将警报转发到的端口。
level:要转发的警报的最低级别。
group:要转发的警报的规则组。
rule_id:要转发的警报的rule_id。
location:location字段表示警报的原点,可以为:(syscheck、rootcheck、File path、Command or its alias、command_tag(wodle)、aws-cloudtrail、vulnerability-detector、syscollector)
use_fqdn:切换服务器上配置的完整或截断的主机名。默认情况下,ossec在生成syslog消息时截断第一个句点(' . ')的主机名。
format:警报输出的格式。当启用全局部分中的jsonout_output时,警报将从alerts.json格式的警报中读取出来,而不是alerts.log 的json格式
配置示例:
<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>
上面的配置将发送警报到192.168.1.240,如果警报级别高于9,还将发送警报到192.168.1.241。
要应用更改,重新启动Wazuh: (操作见上面远程服务)
配置数据库输出
可以配置Wazuh将警报输出到数据库中。为此,用户必须使用用户想要使用的数据库类型编译Wazuh。
目前支持MySQL和PostgreSQL数据库。(接下来是数据库系统配置数据库输出说明)
(注意:用户事前安装了MySQL或PostgreSQL,并且知道如何创建用户和数据库。如果需要说明如何在用户的主机上安装它们,请在本节的后面找到一些主要发行版的教程。)
1、要启用数据库输出,需要为用户想要配置的数据库系统安装开发库
MySQL:
RPM: yum install mysql-devel
Debian: apt-get install libmysqlclient-dev
PostgreSQL:
RPM: yum install postgresql-devel
Debian: apt-get install libpq-dev
2、如前所述,可以在使用要使用的数据库类型编译Wazuh时启用数据库输出。在源代码安装指南中,用户必须在运行install.sh脚本之前预编译源代码。在安装指南中的第3步之前执行以下命令: (源码安装指南wazuh服务器官方文档:https://documentation.wazuh.com/3.13/installation-guide/installing-wazuh-manager/index.html#wazuh-server-installation)
cd wazuh-*/src
make deps && make TARGET=server DATABASE=<mysql/pgsql>
要指示用户将使用哪种数据库,用户需要使用数据库标志。允许的值是mysql或pgsql。编译过程可能需要一些时间。完成此过程后,请继续使用源代码安装指南。现在Wazuh将与数据库支持一起安装(安装具有数据库支持的Wazuh),但我们必须在配置之后手动启用该特性。
3、数据库配置:现在我们已经安装了具有数据库支持的Wazuh,我们需要设置数据库服务器。我们将根据您的数据库系统,使用以下命令创建一个新的数据库,设置数据库用户并添加模式(位于源代码的src/os_dbd目录):
MySQL:
mysql -u root -p

mysql -u root -p Alerts_DB < src/os_dbd/mysql.schema
PostgreSQL:

4、wazuh配置
为了让Wazuh将警报和其他数据输出到数据库中,用户必须在配置文件/var/os /etc/os .conf上添加<database_output>节。用正确的数据库名称和凭据填充块。主机名必须是数据库服务器的IP地址。
hostname:指定数据库服务的IP地址
username:指定访问的数据库的用户名
password:指定访问数据库的密码
database:指定要存储报警的数据库的名称
type:数据库类型 ( MySQL或者PostgreSQL )
<database_output>
<hostname>192.168.1.122</hostname>
<username>MySQLadmin</username>
<password>secret1234</password>
<database>Alerts_DB</database>
<type>mysql</type>
</database_output>
5、数据库输出的设置过程已经完成。现在唯一剩下的事情是重新启动Wazuh管理器: (操作见上面远程服务)
自动生成报告<reports>
每日报告是每天触发的警报的摘要。您可以使用ossec .conf文件中的报表选项来配置自己的自定义报表。有关如何配置电子邮件警报的信息,请参阅下一节的:配置电子邮件警报和带有身份验证的SMTP服务器部分。
group:过滤器组/类别。它只接收一个组/类别。(允许使用任何组。任何sregex表达式)
category:过滤器组/类别
rule:要筛选的规则ID
level:要筛选的警报级别。报告将包括所有以上的级别,包括指定的级别
location:根据日志位置或者代理名称进行筛选
srcip:根据事件的源IP进行筛选
user:按用户名进行筛选。这将匹配srcuser或dstuser。
title:报告的名称。这是一个必需的字段。
email_to:发送完成报告的电子邮件地址。这是一个必需的字段。
showlogs:在创建报表时启用或禁用包含日志。
<reports>
<title>Auth_Report</title>
<group>authentication_failed,</group>
<srcip>192.168.1.10</srcip>
<email_to>recipient@example.wazuh.com</email_to>
<showlogs>yes</showlogs>
</reports>
<reports>
<title>List of logged users</title>
<rule>535</rule>
<email_to>recipient@example.wazuh.com</email_to>
<srcip>192.168.1.10</srcip>
<showlogs>yes</showlogs>
</reports>
<ossec_config>
<reports>
<category>syscheck</category>
<title>Daily report: File changes</title>
<email_to>example@test.com</email_to>
</reports>
</ossec_config>
上面的第三种配置会将所有syscheck警报的每日报告发送到example@test.com。
<ossec_config>
<reports>
<level>10</level>
<title>Daily report: Alerts with level higher than 10</title>
<email_to>example@test.com</email_to>
</reports>
</ossec_config>
上面的配置将发送一个报告,其中包含所有级别高于10的规则。
报告的预览可以通过管道将alerts.log文件的内容发送到ossec-reportd守护进程来生成: cat /var/ossec/logs/alerts/alerts.log | /var/ossec/bin/ossec-reportd -n "Daily report: Alerts with level higher than 10" -s -f level 10 2> report-test.txt
配置电子邮件警报<global>
Wazuh可以被配置为在某些规则被触发或用于每日事件报告时向一个或多个电子邮件地址发送电子邮件警报。
为了配置Wazuh发送电子邮件警报,电子邮件设置必须配置在ossec.conf文件的<global>部分:
alerts_log:这将切换警报的写入到/var/ossec/log /alerts/alerts.log。
email_notification:这可以切换电子邮件提醒的使用。
email_to:指定警报的电子邮件收件人。
注意:基本配置必须包括在这部分,以使用后面更细致的电子邮件配置,
email_from:这指定了包含在电子邮件警报中的“源”地址。
email_reply_to:这指定了包含在电子邮件警报中的“reply_to”地址。
smtp_server:此选项定义用于交付警报的SMTP服务器。
helo_server:这个选项定义ossec服务器在发送邮件时如何标识自己。email_maxperhour:
email_idsname:这设置了每小时可以发送的电子邮件警报的最大数量。超过这一小时阈值的所有电子邮件将在一小时结束时排队一起发送到单个电子邮件中。
email_log_source:这将选择要从中读取的警报文件。
custom_alert_output:下面的值可以与此选项一起用于指定写入alerts.log的警报的格式:

states:这将为统计分析生成的事件设置严重级别。
logall:这将切换是否存储事件,即使它们没有违反将结果写入/var/ossec/log /archives/archives.log的规则。
logall_json:这将切换是否存储事件,即使它们没有违反将结果写入/var/ossec/log /archives/archives.json的规则。
memory_size:这将设置事件关联引擎的内存大小。
white_list:这指定了一个不会触发活动响应的IP。每个<while e_list>标签只能指定一个IP,但是多个IPs可以通过包含多个<white_list>标签来使用。
host_information:这将为主机更改监视器生成的事件设置严重级别。
jsonout_output:这会将json格式的警报的编写切换到/var/ossec/log /alerts/alerts.json,其中包含发送到警报的相同事件。日志,只有在JSON格式。
prelude_output:这将切换前奏输出。
prelude_log_level:触发前奏输出所需的最小警报级别。
prelude_profile:序曲客户端分析器名称。
zeromq_output:这允许ZeroMQ输出。
zeromq_uri:这将指定发布者套接字要绑定到的ZeroMQ URI。
geoipdb:这表示MaxMind GeoIP IPv4数据库文件的完整路径。
rotate_interval:此选项设置文件旋转之间的间隔。可能值的范围从10m(10分钟)到1d(1天)。
max_output_size:这将设置警报文件的大小限制,最大允许值为1TiB,最小允许值为1MiB。
<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_alert_level设置为触发电子邮件的最小警报级别。默认情况下,这个级别设置为12。
<ossec_config>
<alerts>
<email_alert_level>10</email_alert_level>
</alerts>
...
</ossec_config>
这个示例将最小级别设置为10。有关更多信息,请参见警告部分。
在配置了alert_level之后,需要重新启动Wazuh,使更改生效。(操作见上面远程服务)
更细致的电子邮件配置:
email_to:这指定了要发送电子邮件警报的单个电子邮件地址。如果要向多个地址发送警报,必须在单独的<email_to>部分中列出每个地址。不允许列表。
level:这是发送电子邮件的最低警戒级别。
注意:level选项应该设置在配置的<alerts>部分中的email_alert_level上或上面。
请记住,如果这里的级别小于上一节中配置的email_alert_level,则不会发送该级别。
group:这就限制了只在规则出错时发送邮件,而该规则属于所列出的其中一个组。
注意,所有组必须以逗号结束。
event_location:警报必须匹配要转发的事件位置。不要重复指定此选项,因为将只使用最后一个实例。
format:这指定了电子邮件格式。
rule_id:这就限制了仅当具有所列规则id之一的规则[1] 出错时发送电子邮件。
注意:这里可以使用一个或多个规则id,用逗号和空格(",")分隔。
do_not_delay:这将使电子邮件警报立即发送,而不是为了将多个警报批量处理在一起而延迟发送。
do_not_group:这将禁止将多个警报分组到同一电子邮件中。
注意,do_not_delay和do_not_group是特殊的空元素XML标记,因此它们是独立的,没有标记的开始和结束版本。这是通过在名称末尾包含“/”的标记名称来表示的。
官方文档有很多示例:
<email_alerts>
<email_to>recipient@example.wazuh.com</email_to>
<email_to>recipient2@example.wazuh.com</email_to>
<level>12</level>
<group>sshd,</group>
<do_not_delay/>
</email_alerts>
当server1上的规则触发时,它将向you@example.com发送一封电子邮件。
event_location字段可以配置为监视特定的日志、主机名或网络(IP)。
通过电子邮件强制转发警报<rule>
还可以对低于配置的最低级别的规则声明强制发送电子邮件警报。为此,您需要使用以下选项之一。(使用日志审计的规则制定)
这个选项的可能值是:
alert_by_email:总是通过电子邮件提醒。
no_email_alert:永远不要通过电子邮件提醒。
no_log:不要记录此警告。
<rule id="502" level="3">
<if_sid>500</if_sid>
<options>alert_by_email</options>
<match>Ossec started</match>
<description>Ossec server started.</description>
</rule>
该配置将在每次触发规则502时发送一封电子邮件,而不管最小级别设置为什么。
带有身份验证的SMTP服务器
如果您的SMTP服务器使用身份验证(例如,像Gmail),服务器中继将需要配置为Wazuh不支持这一点。可以配置Postfix来提供此功能。以下指南描述了使用Postfix发送电子邮件所需的最小配置:https://documentation.wazuh.com/3.13/user-manual/manager/manual-email-report/smtp_authentication.html
[1]这个规则具体指的什么规则?示例中的515和516分别代表什么?(后面再看一下源码)
1万+





