在 Flashduty On-call
您可通过以下两种方式获取集成邮件地址,任选其一即可。集成类型都选择邮件 Email,不是 OSSEC。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 邮件 Email,点击 保存
- 打开生成的集成卡片,复制 邮件地址,再按下文配置推送模式
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 邮件 Email,填写集成名称,复制 邮箱地址
- 按下文配置推送模式
- 配置默认路由并选择协作空间,点击 保存
在 Flashduty 中配置推送模式
OSSEC 只在告警产生时发一封邮件,没有恢复邮件,因此不需要「关闭告警」规则。推送模式 选择 根据邮件标题触发或更新告警:同一台主机、同一日志来源、同一等级、同一条规则描述的邮件标题相同,会合并到同一条未关闭的告警上;标题不同的邮件各自产生一条告警。 邮件标题的格式见下文 邮件标题格式。 OSSEC 不会发送恢复通知,请在接收该集成的协作空间中开启 超时自动关闭,建议 24 小时;也可以处理完成后手动关闭。
在 OSSEC 中配置
以下配置在 OSSEC 服务端(server)的
/var/ossec/etc/ossec.conf 中完成,Agent 上不需要配置(告警只在服务端生成)。
1
配置邮件发送
在 Gmail、Outlook.com 等公共邮箱通常不允许未认证的转发,SMTP 服务器需要认证或 TLS 时,参考 OSSEC 官方文档中的 SMTP 认证邮件配置。
<global> 中填写收件人、SMTP 服务器和发件人,把 收件人 设为 Flashduty 邮件集成的地址:2
设置发送邮件的最低等级
3
避免多条告警合并成一封邮件(可选)
OSSEC 默认会把短时间内的多条告警合并到一封邮件,邮件标题只反映其中一条,Flashduty 无法逐条生成告警。如果希望每条告警单独成信,可以用
<email_alerts> 给同一收件人增加一个 <do_not_group /> 和 <do_not_delay /> 的配置(<global> 中必须已有至少一个 <email_to>):<email_alerts> 还可以用 <group>、<rule_id>(逗号分隔)和 <event_location> 进一步限定转发哪些告警。4
重启并验证
- 在被监控主机上触发一条不低于邮件等级的告警,例如对 SSH 服务连续输入错误密码
- 在 Flashduty 中确认收到告警,标题为 OSSEC 邮件标题
- 没有收到时查看 OSSEC 服务端的
/var/ossec/logs/ossec.log,确认 SMTP 发送没有报错
邮件标题格式
OSSEC 邮件默认使用完整标题(内部选项
maild.full_subject=0,默认值),格式为:
-> 之后的日志文件路径不会出现在标题里。标题总长度最多 127 个字符,过长的规则描述会被截断。
邮件正文以 OSSEC HIDS Notification. 开头,依次是告警时间、Received From(告警来源)、Rule: <规则 ID> fired (level <等级>) -> "<规则描述>"、来源 IP / 用户(存在时)以及触发告警的原始日志片段(Portion of the log(s))。在 Flashduty 中,告警的标题是邮件标题,描述是邮件正文。
限制
- 没有恢复:OSSEC 告警是一次性事件,Flashduty 中的告警不会自动恢复,依赖 超时自动关闭 或手动关闭。
- 严重程度:邮件集成推送的告警严重程度统一为 Warning。标题中包含 OSSEC 等级(
Level N),可以通过 告警处理 Pipeline 按等级调整。 - 标题不含规则 ID:标题只有规则描述,不同规则但描述、位置、等级都相同的告警会合并;规则 ID 在邮件正文中。
- 敏感信息:邮件正文包含原始日志片段,可能带有用户名、IP 和文件路径,请通过
<email_alert_level>或<email_alerts>的<group>、<rule_id>过滤,避免转发认证类原始日志。 - 合并:标题相同的邮件合并到同一条未关闭的告警,告警关闭后再次收到会产生新告警。