Asm*_*sma 2 denial-of-service snort intrusion-detection
我在 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 检测到这种攻击?
对于初学者,该关键字threshold已弃用,未来版本将不再支持。您应该改用关键字“detection_filter”(参考)。
您需要确保发起 Syn flood 的主机不是您的$HOME_NET变量中包含的主机,否则您需要将源 IP 更改为“任何”或$HOME_NET(如果它们在$HOME_NET. 这也取决于您的同步洪水攻击。您是使用多台源主机同步泛洪目标主机,还是使用一台源主机同步泛洪目标主机?这会有所作为。如果您有多个源主机,则需要按目的地进行跟踪(为此,您可能希望按目的地进行跟踪)。如果您是从单个主机启动 Syn flood,则可以按源进行跟踪。
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 攻击有一个独特的来源,为 中的目标 IP 生成多个同步$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 个 Syns 之后的一个 10 秒采样周期内触发从唯一 IP 到唯一 IP 的每个同步器。
示例:主机 10.1.1.1 在 10 秒内向主机 10.1.1.2 发送 83 个同步器,这些同步器中的最后 13 个将收到警报。
我会说您希望按目的地进行跟踪,因为它将涵盖两种情况(单个或多个源 IP)。您需要一个规则来简单地限制与您的网络服务器的连接数量,因此您将跟踪与目标的连接并在达到特定阈值后丢弃它们以保护您的服务器免于不堪重负。同步泛洪通常会随机化源 IP,因此如果您按源进行跟踪,则不会阻止同步泛洪。