SASL LOGIN 身份验证失败:UGFzc3dvcmQ6 - 查找用户名

SASL LOGIN 身份验证失败:UGFzc3dvcmQ6 - 查找用户名

首先我要声明的是,邮件服务器运行正常,用户可以连接并发送电子邮件。

基本上,每隔几分钟就会有一个本地 Web 脚本连接到邮件服务器,尝试发送邮件。它输入了错误的密码。问题是我们不知道连接的是什么脚本,所以我们正在寻找一种方法来获取正在尝试的用户名。

UGFzc3dvcmQ6 - 解码为密码:所以没什么帮助。完整的日志行如下。

Dec 11 20:15:37 HOST postfix/smtpd[642]: warning: HOST[x.x.x.x]: SASL LOGIN authentication failed: UGFzc3dvcmQ6

服务器正在运行 Debian/Postfix/Dovecot。

答案1

我们能够使用 Dovecot 本身来追踪用户名。

/etc/dovecot/conf.d/10-logging.conf配置中,我们使用以下方式启用详细的身份验证日志记录

auth_verbose = yes

这将信息放入

/etc/dovecot/info.log

答案2

我可以通过设置 SSL 并仅要求通过 SSL 进行身份验证尝试来防止这种情况

smtpd_tls_auth_only = yes

这不会AUTH向远程客户端提供选项EHLO,因此垃圾邮件发送者/黑客会放弃,因为建立 SSL 连接需要花费太多时间。他们玩的是数字游戏。现在,当他们尝试时,它会挂断,AUTH我的日志中出现了以下内容:

Jan  7 22:14:27 ip-99-99-99-99 postfix/smtpd[22274]: warning: 91.200.12.140: hostname vps863.hidehost.net verification failed: No address associated with hostname
Jan  7 22:14:27 ip-99-99-99-99 postfix/smtpd[22274]: connect from unknown[91.200.12.140]
Jan  7 22:14:27 ip-99-99-99-99 postfix/smtpd[22274]: lost connection after AUTH from unknown[91.200.12.140]
Jan  7 22:14:27 ip-99-99-99-99 postfix/smtpd[22274]: disconnect from unknown[91.200.12.140]

答案3

如果你有失败2ban安装后,您可以在 jail.local (或 jail.d) 中启用 sasl (有时称为 postfix-sasl),这应该可以消除烦恼。

## for me this is in /etc/fail2ban/jail.d/defaults-debian.conf
[postfix]
enabled = true

[postfix-sasl]
enabled = true

答案4

至少有两种方法可以查找正在尝试的用户名。

使用 Postfix 记录 SMTP 事务

如果你知道你的奇怪连接来自哪个主机,你可以通过指定调试对等列表/etc/postfix/main.cf

debug_peer_list = 192.0.2.1

除其他内容外,这将在系统日志中产生如下消息:

postfix/smtpd[123]: xsasl_dovecot_handle_reply: auth reply: FAIL?5?user=info

您将需要使用此设置仅限特定调试,因为完整的 SMTP 会话已记录,包括密码。

postfix/smtpd[123]: < unknown[192.0.2.1]: AUTH LOGIN
postfix/smtpd[123]: xsasl_dovecot_server_first: sasl_method LOGIN
postfix/smtpd[123]: xsasl_dovecot_handle_reply: auth reply: CONT?5?VXNlcm5hbWU6
postfix/smtpd[123]: > unknown[192.0.2.1]: 334 VXNlcm5hbWU6
postfix/smtpd[123]: < unknown[192.0.2.1]: aW5mbw==
postfix/smtpd[123]: xsasl_dovecot_handle_reply: auth reply: CONT?5?UGFzc3dvcmQ6
postfix/smtpd[123]: > unknown[192.0.2.1: 334 UGFzc3dvcmQ6
postfix/smtpd[123]: < unknown[192.0.2.1]: Zm9vYmFy
postfix/smtpd[123]: xsasl_dovecot_handle_reply: auth reply: FAIL?5?user=info
postfix/smtpd[123]: warning: unknown[192.0.2.1]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtpd[123]: > unknown[192.0.2.1]: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

在此示例中,输入密码“foobar”后,用户“info”的登录尝试失败。与质询一样,您可以将回复解码为 base64:

$ echo aW5mbw== | echo $(base64 -d)
info
$ echo Zm9vYmFy | echo $(base64 -d)
foobar

使用 Dovecot 记录身份验证

Postfix 本身不包含 SASL 实现。传统上,它与 Cyrus SASL 挂钩,但如果您使用 Dovecot POP/IMAP 服务器,Postfix 可以重用其 SASL 模块。

正如您所发现的,Dovecot 有自己的调试工具,启用后

auth_verbose = yes

在其配置文件中,通常是/etc/dovecot/conf.d/10-logging.conf。中的输出/var/log/dovecot-info.log将如下所示:

Jun 10 13:16:40 auth-worker(14936): Info: pam([email protected],192.0.2.1): pam_authenticate() failed: Authentication failure (password mismatch?)

虽然这里没有基于主机的控制,但有许多相关选项可以控制记录的内容,特别是是否包含尝试的密码。从示例配置来看:

# Log unsuccessful authentication attempts and the reasons why they failed.
auth_verbose = no

# In case of password mismatches, log the attempted password. Valid values are
# no, plain and sha1. sha1 can be useful for detecting brute force password
# attempts vs. user simply trying the same password over and over again.
auth_verbose_passwords = no

# Even more verbose logging for debugging purposes. Shows for example SQL
# queries.
auth_debug = no

# In case of password mismatches, log the passwords and used scheme so the
# problem can be debugged. Enabling this also enables auth_debug.
auth_debug_passwords = no

另请参阅Dovecot 文档了解详情。

关于 SMTP 身份验证

正如您所注意到的,日志消息中的字符串UGFzc3dvcmQ6是“密码:”的 base64 编码。Postfix 在此处记录的是它已发送并收到错误答复的特定身份验证“质询”。还有一个针对“用户名:”的前置质询 ( VXNlcm5hbWU6)。但是,即使对于不存在的用户,也只会在输入密码后报告失败。

质询字符串的值实际上并不重要,应该忽略。第一个质询始终针对用户名,第二个质询针对密码。有关此内容的详细信息,请参阅LOGIN 方法的规范

注意:由于传输和检查用户名密码对的过程有点繁琐,LOGIN 早已过时。PLAIN 方法工作原理基本相同,但将两条信息打包到同一个 base64 字符串中。

最后,这次对话的部分内容采用 base64 编码,这实际上是SMTP 身份验证一般来说。其理念是轻松允许客户端和服务器的 SASL 模块之间交换任意(可能是二进制)数据,而这些 SASL 模块无需知道或关心 SMTP 本身。您可以从以下网址了解 SASL 的运作方式Cyrus SASL 文档

相关内容