由于libnids似乎已有两年历史并且没有当前更新,是否有人知道 libnids 的任何替代解决方案或比它更好的库,因为它似乎以超过 1G/每秒的速度丢弃数据包
而且它不支持 64 位 IP 地址。
一个替代方案libnids
是Bro。它带有一个健壮的 TCP 重组器,多年来已经被网络安全监控社区彻底测试和使用。它附带了一组用于常见协议的协议分析器,例如 HTTP、DNS、FTP、SMTP 和 SSL。
Bro 是“网络处理的 Python”:它有自己的特定于域的脚本语言,具有一流的 IP 地址(v4 和 v6)、子网、端口类型和功能。编程风格具有基于异步事件的风格:用户为反映网络活动的事件编写回调函数。分析以连接粒度进行。这是一个例子:
event connection_established(c: connection)
{
if ( c$id$orig_h == 1.2.3.4 && c$id$resp_p == 31337/udp )
// IP 1.2.3.4 successfully connected to remote host at port 31337.
}
此外,Bro 支持允许对 10 Gbps 链路进行线速监控的集群模式。因为大多数分析不需要共享互连状态,Bro 可以很好地跨核心(使用PF_RING
)以及多个节点进行扩展。存在 >= 140 个节点的 Bro 安装。典型的部署如下所示:
(来源:bro.org)
由于高可扩展性,通常不再需要处理低级细节和微调 C 实现。或者换一种说法,与 Bro 一起,您将时间花在分析而不是实施上。