news 2026/6/16 2:56:08

Snort 入侵检测系统搭建指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Snort 入侵检测系统搭建指南

一、安装准备:环境依赖安装

在 CentOS7 系统中搭建 Snort,需先安装必备依赖库与拓展包,确保后续安装顺利进行。

复现平台

天枢一体化虚拟仿真平台

操作系统

CentOS7

1.1基础依赖库安装

执行以下命令安装核心依赖:

sudo yum install -y gcc flex bison zlib libpcap pcre libdnet tcpdump

1.2libnghttp2 依赖安装

最新版 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.3Barnyard2 安装配置(日志转存数据库)

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.confHOME_NET配置是否与服务器实际 IP 段一致:

cat /etc/snort/snort.conf | grep "ipvar HOME_NET"

6.6监听网卡不匹配

通过以下命令确认正确网卡名称:

ip addr

修改snort.confbarnyard2.conf中的网卡配置(如 eth0、ens33)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:20:04

JSP如何结合SM4加密实现大文件传输安全?

大文件传输解决方案(源码级交付) 作为山西IT行业软件公司项目负责人,我深刻理解当前需求的复杂性与紧迫性。针对政府、央企客户对100G级文件传输、高稳定性断点续传、信创兼容、数据安全的核心诉求,结合集团多项目统一组件、低成…

作者头像 李华
网站建设 2026/6/14 17:44:46

JSP中如何利用分片技术实现超大附件的上传优化?

专业开发日记:WebUploader大文件传输系统(信创兼容版) 日期:2023年11月15日 星期三 郑州 晴 项目背景 今日接到客户紧急需求:开发一套支持20G大文件传输的Web系统,需兼容IE8及信创浏览器(龙芯…

作者头像 李华
网站建设 2026/6/13 13:43:47

从 paperxie 到多工具矩阵:AI 毕业论文写作工具的 “差异化辅助” 指南

毕业论文写作的 “痛点” 从来不是 “写不出文字”,而是选题的精准性、文献的匹配度、逻辑的严谨性、格式的规范性等环节的 “效率与质量平衡”。随着 AI 工具的迭代,单一工具已难以覆盖全流程需求 —— 从 paperxie 的 “流程化引导”,到其他…

作者头像 李华
网站建设 2026/6/15 14:52:55

Hazelcast Kafka集成:3大核心优势与实战部署指南

Hazelcast Kafka集成:3大核心优势与实战部署指南 【免费下载链接】hazelcast hazelcast - 这是一个分布式数据存储和计算平台,用于构建高性能、可扩展的应用程序。适用于实时数据处理、缓存、分布式计算等场景。特点包括高性能、可扩展 项目地址: http…

作者头像 李华
网站建设 2026/6/12 3:10:14

Origin科研绘图——双分组柱状图

更多免费教程和软件 : 双分组柱状图 双分组带误差棒柱状图(Grouped Bar Chart with Error Bars),常用于展示多个类别间在不同实验条件或处理组之间的数值差异。它通过清晰的布局、颜色区分和误差信息示意,使数据表达更加完整和可解释。 效果图 ⭐ 图的特点概述 1. 数据…

作者头像 李华
网站建设 2026/6/14 0:33:21

74、Sendmail 配置宏与特性全解析

Sendmail 配置宏与特性全解析 在邮件服务器配置中,sendmail 是一款功能强大且广泛使用的邮件传输代理。为了实现灵活的配置,sendmail 提供了丰富的 m4 宏,这些宏可以帮助我们根据不同的需求定制邮件服务器的行为。本文将详细介绍 sendmail 中常用的 m4 宏,包括 FEATURE 宏…

作者头像 李华