我可以使用 Suricata 7.0.2 生成并记录 SMTP 流量的输出警报吗?

我可以使用 Suricata 7.0.2 生成并记录 SMTP 流量的输出警报吗?

我在 Linux Ubuntu 20.04 虚拟机上安装了 Suricata 7.0.2 IDS。在我的虚拟环境中,我有两个虚拟网络。在第一个网络中,我有一个邮件用户代理(攻击者),它将电子邮件发送到本地 Postfix 邮件服务器(攻击者邮件服务器,IP 地址 10.0.3.17),然后将发送的邮件中继到接收方 SMTP 服务器(目标邮件服务器,IP地址10.0.2.1)使用端口25上的SMTP协议。该电子邮件系统模型如下所示:SMTP 电子邮件系统

我希望配置 Suricata 来监控从攻击者邮件服务器目标邮件服务器通过端口 25。我使用 WireShark 执行数据包捕获来监控 SMTP 流量,如下所示:使用 WireShark 捕获 SMTP 数据包

SMTP 流量以及源和目标 IP 地址可见,表明 SMTP 流量正在按照预期方向流动。

我希望使用 Suricata IDS 将 SMTP 流量检测为协议警报,并将生成的警报记录到 Suricata 输出日志文件 /var/log/suricata/eve.json,如 Suricata 文档中所述。我为我的 Suricata IDS 编写了自己的自定义规则,如下所示:

  • 警报 tcp any any -> [10.0.2.0/24] 25 (msg:“SMTP 中继连接”;flow:to_server,已建立;sid:9998088;rev:8;)
  • 警报 smtp any any -> [10.0.2.0/24] any (msg:“SMTP 协议活动”;flow:to_server,已建立;sid:9900066;rev:2;)

我已将这些规则添加到新文件中,并编辑了 Suricata 配置文件以将此文件包含在“rule-files:”部分下。为了支持 SMTP 应用程序层检测和将日志输出到 eve-output 文件,我还在“app_layer”和“outputs:eve-log:types”部分下编辑了配置文件,如下所示。配置如两个屏幕截图所示:SMTP 流量检测 SMTP 日志输出

编辑配置文件 /etc/suricata/suricata.yaml 后,我运行了以下命令:

sudo suricata -T -c /etc/suricata/suricata.yaml -v sudo systemctl restart suricata

这些命令没有产生错误,这意味着我的自定义 Suricata 规则没有语法错误,并且它们已加载,因此没有配置错误。

最后,为了测试 Suricata 规则检测,我向目标网络中的本地用户帐户发送了一封电子邮件,该电子邮件从攻击者邮件服务器目标邮件服务器通过端口 25。使用当前的 Suricata 配置,这应该在输出日志文件 /var/log/suricata/eve.json 中记录一条警报,其中带有来自我的自定义 Suricata 规则的标签签名“SMTP 中继连接”或“SMTP 协议活动”。但是,事实并非如此。任何有关为什么会这样帮助都将不胜感激?

答案1

Suricata 默认已包含 smtp 规则 https://github.com/OISF/suricata/blob/master/rules/smtp-events.rules

但是,如果您启用更多来源并获取/更新这些规则,您将获得更多 smtp 规则。对于这些来源和更新,您需要 suricata-update https://suricata-update.readthedocs.io/en/latest/quickstart.html#list-enabled-sources

例如,如果您启用源 et/open(et=emergingthreatening),您将获得所有这些 smtp 规则 https://rules.emergingthreats.net/open/suricata-5.0/rules/emerging-smtp.rules

关于您的规则未加载,您的 suricata.log 说了什么?

您是否还在 suricata.yaml 中启用了以下内容

还可以尝试在 suricata.yaml 中启用此功能

- smtp:
        #extended: yes 
        # enable this for extended logging information
        # this includes: bcc, message-id, subject, x_mailer, user-agent
        # custom fields logging from the list:
        #  reply-to, bcc, message-id, subject, x-mailer, user-agent, received,
        #  x-originating-ip, in-reply-to, references, importance, priority,
        #  sensitivity, organization, content-md5, date
        #custom: [received, x-mailer, x-originating-ip, relays, reply-to, bcc]
        custom: [received, x-mailer, x-originating-ip, relays, reply-to, bcc,
        reply-to, bcc, message-id, subject, x-mailer, user-agent, received,
        x-originating-ip, in-reply-to, references, importance, priority,
        sensitivity, organization, content-md5, date]
        # output md5 of fields: body, subject
        # for the body you need to set app-layer.protocols.smtp.mime.body-md5
        # to yes
        md5: [body, subject]

另外,检查 selks 它有一个预先配置了 elk stack 的 suricata 解决方案 https://github.com/StamusNetworks/SELKS

相关内容