一、安装准备:环境依赖安装
在 CentOS7 系统中搭建 Snort,需先安装必备依赖库与拓展包,确保后续安装顺利进行。
| 复现平台 | |
| 操作系统 | CentOS7 |

1.1 基础依赖库安装
执行以下命令安装核心依赖:
| sudo yum install -y gcc flex bison zlib libpcap pcre libdnet tcpdump |
1.2 libnghttp2 依赖安装
最新版 Snort 需依赖 libnghttp2,通过 EPEL 源安装:
| sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install -y libnghttp2 |
1.3 源代码安装额外依赖(仅源码安装方式需执行)
若选择从源代码安装 Snort,需补充安装开发包:
| sudo yum install -y zlib-devel libpcap-devel pcre-devel libdnet-devel openssl-devel libnghttp2-devel luajit-devel |
二、Snort 安装:两种安装方式
2.1 通过 yum 安装(推荐,简化流程)
直接使用 yum 命令快速安装:
| sudo yum install -y snort |
2.2通过源代码安装(自定义配置更灵活)
2.2.1. 准备下载目录
| mkdir ~/snort_src && cd ~/snort_src |
2.2.2. 安装 DAQ(数据采集库)
- 下载 DAQ 源代码包(可替换版本号为最新版):
| wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz |
- 解压并进入目录:
| tar -xvzf daq-2.0.7.tar.gz cd daq-2.0.7 |
- 编译安装:
| ./configure && make && sudo make install |
- 返回下载目录:
| cd ~/snort_src |
2.3安装 Snort
- 下载 Snort 源代码(可替换版本号为最新版):
| wget https://www.snort.org/downloads/archive/snort/snort-2.9.16.1.tar.gz |
- 解压并进入目录:
| tar -zxvf snort-2.9.16.1.tar.gz cd snort-2.9.16.1 |
- 编译安装(启用 sourcefire):
| ./configure --enable-sourcefire && make && sudo make install |
三、Snort 配置:NIDS 模式部署
3.1基础环境配置
3.1.1. 更新共享库与创建符号链接
| sudo ldconfig sudo ln -s /usr/local/bin/snort /usr/sbin/snort |
3.1.2 创建专用用户与用户组
| sudo groupadd snort sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort |
3.1.3 建立目录结构与设置权限
| # 创建目录 sudo mkdir -p /etc/snort/rules sudo mkdir /var/log/snort sudo mkdir /usr/local/lib/snort_dynamicrules # 设置权限 sudo chmod -R 5775 /etc/snort sudo chmod -R 5775 /var/log/snort sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules sudo chown -R snort:snort /etc/snort sudo chown -R snort:snort /var/log/snort sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules |
3.1.4. 创建规则相关文件
| sudo touch /etc/snort/rules/white_list.rules sudo touch /etc/snort/rules/black_list.rules sudo touch /etc/snort/rules/local.rules |
3.1.5. 复制配置文件(仅源码安装需执行)
| sudo cp ~/snort_src/snort-2.9.16.1/etc/*.conf* /etc/snort sudo cp ~/snort_src/snort-2.9.16.1/etc/*.map /etc/snort |
3.2检测规则下载与配置
Snort 提供三种规则集:社区规则(免费)、注册规则(需注册获取 Oink 代码)、订阅规则(付费订阅)。
3.2.1 社区规则(快速测试用)
- 下载并解压:
| wget https://www.snort.org/rules/community -O ~/community.tar.gz sudo tar -xvf ~/community.tar.gz -C ~/ sudo cp ~/community-rules/* /etc/snort/rules |
- 注释不必要的规则引用:
| sudo sed -i 's/include \$RULE\_PATH/#include \$RULE\_PATH/' /etc/snort/snort.conf |
3.2.2. 注册用户规则(需注册获取 Oink 代码)
- 替换 Oink 代码并下载:
| wget https://www.snort.org/rules/snortrules-snapshot-29120.tar.gz?oinkcode=你的Oink代码 -O ~/registered.tar.gz |
- 解压到配置目录:
| sudo tar -xvf ~/registered.tar.gz -C /etc/snort |
3.3核心配置文件修改(snort.conf)
编辑配置文件:
| sudo vim /etc/snort/snort.conf |
3.3.1 配置网络地址
| # 保护的内部网络(替换为实际IP段) ipvar HOME_NET 172.16.10.4/24 # 外部网络(默认即可) ipvar EXTERNAL_NET !$HOME_NET |
3.3.2 配置规则文件路径
| var RULE_PATH /etc/snort/rules var SO_RULE_PATH /etc/snort/so_rules var PREPROC_RULE_PATH /etc/snort/preproc_rules var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules |
3.3.3 配置日志输出
| output unified2: filename snort.log, limit 128 |
3.3.4 启用规则集
| # 启用本地规则 include $RULE_PATH/local.rules # 若使用社区规则,添加以下行 include $RULE_PATH/community.rules |
四、功能验证:测试 Snort 运行
4.1配置有效性测试
执行以下命令验证配置是否正确:
| sudo snort -T -c /etc/snort/snort.conf |
成功提示:Snort successfully validated the configuration!,若报错需根据提示修复(常见问题:缺少文件 / 文件夹、规则引用错误)。
4.2警报功能测试
4.2.1 添加测试规则
编辑本地规则文件:
| sudo vi /etc/snort/rules/local.rules |
添加 ICMP 测试规则:
| alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;) |
规则说明:
- alert:触发时产生警报
- icmp:协议类型
- any any:源地址 / 端口(所有)
- $HOME_NET any:目标地址 / 端口(保护网络 + 所有端口)
- sid:唯一规则 ID(本地规则需≥1000001)
- rev:规则版本
4.2.2 启动 Snort 并监听
| # ens33为网卡名称,可通过ip addr或ifconfig查询 sudo snort -A console -i ens33 -u snort -g snort -c /etc/snort/snort.conf |
4.2.3测试效果
从其他计算机 ping 目标服务器,终端会输出 ICMP 警报,按Ctrl+C停止监听。
4.2.4 查看日志
| snort -r /var/log/snort/snort.log.时间戳(按TAB补全) |
4.3后台服务运行
4.3.1 下载启动脚本(源码安装需执行)
| wget https://www.snort.org/documents/snort-startup-script-for-centos -O ~/snortd sudo chmod 755 ~/snortd && sudo mv ~/snortd /etc/init.d/ |
4.3.2 启动服务
| sudo systemctl daemon-reload sudo systemctl start snortd |
4.3.3 服务管理命令
| # 停止服务 sudo systemctl stop snortd # 重启服务 sudo systemctl restart snortd # 查看状态 sudo systemctl status snortd |
五、可视化 WEB 报警平台搭建
5.1安装基础组件
| yum install -y mysql-server mysql-devel php-mysql php-pear php-gd libtool php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-pecl-apc # 设置MySQL开机自启并启动 chkconfig --level 235 mysqld on systemctl start mysqld |
5.2 MySQL 数据库配置
5.2.1 设置 root 密码
| /usr/bin/mysqladmin -u root password '你的密码' |
5.2.2 创建 Snort 数据库与用户
| mysql -u root -p # 输入密码后执行以下SQL命令 mysql> create database snort; mysql> use snort; mysql> create user 'snort'@'localhost' IDENTIFIED BY '******'; #在以上命令中,“******”是MySQL中⽤户Snort的密码。 #接着创建名为snort、密码为“123456”的数据库⽤户,并赋予名为“snort”的数据库 权限 mysql> grant create,select,update,insert,delete on snort.* to snort@localhost i dentified by '******'; mysql> set password for 'snort'@'localhost'=password('******'); //为⽤户snor t设置访问密码 mysql> source ~/barnyard2-2-1.13/schemas/create_mysql; //该命令不可重复输 ⼊,⼀定要执⾏此命令 mysql> show tables; mysql> use snort; +------------------+ | Tables_in_snort | +------------------+ | data | | detail | | encoding | | event | | icmphdr | | iphdr | | opt | Snort⼊侵检测系统搭建(Centos7) 12| reference | | reference_system | | schema | | sensor | | sig_class | | sig_reference | | signature | | tcphdr | | udphdr | +------------------+ 16 rows in set (0.00 sec) mysql> flush privileges; //刷新数据库权限 mysql> exit |
5.3 Barnyard2 安装配置(日志转存数据库)
5.3.1 下载并解压 Barnyard2
| wget https://github.com/firnsy/barnyard2/archive/v2-1.13.zip unzip v2-1.13.zip cd ~/barnyard2-2-1.13/ |
5.3.2 编译安装
| ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql make make install |
5.3.3 配置 Barnyard2
| # 复制配置文件 sudo cp ~/barnyard2-2-1.13/etc/barnyard2.conf /etc/snort/ # 创建日志目录与状态文件 sudo mkdir /var/log/barnyard2 sudo chown snort.snort /var/log/barnyard2 sudo touch /var/log/snort/barnyard2.waldo sudo chown snort.snort /var/log/snort/barnyard2.waldo # 编辑配置文件 sudo vim /etc/snort/barnyard2.conf |
修改配置文件关键参数:
| config logdir:/var/log/barnyard2 config hostname: localhost config interface: ens33 # 替换为实际网卡 config waldo_file:/var/log/snort/barnyard2.waldo # 末尾添加数据库配置 output database: log, mysql, user=snort password=你的密码 dbname=snort host=localhost sensor name=sensor01 |
5.3.4 启动 Barnyard2
| barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort |
5.4安装依赖插件
| yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd mcrypt libmcrypt libmcrypt-devel php-pear # 安装PEAR插件(单次失败可多次尝试) pear channel-update pear.php.net pear install mail Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman mail_mime |
5.5安装 ADODB
| cd ~/snort_src wget https://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-520-for-php5/adodb-5.20.18.zip tar -xvzf adodb-5.20.8.tar.gz sudo mv adodb5 /var/adodb sudo chmod -R 755 /var/adodb |
5.6安装 BASE(WEB 管理平台)
| # 下载并解压 wget https://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz tar -zxvf base-1.4.5.tar.gz sudo mv base-1.4.5 /var/www/html/base/ # 配置BASE cd /var/www/html/base sudo cp base_conf.php.dist base_conf.php sudo vim /var/www/html/base/base_conf.php |
修改 BASE 配置:
| $BASE_urlpath = '/base'; # 第50行 $DBlib_path = '/var/adodb/'; # 第80行 $alert_dbname = 'snort'; # 第102行 $alert_host = 'localhost'; $alert_port = ''; $alert_user = 'snort'; $alert_password = '你的密码'; # 第106行,与MySQL中snort用户密码一致 |
设置文件权限:
| sudo chown -R snort:snort /var/www/html/base sudo chmod o-r /var/www/html/base/base_conf.php |
5.7启动 WEB 服务
| # 启动mysql服务 service mysqld start # 启动HTTP服务 service httpd start # 关闭防火墙(测试环境,生产环境需配置防火墙规则) systemctl stop firewalld.service # 查看防火墙状态 firewall-cmd --state |
访问 WEB 平台:浏览器输入http://服务器IP/base
六、常见问题与解决方案
6.1编译安装 DAQ 报错:缺少 aclocal-1.15
| # 解决方案 sudo yum install -y libtool # 若仍报错,更新软件源后重试 yum upgrade |
6.2启动 Snort 报错:加载 libdnet.1 失败
| ln -s /usr/lib64/libdnet.so.1.0.1 /usr/lib64/libdnet.1 |
6.3安装 MySQL 报错:无 mysql-server 包
| # 步骤1:下载MySQL repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm # 步骤2:安装repo包 rpm -ivh mysql-community-release-el7-5.noarch.rpm # 步骤3:安装MySQL yum install mysql-server |
6.4运行 Barnyard2 报错:无法打开 sid-msg.map
| sudo touch /etc/snort/sid-msg.map |
6.5Ping 测试无日志输出
检查snort.conf中HOME_NET配置是否与服务器实际 IP 段一致:
| cat /etc/snort/snort.conf | grep "ipvar HOME_NET" |
6.6监听网卡不匹配
通过以下命令确认正确网卡名称:
| ip addr |
修改snort.conf与barnyard2.conf中的网卡配置(如 eth0、ens33)。
83

被折叠的 条评论
为什么被折叠?



