AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 480000
Accepted
Hack Saw
Hack Saw
Asked: 2018-11-06 14:43:05 +0800 CST2018-11-06 14:43:05 +0800 CST 2018-11-06 14:43:05 +0800 CST

sendmail SMTP 身份验证日志是如何控制的?

  • 772

我收到大量失败的 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。

pam sendmail
  • 3 3 个回答
  • 2529 Views

3 个回答

  • Voted
  1. Best Answer
    thrig
    2018-11-06T15:12:26+08:002018-11-06T15:12:26+08:00

    这里的会话在邮件传输代理和以下之间分开saslauthd:

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

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

    当设置LogLevel为 11(或更高)时,会出现包含中继地址的登录失败:

    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
  2. Philip
    2019-04-12T13:13:43+08:002019-04-12T13:13:43+08:00

    我有一个有点帮助的解决方案。您列出的消息看起来像来自 /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
    

    这些是尝试 AUTH(或两个)、失败和断开连接的连接。这些与 /var/log/secure 中的 pam 消息之间几乎有 100% 的相关性。

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

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

    • 2
  3. Hack Saw
    2018-11-13T12:11:10+08:002018-11-13T12:11:10+08:00

    可悲的是,答案似乎是 sendmail 和 cyrus-sasl 无法控制。Sendmail 似乎将信息发送到 sasl,而 cyrus-sasl 对此不做任何事情,同样 sendmail 在身份验证失败后也不做任何事情。

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

    • 0

相关问题

  • LDAP 和 PAM 用于 GUI 登录但不适用于 SSH

  • 如何配置简单事件相关器 (SEC) 以发送有关邮件传递失败的信息

  • PAM Ke​​rberos 和 RStudio

  • 使用 sendmail -t 处理非标准 SMTP 端口

  • 将具有特定短语的特定日志发送到我的邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve