是否有DNSBL查找的PAM模块?

我一直在列举我后端生产服务器上的其余安全问题,当时我意识到我的操作系统上游存储库中缺less一些可能非常有用的东西。

我一直在寻找一个PAM模块 ,它检查远程主机IP地址对DNS阻止列表DNSBL )。

我的使用案例是…虽然IDS软件可以在检测到探测,漏洞扫描或蛮力攻击之后做出响应 –

某些服务(ie Apache2, proFTPd, Sendmail, SpamAssassin)包含DNSBL模块或function,这有助于大大减less可以参与攻击的计算机数量。 它通过阻止已知的感染或僵尸机器,公共代理和TOR出口中继节点(例如)来实现这一点。

其他人,据我所知,不。 Dovecot/Saslauthd不包括这样的function。 这些在我的networking上经常遭受powershell攻击 。 这些服务仍然由IDS系统覆盖, 但遭受了大部分的攻击

使用一个PAM模块来检查远程主机IP,在authentication过程中,对DNSBL进行检查…有效地, 所有的服务都可以具有这种额外的弹性,以抵抗分布式的暴力攻击或探测(限制可用于所述可能的机器攻击)

我想知道是否有一个现有的PAM模块来达到这个目的? 如果没有,为什么开发商忽略了这一点?

这将是一个令人难以置信的简单的模块,(在我看来)可以为一个伟大的目的..

目前,我已经写了一个脚本,它与PAM进行接口(通过“pam_exec.so”模块)。 出于某种原因,这是行不通的(只是导致BASH崩溃)。 当我有机会,我打算尝试“pam_script.so”模块。

我愿意编写一个PAM模块来做到这一点,但是我不确定将一个软件放入Debian或Ubuntu Repositories是多么困难。

谢谢

我不知道这样的模块。 你的第二个问题(为什么)将要求主要基于观点的答案,因为我不能想出为什么这样一个PAM模块不能存在的明确理由。

以下是我在评估可行性时所确定的devise考虑因素:

  • 速度不能拖延login来回击。 ssh + PAM在默认configuration下的DNS延迟方面已经不太好了。 我会尽可能地说每个服务器的DNS查询应该并行进行,以避免堆叠超时。
  • 重试是不好的 :只要重试被认为是在/etc/resolv.conf的权限下,使用C库进行DNS查找/etc/resolv.conf 。 如果实施了DNS重试,则该模块不得使用C库进行DNS查找。 最终结果将是嵌套的重试操作。
  • 跳过私有IP范围 :RFC1918(和类似的)空间应该总是获得一个自由通行证,因为把这个信息传递给一个DNSBL是无用的。
  • locking注意事项 :当所有的DNS不可用时会发生什么? 模块是否总是失败login,禁止私人IP? 这必须logging。
  • 如果您在auth堆栈中调用,则会生成日志错误。 auth堆栈用于authentication。 这个模块不用于authentication。 如果用户把它放在那里,绕过auth堆栈(SSH密钥authentication,GSSAPIauthentication等)的决定将击败模块。

我自己更像是一个红帽子的人,但是我一直想知道类似的模块。 好问题。 我还没有看到一个模块来处理这个。

至于出版软件这可能会有所帮助。

我从来没有与主要的仓库好运,但rpmforge(现在repoforge)有一些相当容易的方式来介入。 看这里。

对于Debian / Ubuntu的我还没有看到一个大的第三方存储库。 他们似乎都是产品特定的。 我的东西似乎从来都不合适,而且我也无法certificate我自己的公开仓库是正确的。

我倾向于留下任何需要打包的debian衍生产品在github上的源代码。

你可以实现这个没有太大的麻烦,但这样做是一个坏主意。

首先,让我们记住PAM是什么:这是一个处理用户login的系统。 authentication,授权,会计等

所以,这个build议倒下的地方是:

  1. 它会减慢合法的login 。 通常情况下,减速将不可察觉,因为DNS查找不需要太多时间,但是可能需要几秒钟或者完全超时。 发生这种情况时你做什么? 你拒绝合法用户吗?
  2. 更重要的是, 它会完全阻止合法的login,即使一切正常 。 许多用户不幸地处于dynamicIP地址上,他们本身可能在参与僵尸networking的恶意软件计算机上,导致IP地址被列在DNSBL中,或者最近被分配了IP地址是DNSBL列出,即使他们自己是干净的。

有很多方法可以处理各种服务的暴力攻击,其中最常用的是fail2ban,但是这个提议看起来像是一个非常糟糕的想法。