为了及时发现和处理安全事件,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的资料也不多,经过一番折腾,终于搭建成功。
官方的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 # 邮件传输安全级别
在single-node/config/wazuh_cluster
文件夹下,有个wazuh_manager.conf
的配置文件,涉及到邮件告警的相关配置,修改参考如下:
yes
yes
no
no
yes
wazuh-smtp # Postfix服务的主机名
user@example.com # 发件人邮箱
user@example.com # 收件人邮箱
12 # 每小时最大邮件发送次数
alerts.log
10m
0
3 # 日志告警级别
12 # 邮件告警级别
在single-node
目录下,使用以下命令启动Docker Compose:
docker-compose up -d
使用以下命令检查Wazuh和Postfix服务的状态:
docker-compose ps
确保所有服务都在正常运行状态。
使用以下命令查看Wazuh和Postfix的日志:
docker-compose logs -f
由于触发邮箱告警的最低等级为12,因此可以自定义一个新的告警规则来触发测试,例如ssh暴力破解攻击。
在前面的docker compose配置文件中,如果默认没修改位置的情况下,wazuh-manager的自定义规则配置文件一般在类似这个路径下:/var/lib/docker/volumes/wazuh-project_wazuh_etc/_data/rules/local_rules.xml
。
可以在这个文件中添加以下内容:
5710
Failed password
SSH authentication failed (自定义等级提升)
5710规则是属于0095-sshd_rules.xml文件中的规则,表示SSH认证失败,默认告警级别是10。通过添加这个自定义规则,我们将其告警级别提升到12,以确保能够触发邮件告警。
可以通过模拟SSH暴力破解攻击来测试告警规则是否生效,前面的规则配置只需要尝试一次登录并失败就能触发。
# 模拟SSH攻击
ssh user@server -p 22
可以通过查看Postfix的日志来验证告警邮件是否成功发送。使用以下命令查看Postfix的日志:
docker-compose logs -f
如果发现没有收到任何告警邮件,请检查日志,根据日志反馈信息进行调整。
如果在前面发现确实有问题,可以尝试进入容器内部进行进一步的实时测试,判断邮件发送功能本身是否正常。
docker exec -it 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
参与评论
手机查看
返回顶部