fail2ban和snort有什么区别?

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

我应该同时使用吗? 仅仅使用其中一个就足够了? 什么function是唯一的,但不是其他的? 我所关心的是性能。 snort可能会减慢我们的networking吗?

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

如果他们的configuration不正确,这两者都可能会耗尽你的资源,但是我怀疑使用正则expression式的警告会让你更加熟悉。

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

设置为实际阻止恶意源比snort更简单,您可以configurationfail2ban扫描snort日志,以禁止它们。

实际上,这两者都不能实际上保护您免受DDoS的攻击,但是它们可以通过(相当于阻止模式)阻止非networking资源耗尽,避免与实际应用程序服务器的交互。

snort的一个问题是它在IPS模式下工作(即实际上阻塞stream量)是非常不重要的 – AFAIK更常见的是将其作为IDS(即仅检测恶意stream量)运行。

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

snort(和suricata以及其他IDSen)实际上检查stream量的各个方面,以检测潜在的恶意stream量。 它使用特定于域的格式的规则,也可以执行IP地址(和/或主机名/域)匹配,以及数据包检查,重新组装等等。 EmergingThreat中一个相当广泛使用的规则集 – 你可能想要通读(一些)它们,以感受snort的能力。

一个考虑因素是fail2ban通常会很有用,而snort并不完全适用 – 你通常需要调整它的规则(并且可能增加一些你自己的规则),以便平衡事件量和可执行性。

就个人而言,我花了一些时间在snort上更好的一个设置是:

  • 用ssh和相关的networking监狱设置fail2ban
  • 创build一个监狱阅读IDS警报日志(在我的情况下,这是suricata,但这是一个细节),特别是寻找Prio 1警报,也看着任何标记为DROP的主机(是的,我可以加载相关的ipsets)
  • 让fail2ban完成剩下的工作。

这可能会或可能不会为你工作,但这意味着你得到一些额外的保护,而不需要特别了解其内部知识。

不过,我想提一下,嗅探规则可能看起来有些危言耸听 – 对于他们指向的是什么威胁,以及如何理解/解释警报,一般都是值得的。

一旦你对snort感觉更加舒适,首先调整它,然后考虑是否允许它直接处理事情(例如,将其置于IPS模式)。

顺便说一下,如果您的许多暴露资产是基于networking的,您可能需要考虑WAF如何成为其中的一部分。