觐有 发表于 6 小时前

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 # 邮件传输安全级别配置Wazuh使用Postfix发送邮件

在single-node/config/wazuh_cluster文件夹下,有个wazuh_manager.conf的配置文件,涉及到邮件告警的相关配置,修改参考如下:
<global>
    <jsonout_output>yes</jsonout_output>
    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>
    10m</agents_disconnection_time>
    0</agents_disconnection_alert_time>
</global>


    <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 <postfix容器ID><容器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><容器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: Invalid user invalid_user from ::1 port 58718
--END OF NOTIFICATION
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: wazuh-docker的邮件告警配置