测试环境:系统: redhat 9.0 (内核为 2.4.35
               软件: iptables- 1.3.5
                            Snort_inline- 2.6.1 .5
snort_inline 是一个通过 Snort 修改而得的工具 , 它是把 Snort 透过 libpcap 撷取封包 , 改由透过 iptables 撷取封包 , 其用意主要是可以完全的监看到所有的封包 , 而会因为效能因素有丢封包的现象 . 并基於 Snort 规则的判断由 iptables  决定封包是否丢弃 , 转向 , 修改或通过 ,
首先必须要为 iptables 加模块,选中 Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers
这样才会在 Networking options ---> IP: Netfilter Configuration ---> Userspace queueing via NETLINK (EXPERIMENTAL) 显示这个 queue 的模块。
因为运行 snort_inline 必须要要加载这个模块。然后编译安装内核。
安装snort_inline
首先必须要安装这些 RPM
libdnet-1.7-0.dag.rh90.i386.rpm
libpcap- 0.7.2 -7.9.1.i386.rpm
pcre-devel-3.9-10.i386.rpm
pcre-3.9-10.i386.rpm
然后进入 Snort_inline 的安装目录
./configure
Make
Make install
它安装会默认安装在 /usr/local 下,把 Snort_inline 目录下的 etc 的文件,移到 /usr/local/etc 下来。
按照自己的需要修改 snort_inline.conf 的配置文件 ,
Echo “export PATH=$PATH:/usr/local/bin” >> /etc/profile
Source /etc/profile
以上命令是增加 snort_inline PATH 路径
执行 snort_inline –Qc /usr/local/etc/snort_inline.conf  启动 snort_inline
安装中的 FAQ
1. 编译 snort_inline 时出错了,以下是我编译时提示的错误信息:
gcc -DHAVE_CONFIG_H -I. - I.  -I../.. -I../.. -I../../src
-I/usr/include/pcap -I../../src/output-plugins
-I../../src/detection-plugins -I../../src/preprocessors -I/usr/include
-g -O2 -Wall -DGIDS -D_BSD_SOURCE -D__BSD_SOURCE -D__FAVOR_BSD
-DHAVE_NET_ETHERNET_H -DLIBNET_LIL_ENDIAN -c `test -f 'spo_alert_fast.c'
|| echo './'`spo_alert_fast.c
In file included from /usr/include/linux/netfilter_ipv4/ip_queue.h:10,
                 from /usr/include/libipq.h:37,
                 from ../../src/inline.h:8,
                 from ../../src/snort.h:38,
                 from spo_alert_fast.c:51:
/usr/include/linux/if.h:59: redefinition of `struct ifmap'
/usr/include/linux/if.h:77: redefinition of `struct ifreq'
/usr/include/linux/if.h:126: redefinition of `struct ifconf'
make[3]: *** [spo_alert_fast.o] Error 1
make[3]: Leaving directory
`/home/matt/src/BUILD/snort- 2.6.1 .5/src/output-plugins'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/matt/src/BUILD/snort- 2.6.1 .5/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/matt/src/BUILD/snort- 2.6.1 .5'
make: *** [all] Error 2
答:你需要更新 glibc 中关于内核的头文件。快速解决方法是在 /usr/include 和内核源码目录之间创建一个链接。例如,如果你用的内核版本是 2.4.35 ,你可以这样做:
cd /usr/include
mv linux linux.orig
ln -s /usr/src/linux- 2.4.35 /include/linux linux
现在,你可以进入 snort_inline 目录进行重编译了
2. 我在运行 snort_inline 时出错,以下是报错信息:
Reading  from iptables
Running in IDS mode
Log directory = /var/log/snort
Initializing Inline mode
InitInline: : Failed to send netlink message: Connection refused
答:这意味着 snort_inline 不能和 iptables 通讯,因为 ip_queue 模块未被载入。你可以用命令 lsmod 验证一下。如果在列出的内容中你没有看到 ip_queue ,你需要在启动 snort_inline 之前装载该模块,命令为: insmod ip_queue.