Snort 2.9.7.0 在 CentOS 6.5 环境部署:关键依赖与配置验证实战指南
1. 环境准备与依赖解析
在CentOS 6.5这类老旧系统上部署Snort 2.9.7.0,首要任务是解决依赖兼容性问题。不同于现代系统通过yum即可解决的依赖关系,我们需要手动编译三个核心组件:
关键依赖矩阵
| 依赖项 | 版本要求 | 功能作用 | 兼容性风险点 |
|---|---|---|---|
| libpcap | 1.0.0 | 底层数据包捕获 | 内核版本匹配问题 |
| DAQ | 2.0.4 | 数据采集抽象层 | 编译参数依赖性 |
| Barnyard2 | 1.9 | 二进制日志解析 | 数据库连接兼容性 |
提示:CentOS 6.5默认仓库的libpcap版本为0.9.4,必须手动升级到1.0.0以上版本才能支持Snort 2.9.7.0的特性
依赖安装脚本
#!/bin/bash # 安装基础编译环境 yum install -y gcc flex bison zlib-devel pcre-devel libdnet-devel # libpcap编译安装 wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz tar zxvf libpcap-1.0.0.tar.gz cd libpcap-1.0.0 ./configure --prefix=/usr/local/libpcap make && make install export LD_LIBRARY_PATH=/usr/local/libpcap/lib:$LD_LIBRARY_PATH # DAQ编译安装 wget https://www.snort.org/downloads/snort/daq-2.0.4.tar.gz tar zxvf daq-2.0.4.tar.gz cd daq-2.0.4 ./configure --with-libpcap-includes=/usr/local/libpcap/include make && make install # Barnyard2编译安装 wget https://github.com/firnsy/barnyard2/archive/v1.9.tar.gz tar zxvf v1.9.tar.gz cd barnyard2-1.9 ./configure --with-mysql --enable-gre make && make install2. 源码编译与系统集成
Snort的编译过程需要特别注意与已安装依赖的链接关系:
编译参数优化
./configure \ --prefix=/usr/local/snort \ --with-libpcap-includes=/usr/local/libpcap/include \ --with-libpcap-libraries=/usr/local/libpcap/lib \ --enable-sourcefire \ --enable-perfprofiling \ --disable-static-daq目录结构规划
/usr/local/snort/ ├── bin/ # 主程序 ├── etc/ │ ├── snort.conf # 主配置文件 │ └── rules/ # 规则目录 └── var/ ├── log/snort # 日志目录 └── run/ # PID文件环境变量配置
echo 'export SNORT_HOME=/usr/local/snort' >> /etc/profile echo 'export PATH=$SNORT_HOME/bin:$PATH' >> /etc/profile source /etc/profile3. 核心配置文件调优
snort.conf的配置需要针对老旧硬件进行特别优化:
网络变量配置
var HOME_NET [192.168.1.0/24,10.0.0.0/8] var EXTERNAL_NET !$HOME_NET var DNS_SERVERS $HOME_NET var SMTP_SERVERS $HOME_NET预处理配置优化
preprocessor frag3_global: max_frags 65536 preprocessor stream5_global: max_tcp 8192, track_tcp yes preprocessor http_inspect: global \ iis_unicode_map unicode.map 1252输出模块配置
output unified2: filename snort.log, limit 1284. 规则集管理与验证
在资源受限环境中,规则集需要精简:
基础规则启用列表
- web-iis.rules
- web-cgi.rules
- sql.rules
- dos.rules
- scan.rules
自定义测试规则
# ping检测规则 alert icmp any any -> $HOME_NET any (msg:"ICMP Ping Detected"; \ itype:8; sid:1000001; rev:1;) # 端口扫描检测 alert tcp $EXTERNAL_NET any -> $HOME_NET any \ (msg:"Possible Port Scan"; flow:stateless; flags:S; \ detection_filter:track by_src, count 5, seconds 10; sid:1000002;)5. 系统集成与服务化
启动脚本示例
#!/bin/sh SNORT_OPTS="-c /usr/local/snort/etc/snort.conf -i eth0 -D" BARNYARD_OPTS="-c /usr/local/snort/etc/barnyard2.conf -d /var/log/snort" case "$1" in start) snort $SNORT_OPTS barnyard2 $BARNYARD_OPTS ;; stop) killall snort killall barnyard2 ;; *) echo "Usage: $0 {start|stop}" exit 1 esac系统服务注册
chmod +x /etc/init.d/snort chkconfig --add snort chkconfig snort on6. 验证与排错指南
基础功能验证
# 测试模式验证 snort -T -c /usr/local/snort/etc/snort.conf # 实时抓包测试 snort -i eth0 -A console -q -c /usr/local/snort/etc/snort.conf常见错误处理
libpcap版本冲突
# 错误现象:snort: error while loading shared libraries: libpcap.so.1 # 解决方案: ln -s /usr/local/libpcap/lib/libpcap.so.1 /usr/lib64/ ldconfigDAQ模块加载失败
# 检查加载的DAQ模块 snort --list-daq-modules规则语法错误
# 使用-R参数测试单个规则文件 snort -c /etc/snort/snort.conf -R local.rules -T
性能监控命令
watch -n 1 "ps aux | grep -E 'snort|barnyard' | grep -v grep"7. 安全加固建议
权限最小化
useradd -r -s /sbin/nologin snort chown -R snort:snort /usr/local/snort/var/日志轮转配置
/var/log/snort/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 snort snort }网络隔离建议
- 将管理接口与嗅探接口物理分离
- 使用专用VLAN传输告警信息
在完成所有配置后,建议通过模拟攻击验证检测效果。例如使用nmap进行端口扫描测试,观察Snort是否能够正确生成告警日志。对于老旧系统,定期检查系统资源使用情况至关重要,可通过crontab设置每小时检查一次的监控任务。