IDS及其Linux下的实现(2)
http://tech.ddvip.com 2006年04月03日 社区交流 收藏本文
本文详细介绍IDS及其Linux下的实现(2)
5、Linux下的实现
5.1 系统框架
HereLine是一个在Linux下运行的基于标识检测的网络IDS。从逻辑上分为数据采集、数据分析和结果显示三部分,符合CIDF的规范。
从实现结构上看,HereLine分成三个应用程序,它们分别是:
1、数据收集及分析程序(watcher) ;
2、告警信息收集程序(listener);
3、告警信息显示程序(console)。watcher是数据采集和数据分析的合体;listener接收watcher发出的告警信息,并将接到的信息存储为日志;console为管理员提供了更友好的观察日志的图形界面。
同大多数商业IDS一样,HereLine采用了分布式的结构。运行HereLine建议采用两台PC机,一台运行watcher,另一台运行listener和console.
与其他同类程序相比,HereLine的优点主要有:
1、提供了完整的框架,可以灵活的应用于各种环境并扩充;
2、采用数据分析与告警程序分离,便于在大规模的网络环境下集中管理;
3、已经实现了对分片的处理,解决了利用分片逃避检查的问题;
4、数据分析部分不完全依赖已有攻击程序,而是分析其核心特征以察觉其变种攻击;但同时依靠已有攻击程序的细节来评估判别的准确性。以上设计增加了告警的可靠性。
各部分的实现流程及重要问题说明
5.1.1 数据采集部分
watcher采用了Linux2.2内核中提供的PF_PACKET类型的socket(并未采用libpcap提供的API接口) ,直接从链路层获取数据帧。(直接采用操作系统提供的接口主要是考虑高效性,但为了将来的移植问题,以后仍然可能会改为使用libpcap库提供的函数接口。)根据Linux的要求,建立这样的一个socket需要root权限,即uid=0。从packet socket读到的数据是链路层格式的数据,但经过处理(socket函数的第二个参量SOCK_DGRAM表示要去掉第二层的数据头,第三个参量ETH_P_IP表示只接收ipv4的数据包)后,缓冲区内的内容是个完整的IP包(未经任何其它处理)。分析工作交由数据分析程序去做。
责编:豆豆技术应用