2

 我在 Centos 上作为 IDS 运行了 snort。我正在尝试测试 snort 是否可以检测到 syn flood 攻击。我从同一个 LAN 网络发送攻击。我在 local.rules 中添加了这条规则alert tcp !$HOME_NET any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; threshold: type both, track by_src, count 70, seconds 10; sid:10001;rev:1;)。当我在快速模式下运行 snort 时,没有记录 Snort 警报文件。它正在记录,但现在不是。所以我看不到它是否检测到攻击。如何让 snort 检测到这种攻击?

4

3 回答 3

8

对于初学者来说,该关键字threshold已被弃用,并且在未来的版本中将不再受支持。您应该改用关键字“detection_filter”(参考)。

您需要确保启动 syn flood 的主机不是包含在您的$HOME_NET变量中的主机,否则您需要将源 IP 更改为“任意”或$HOME_NET(如果它们在 中$HOME_NET)。这也取决于您的同步洪水攻击。您是使用多个源主机同步泛洪目标主机,还是使用一台源主机同步泛洪目标?这会有所作为。如果您有多个源主机,则需要按目的地跟踪(为此,您可能希望按目的地跟踪)。如果您从单个主机启动同步洪水,那么您可以按源进行跟踪。
detection_filter 的速率由源 IP 地址或目标 IP 地址跟踪。这意味着为每个唯一的源 IP 地址或每个唯一的目标 IP 地址维护计数。因此,如果您的 syn flood 有多个源 IP,您需要使用它track by_dst来跟踪前往单个目的地的 syns 数量。例子:

alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; detection_filter: track by_dst, count 70, seconds 10;)

$HOME_NET在前 70 个同步之后,此规则将在一个 10 秒的采样周期内对每个同步向唯一 IP 发出警报。编写这样的规则可能会导致问题,因为您需要知道正常的连接数量是多少。您是否希望您的网络服务器在 10 秒内获得超过 70 个连接?如果是这样,那么您将需要增加计数或减少秒数。

如果您的 syn flood 攻击有一个唯一的源生成多个 syns 到目标 IP in $HOME_NET,您可以跟踪 by_src:

alert tcp any any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; detection_filter: track by_src, count 70, seconds 10;)

$HOME_NET在前 70 个同步之后,在一个 10 秒的采样周期内,此规则将在从唯一 IP 到唯一 IP 的每个同步上触发。
示例:主机 10.1.1.1 在 10 秒内向主机 10.1.1.2 发送 83 个同步,最后 13 个同步将被提醒。

我会说您希望按目的地进行跟踪,因为它将涵盖两种情况(单个或多个源 IP)。您想要一个规则来简单地限制到您的网络服务器的连接数量,因此您将跟踪到目标的连接并在达到某个阈值后将其丢弃,以保护您的服务器不至于不堪重负。同步泛洪通常会随机化源 IP,因此如果您按源进行跟踪,它不会阻止同步泛洪。

于 2014-10-10T03:21:34.080 回答
0

对于我的回答,我假设 $HOME_NET 变量是您的内部 LAN 网络?我还假设发送设备和接收设备在同一个子网上。

你需要采取!在您的 snort 语句的开头。它应该如下所示:

alert tcp $HOME_NET any -> $HOME_NET 80 (flags: S; msg:"Possible TCP DoS"; flow: stateless; threshold: type both, track by_src, count 70, seconds 10; sid:10001;rev:1;)

如果你有!对于入站 IP 过滤器,它将查找除您的家庭网络之外的任何流量。由于您在同一个网络之间发送流量,因此在删除 ! 之前,snort 不会捕获任何流量。

另外,去掉 snort 语句开头的括号。

于 2014-09-25T18:37:49.217 回答
0
alert tcp $HOME_NET any -> $HOME_NET 80 (flags: S; msg:"Syn Flood Detected"; flow: stateless; threshold: type both, track by_src, count 70, seconds 10; sid:1000003;rev:1;)
于 2019-05-28T09:15:19.543 回答