如何控制 sendmail SMTP 身份验证日志记录?

如何控制 sendmail SMTP 身份验证日志记录?

我收到大量失败的 SMTP 登录尝试。我真的很想防御它,但这些尝试的记录很差。

我使用的是 sendmail 8.15,cyrus-sasl 2.1.26。 SASL 设置是最简单的方法,默认情况下,使用 pam_unix 进行身份验证。

我经常收到这样的日志消息:

saslauthd[8292]: pam_unix(smtp:auth): check pass; user unknown
saslauthd[8292]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
saslauthd[8292]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
saslauthd[8292]: do_auth         : auth failure: [user=colby] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

这意味着,虽然我知道正在发生虚假登录尝试,但我对此无能为力,比如让fail2ban 监禁他们。

我无法真正判断问题是否在于 Sendmail 正在告诉 pam_unix 事情,并且它正在转储它们,或者是否 sendmail 没有告诉 pam 正在尝试的位置。

我想要的是使用其来源的 IP 地址来记录身份验证尝试,因此如果出现很多失败,fail2ban 可以监禁该 IP。

答案1

这里的会话分为邮件传输代理和saslauthd

testhost saslauthd[17177]: do_auth         : auth failure:
  [user=AzureDiamond] [service=smtp] [realm=] [mech=pam]
  [reason=PAM auth error]

默认情况下,您想要的完整日志可能不可用,或者需要在某些日志聚合服务下重建。 (使用 Postfix 时,日志记录也很糟糕saslauthd;一些日志最终出现在邮件日志中,而其他日志则出现在其他地方。)Sendmail 确实支持自定义系统日志规则;但是,如果客户端仅发出EHLO nurseAUTH LOGINQXp1cmVEaWFtb25kSHVudGVyMg==然后失败(通过quit或 简单地断开连接),则可能不会给任何常用规则集挂钩运行的机会。

当达到 11 (或更高)时,LogLevel登录会失败,其中包括中继地址:

testhost sendmail[20684]: wA6KuRRJ020684: AUTH failure
  (LOGIN): authentication failure (-13) SASL(-13):
  authentication failure: checkpass failed,
  relay=localhost [127.0.0.1]

这来自sendmail/srvrsmtp.c并发生在以下时间LogLevel > 9。或者您可以修补该文件以避免增加LogLevel,但这可能会带来不同的问题。

限制 SMTP AUTH 的其他方法如下。

pam 限制特定组

调整PAM配置并禁止,SMTP AUTH除非用户属于特定组;这将防止大多数密码猜测攻击,但如果只有一小部分可预测的用户需要使用,这是可行的SMTP AUTH

account     required      pam_access.so accessfile=/etc/security/smtp_access.conf

然后在/etc/security/smtp_access.conf

+ : ok-sasl : ALL
- : ALL : ALL

然后将用户放入ok-sasl组中。

隐藏 SMTP AUTH 服务

另一种选择是在 SMTP 之前放置 VPN 或其他东西,这样服务就无法在 Internet 上使用;这应该会减少目前面向公众的服务收到的日志噪音。

pam_tally

我也尝试过,pam_tally2但这非常适合锁定帐户,包括登录时没有任何明显错误的合法帐户......也许它会更适合您?

答案2

我有一个解决方案,有点帮助。您列出的消息看起来像是来自 /var/log/secure 的消息(至少在 RedHat/Centos 上)。

正如您所注意到的,没有 IP,因此您无法对这些条目做太多事情。

但是,查看 /var/log/maillog,您会发现如下所示的条目:

Apr 11 13:58:48 alpha sendmail[23712]: x3BKwjij023712: [118.24.45.165] did not issue MAIL/EXPN/VRFY/ETRN during connection to MSA

这些连接尝试进行(或两次)身份验证、失败并断开连接。这些与 /var/log/secure 中的 pam 消息之间几乎有 100% 的相关性。

我使用这些作为fail2ban 监狱的输入。一次出现就会被禁止,因为许多自动系统探测使用完整的 C 类(或 /24,如果您愿意)地址空间,并且需要相当长的时间才能再次看到该地址。

我目前有某人/事物似乎正在使用僵尸网络,IP 分散在各处。它们似乎只会在几天后重复,有时甚至不会重复。你最终会得到很多fail2ban 条目。但总比什么都不做要好。

答案3

可悲的是,答案似乎是使用 sendmail 和 cyrus-sasl,没有控制。 Sendmail 似乎将信息发送到 sasl,而 cyrus-sasl 对此不执行任何操作,同样,sendmail 在身份验证失败后也不执行任何操作。

Thrig 的上述答案可能对其他人有用,也许有一天有人会看到这一点,并提供更好的答案。

相关内容