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:检查服务状态
使用以下命令检查Wazuh和Postfix服务的状态:确保所有服务都在正常运行状态。
查看日志
使用以下命令查看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[540257]: Invalid user invalid_user from ::1 port 58718
- --END OF NOTIFICATION
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |