fail2ban 和 snort 有什么区别?

And*_*erg 2 snort fail2ban

我有一台暴露在互联网上的服务器,我想提供一些针对 DDOS 攻击的保护。目前,我正在考虑使用 fail2ban 和/或 snort。我知道他们有不同的工作方式。据我了解,Fail2Ban 监控日志文件以确定入侵并通过 snort 监控传入的包。

我应该同时使用两者吗?仅使用其中之一就足够了吗?什么功能是唯一的,而不是另一个?我担心的一个问题是性能。snort 可能会减慢我们的网络速度吗?

iwa*_*rue 6

如果我是你,我会从 fail2ban 开始。

如果配置不当,两者都会消耗您的资源,但我怀疑使用正则表达式的注意事项对您来说会更熟悉。

fail2ban 更容易立即有用(至少在我看来)。

设置来实际阻止恶意源比 snort 简单得多,您可以配置 fail2ban 来扫描 snort 日志,以禁止它们。

两者都不可能真正保护您免受 DDoS 的侵害,但两者都可以在等效于阻塞模式的情况下,通过(实际上)避免与实际应用程序服务器的交互来防止非网络资源耗尽。

snort 的一个问题是让它在 IPS 模式下工作(即实际阻止流量)有点重要 - AFAIK,更常见的是将其作为 IDS 运行(即仅检测恶意流量)。

正如您所说,fail2ban 本质上只是一个对日志文件执行正则表达式的脚本,从这些日志中提取恶意源(例如,SSH 登录失败、Web 客户端触发重复的 4xx 或 5xx 响应,或者具有与已知攻击者配置文件关联的用户代理) )。它与 iptables(以及可能在 iptables 之上运行的任何东西,例如 firewalld、shorewall)集成,以阻止与恶意主机相关的流量。这些块往往被实现为简单的 iptables 规则,或者作为 iptables 规则 + ipset。

snort(以及 suricata 和其他 IDSen)实际上会检查流量的各个方面,以检测潜在的恶意流量。它使用域特定格式的规则,还可以进行 IP 地址(和/或主机名/域)匹配,以及数据包检查、重组等。EmergingThreat 中使用相当广泛的规则集- 您可能想通读(其中一些)它们,以了解 snort 的功能。

一个考虑因素是fail2ban通常开箱即用,而snort并非完全如此 - 您通常需要调整其规则(并可能添加一些您自己的规则)以平衡事件量与其可操作性.

就我个人而言,当我花一些时间在 snort 上变得更好时,对我有用的设置是:

  • 使用 ssh 和相关的网络监狱设置 fail2ban
  • 创建一个读取 IDS 警报日志的监狱(在我的情况下,这是 suricata,但这是一个细节),特别是寻找 Prio 1 警报,并查看任何标记为 DROP 的主机(是的,我可以只加载相关的 ipsets)
  • 剩下的就交给fail2ban吧。

这可能对您有用,也可能不适合,但这意味着您可以获得一些额外的保护,无需特别了解其内部结构。

但是,我要提到的是,snort 规则似乎比可能需要的更危言耸听 - 了解它们所指向的威胁以及如何理解/解释警报通常是值得的。

一旦您对 snort 更加熟悉,请先对其进行调整,然后再考虑是否要允许它直接处理事物(例如,将其置于 IPS 模式)。

顺便说一下,如果您公开的许多资产都是基于 Web 的,您可能需要考虑 WAF 如何成为图片的一部分。