由于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支持cluster mode允许对10gbps链路进行线速率监控。因为大多数分析不需要共享互连状态,所以Bro在核心(使用
PF_RING
)和多个节点上都可以很好地扩展。存在具有140个节点的BRO设备。典型的部署如下所示:由于具有很高的可伸缩性,通常不再需要处理低级细节和微调C实现。或者换一种说法,与Bro一起,你把时间花在分析上,而不是实现上。