Snort 2.9.7.0 在 CentOS 6.5 环境部署:3个关键依赖与5步配置验证

Snort 2.9.7.0 在 CentOS 6.5 环境部署:关键依赖与配置验证实战指南

1. 环境准备与依赖解析

在CentOS 6.5这类老旧系统上部署Snort 2.9.7.0,首要任务是解决依赖兼容性问题。不同于现代系统通过yum即可解决的依赖关系,我们需要手动编译三个核心组件:

关键依赖矩阵

依赖项版本要求功能作用兼容性风险点
libpcap1.0.0底层数据包捕获内核版本匹配问题
DAQ2.0.4数据采集抽象层编译参数依赖性
Barnyard21.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 install

2. 源码编译与系统集成

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/profile

3. 核心配置文件调优

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 128

4. 规则集管理与验证

在资源受限环境中,规则集需要精简:

基础规则启用列表

  • 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 on

6. 验证与排错指南

基础功能验证

# 测试模式验证 snort -T -c /usr/local/snort/etc/snort.conf # 实时抓包测试 snort -i eth0 -A console -q -c /usr/local/snort/etc/snort.conf

常见错误处理

  1. libpcap版本冲突

    # 错误现象:snort: error while loading shared libraries: libpcap.so.1 # 解决方案: ln -s /usr/local/libpcap/lib/libpcap.so.1 /usr/lib64/ ldconfig
  2. DAQ模块加载失败

    # 检查加载的DAQ模块 snort --list-daq-modules
  3. 规则语法错误

    # 使用-R参数测试单个规则文件 snort -c /etc/snort/snort.conf -R local.rules -T

性能监控命令

watch -n 1 "ps aux | grep -E 'snort|barnyard' | grep -v grep"

7. 安全加固建议

  1. 权限最小化

    useradd -r -s /sbin/nologin snort chown -R snort:snort /usr/local/snort/var/
  2. 日志轮转配置

    /var/log/snort/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 snort snort }
  3. 网络隔离建议

    • 将管理接口与嗅探接口物理分离
    • 使用专用VLAN传输告警信息

在完成所有配置后,建议通过模拟攻击验证检测效果。例如使用nmap进行端口扫描测试,观察Snort是否能够正确生成告警日志。对于老旧系统,定期检查系统资源使用情况至关重要,可通过crontab设置每小时检查一次的监控任务。