news 2026/5/31 1:01:26

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/5/30 17:13:41

恒压恒流同步降压转换器 5.1V固定输出/可调输出YB2416E 30V/3A

YB2416 是一款输入耐压超过 40V,在 4.5V~30V 输入电压条件下正常工作,并且能够实现精确恒压以 及恒流的同步降压型 DC-DC 转换器。YB2416 内部集成 80mΩ的上管和 40mΩ的下管, 无需外部肖特基二极管,可连续输出 3A 电流。输出 3A…

作者头像 李华
网站建设 2026/5/29 15:59:44

如何利用JSP实现大文件上传的进度监控?

陕西Java程序员外包项目解决方案:原生JS大文件传输系统(兼容IE9) 兄弟,作为陕西的个人Java程序员,我太懂你现在的处境了——甲方要大文件上传,还要兼容IE9,预算卡得死死的,自己头发…

作者头像 李华
网站建设 2026/5/30 23:06:59

一文全知道,PCB制造相关的国际、国家和行业标准有哪些?

与PCB制造相关的标准,一般常用的标准体系大致可分为:国际通用标准(IPC、IEC、ISO、UL 等)、中国国家/行业标准,以及特定行业(汽车、航空航天、医疗等)的专用标准或体系要求。下面小班按体系分类…

作者头像 李华
网站建设 2026/5/29 20:41:01

wangEditor粘贴MathType公式转图片格式处理

从迷茫到突破:我在集团信创Word导入系统项目中的成长记 一、初遇难题:在技术迷宫中迷失方向(2024年3月) "小张,这个政府采购项目的标书必须在今天下班前完成格式调整!"主管的催促声还在耳边回响…

作者头像 李华
网站建设 2026/5/29 20:58:16

搜索算法详解:从基础到高级

一、引言 搜索算法是计算机科学中最基本、最重要的算法类别之一。它们用于在数据集合中查找特定元素、寻找最优解或探索可能的路径。搜索算法的效率直接影响程序的性能,因此在各种应用场景中都有广泛的应用,包括数据库查询、路径规划、人工智能、游戏开发等。 本文将从最简单…

作者头像 李华
网站建设 2026/5/28 21:49:02

Java 读取 Excel 文件

Java 读取 Excel 文件一、前置准备:引入依赖方案 1:Apache POI(功能全,兼容所有Excel版本)方案 2:EasyExcel(阿里开源,低内存,推荐大数据量)二、方案 1&#…

作者头像 李华