wazuh-docker的邮件告警配置

Wazuh-docker的邮件告警配置

缘由

为了及时发现和处理安全事件,Wazuh需要通过邮件发送告警信息。

默认情况下,Wazuh使用Postfix作为邮件传输代理(MTA),因此需要对Postfix进行相应的配置,以确保告警邮件能够成功发送。

Wazuh我是用官方提供的docker compose部署的,如果是直接物理机上部署的Wazuh,请参考这个官方文档:https://Wazuh.com/blog/how-to-send-email-notifications-with-Wazuh/

原本参照官方文档在宿主主机安装了postfix,但由于各种原因,发现怎么都连不通。

最后还是选择修改docker compose文件,直接用docker去部署postfix。网络上有关docker部署postfix的资料也不多,经过一番折腾,终于搭建成功。

修改docker compose文件

官方的Wazuh-docker源代码项目位置:https://github.com/wazuh/wazuh-docker

采用的单节点部署方式,文件路径为single-node/docker-compose.yml

在这个文件中,我们需要添加一个Postfix服务,并配置Wazuh使用这个服务发送邮件。

邮件发送是用QQ企业邮箱来发送,有关QQ邮箱的相关配置这里不再陈述,有需要可自行查询。
docker部署的postfix版本,是用boky/postfix:4.4.0

源代码项目地址为:https://github.com/bokysan/docker-postfix,如果有进一步配置参数的需要,可以看文档资料,例如OAtuh2加密连接配置。

在文件中添加以下内容:

  postfix:
    image: boky/postfix:4.4.0
    hostname: wazuh-smtp
    restart: always
    environment:
      - HOSTNAME=wazuh-smtp
      - RELAYHOST=smtp.exmail.qq.com:465        # QQ企业邮箱SMTP服务器地址
      - RELAYHOST_USERNAME=user@example.com     # QQ企业邮箱SMTP用户名
      - RELAYHOST_PASSWORD=your_password        # QQ企业邮箱SMTP客户端专用密码
      - ALLOWED_SENDER_DOMAINS=example.com      # 允许发送邮件的域名
      - POSTFIX_smtp_tls_security_level=encrypt # 邮件传输安全级别
    volumes:
      - postfix_config:/etc/postfix             # Postfix配置文件目录

启动后,Postfix服务将会自动启动并运行。

接着去宿主机上找到类似/var/lib/docker/volumes/postfix_config/_data/这种目录下,打开main.cf文件,进行相应的配置。

smtp_tls_security_level = encrypt下添加该项smtp_tls_wrappermode = yes

修改inet_protocols = allinet_protocols = ipv4,修改这个原因是为了强制使用IPv4协议,避免在某些环境下出现IPv6连接问题,至少QQ这个用IPv6连接是连不上的。

配置Wazuh使用Postfix发送邮件

single-node/config/wazuh_cluster文件夹下,有个wazuh_manager.conf的配置文件,涉及到邮件告警的相关配置,修改参考如下:

  <global>
    <jsonout_output>yes</jsonout_output>
    <alerts_log>yes</alerts_log>
    <logall>no</logall>
    <logall_json>no</logall_json>
    <email_notification>yes</email_notification>
    <smtp_server>wazuh-smtp</smtp_server>           # Postfix服务的主机名
    <email_from>user@example.com</email_from>       # 发件人邮箱
    <email_to>user@example.com</email_to>           # 收件人邮箱
    <email_maxperhour>12</email_maxperhour>         # 每小时最大邮件发送次数
    <email_log_source>alerts.log</email_log_source> 
    <agents_disconnection_time>10m</agents_disconnection_time>
    <agents_disconnection_alert_time>0</agents_disconnection_alert_time>
  </global>

  <alerts>
    <log_alert_level>3</log_alert_level>            # 日志告警级别
    <email_alert_level>12</email_alert_level>       # 邮件告警级别
  </alerts>

启动部署和调试运行

启动Docker Compose

single-node目录下,使用以下命令启动Docker Compose:

docker-compose up -d

检查服务状态

使用以下命令检查Wazuh和Postfix服务的状态:

docker-compose ps

确保所有服务都在正常运行状态。

查看日志

使用以下命令查看Wazuh和Postfix的日志:

docker-compose logs -f <容器ID>

新增自定义告警规则

由于触发邮箱告警的最低等级为12,因此可以自定义一个新的告警规则来触发测试,例如ssh暴力破解攻击。

在前面的docker compose配置文件中,如果默认没修改位置的情况下,wazuh-manager的自定义规则配置文件一般在类似这个路径下:/var/lib/docker/volumes/wazuh-project_wazuh_etc/_data/rules/local_rules.xml

可以在这个文件中添加以下内容:

<group name="sshd, brute_force">
  <rule id="5710" level="12" overwrite="yes">
    <if_sid>5710</if_sid>
    <match>Failed password</match>
    <description>SSH authentication failed (自定义等级提升)</description>
  </rule>
</group>

5710规则是属于0095-sshd_rules.xml文件中的规则,表示SSH认证失败,默认告警级别是10。

通过添加这个自定义规则,我们将其告警级别提升到12,以确保能够触发邮件告警。

测试告警规则

可以通过模拟SSH暴力破解攻击来测试告警规则是否生效,前面的规则配置只需要尝试一次登录并失败就能触发。

# 模拟SSH攻击
ssh user@server -p 22

验证告警邮件

可以通过查看Postfix的日志来验证告警邮件是否成功发送。使用以下命令查看Postfix的日志:

docker-compose logs -f <postfix容器ID>

如果发现没有收到任何告警邮件,请检查日志,根据日志反馈信息进行调整。

postfix容器中测试

如果在前面发现确实有问题,可以尝试进入容器内部进行进一步的实时测试,判断邮件发送功能本身是否正常。

docker exec -it <容器ID> bash

安装mail,apt安装的是mailutils,而yum需要安装的是mailx

apt-get update
apt-get install -y mailutils  

用下面的命令进行发送邮件测试,-r后面跟着是发送人,再后面是接收人。

echo "Test email from Postfix" | mail -s "Test Email" -r "user@example.com" user@example.com

用命令测试的同时,根据前面的docker logs 观察其日志情况,来对其进行下一步处理。

测试效果

如果一切正常的情况下,你收到的邮件内容大概长这样:

Wazuh Notification.
2025 Aug 26 06:58:16

Received From: (OperationsMaintenance) any->journald
Rule: 100071 fired (level 12) -> "SSH invalid user attempt (自定义等级)"
Src IP: ::1
Portion of the log(s):

Aug 26 06:58:14 S202508019870 sshd[540257]: Invalid user invalid_user from ::1 port 58718
 --END OF NOTIFICATION
posted @ 2025-08-26 16:21  蓝天绮丽梦  阅读(47)  评论(0)    收藏  举报