spi*_*ech 65 iptables brute-force-attacks denyhosts fail2ban
我正在设置 LAMP 服务器,需要阻止 SSH/FTP/等。成功的蛮力登录尝试。我已经看到了许多关于 denyhosts 和 fail2ban 的建议,但很少对两者进行比较。我还读到 IPTables 规则可以填充相同的功能。
为什么我会选择其中一种方法而不是另一种方法?serverfault 上的人如何处理这个问题?
小智 55
IIRC,DenyHosts 只会监视您的 SSH 服务。如果您还需要它来保护其他服务,Fail2ban 绝对是更好的选择。如果您愿意调整其配置,它可以配置为观看几乎任何服务,但这应该不是必需的,因为新版本的 Fail2ban 包括适用于许多流行服务器守护程序的规则集。在简单的 iptables 速率限制上使用 fail2ban 具有在指定时间内完全阻止攻击者的优势,而不是简单地降低他攻击您服务器的速度。我已经在许多生产服务器上使用了fail2ban 并取得了很好的效果,并且自从我开始使用它以来,从未见过其中一台服务器遭到蛮力攻击。
Dre*_*ury 22
首先不要让他们进入您的机器!有很多方法可以在暴力尝试到达您的主机之前,甚至在 SSH 级别阻止它们。
话虽如此,使用fail2ban之类的东西保护您的操作系统是一个好主意。Fail2ban 与 DenyHosts 略有不同,尽管它们确实在相同的空间中运行。Fail2ban 使用 iptables。
http://en.wikipedia.org/wiki/Fail2ban
Fail2ban 类似于 DenyHosts ...但与专注于 SSH 的 DenyHosts 不同,fail2ban 可以配置为监控任何将登录尝试写入日志文件的服务,而不是仅使用 /etc/hosts.deny 来阻止 IP 地址/主机,fail2ban 可以使用 Netfilter/iptables 和 TCP Wrappers /etc/hosts.deny。
您应该考虑许多重要的安全技术来帮助防止暴力登录:
SSH:
应用:
小智 9
另一种保护 SSH 的好方法(我已经使用了十年或更长时间)是在本地使用 iptables 中的最新库(取决于您的发行版)。
基本上它可以用作iptables内置的端口敲击。这将为您省去很多麻烦。只要你可以 tcp 连接(telnet 是一种方式。我也使用过 ssh 客户端并将它们指向端口。任何可以与指定端口号建立 tcp 连接的东西。我在看着你 Putty!)从客户端启动 ssh 连接,您可以使用它。
下面是一个示例,当您通过 4103 端口从主机 telnet 到服务器时,iptables 将向您的主机打开端口 22。然后您可以使用 telnet 到端口 4102 或 4104 来关闭 sed 打开。4102 和 4104 的原因是为了防止打开 22 进行简单的 tcp 扫描。只有到端口 4103 的 tcp connect(telnet) 才能允许您进入。
享受!
哦,我喜欢Fail2Ban。更灵活,我喜欢禁令发生在 iptables 而不是 tcpwrappers。
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4102 -m recent --name SSH --remove -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4103 -m recent --name SSH --set -j DROP
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 4104 -m recent --name SSH --remove -j DROP
Run Code Online (Sandbox Code Playgroud)
Fail2ban 和 Denyhosts 之间的另一个区别是 Denyhosts 可以与其他 Denyhosts 用户共享阻止列表。使用Fail2ban,您只能阻止您的服务器以前见过的IP - 使用Denyhosts,如果其他人已经看到,暴力尝试甚至可能永远不会到达您的服务器,并且阻止列表会在攻击者之前下载到您的服务器进入你的电脑。
另一个区别是 Fail2ban 使用 iptables,而 Denyhosts 使用 tcpwrappers。其他人之前已经提到过这种差异,但有几个方面值得一提。
iptables 受限于您可以有效阻止的 IP 地址数量。这可能是 Fail2ban 没有共享阻止列表机制的原因之一。
另一个影响是当 iptables 替换为 nftables 时,Fail2ban 可能会停止工作或需要重写。Denyhosts 可能会继续工作。
所以,两者都有优点和缺点。我两个都喜欢;就我自己而言,我使用的是 Denyhosts,因为通常我只想保护 SSH,而且我喜欢共享阻止列表。
我使用 iptables 规则来限制来自同一 IP 地址的新连接的速率(主要是 SSH,但它也适用于 FTP)。在我看来,相对于“fail2ban”和其他此类工具的优势在于 iptables 路由完全在内核模式下发生,并且不依赖于任何用户模式工具来跟踪/解析日志文件。
如果你能做到,限制可以访问相关协议的源地址显然也会有所帮助。
使用 SSH,您确实应该使用证书身份验证并且无论如何都不要接受密码。
关于Fail2Ban 需要注意的一件事是,它似乎比DenyHosts 使用了大约10MB 的内存。因此,如果您使用的是 128MB VPS,您可能需要研究一下。此外,开箱即用的 fail2ban 仅在 SSH 上设置,这意味着无需更改配置 - DenyHosts 在更少的内存中执行相同的操作。