news 2026/5/1 5:56:13

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/4/24 1:09:02

JSP中如何利用多线程技术实现大文件并行上传?

大文件传输系统解决方案 作为浙江IT行业软件公司项目负责人,我们面临的大文件传输需求具有很高的技术挑战性。以下是我针对该需求的专业解决方案分析。 需求分析总结 超大文件传输:单文件100GB,文件夹层级结构保持高稳定性:支持…

作者头像 李华
网站建设 2026/5/1 5:54:12

wangEditor处理word文档超链接自动检测功能

【企业级富文本编辑器功能扩展项目纪实——从需求分析到阿里云OSS集成】 2023年X月X日 周X 上海徐汇区 一、需求拆解与核心约束 作为前端工程师,近期接到客户紧急需求:在现有Vue2 wangEditor4的后台系统中新增三大功能: Word粘贴增强&…

作者头像 李华
网站建设 2026/5/1 5:54:35

48、网络安全与用户认证全解析

网络安全与用户认证全解析 网络安全资源与策略制定 在网络安全领域,有许多可利用的资源。SANS 研究所提供每周通过电子邮件发送的信息丰富的安全时事通讯,还有一个实用的在线阅读室,相关资源可从其网站 http://www.sans.org 获取。另外,像 http://www.insecure.org 这样的…

作者头像 李华
网站建设 2026/5/1 5:55:24

64、网络路由协议配置与参数详解

网络路由协议配置与参数详解 在网络路由领域,合理的配置和参数设置对于网络的高效运行至关重要。下面将详细介绍多种网络路由协议的相关配置及参数。 1. IS - IS 相关参数配置 IS - IS(Intermediate System to Intermediate System)是一种内部网关协议,以下是其相关参数…

作者头像 李华
网站建设 2026/4/23 12:35:52

15、网络渗透测试及WRT54G硬件改造实用指南

网络渗透测试及WRT54G硬件改造实用指南 1. CDMA连接与SSH访问设置 在使用CDMA连接时,若连接中断后重新连接,ppp0接口可能会从提供商处获取不同的IP地址。为了定期获取IP地址信息更新,可将 /usr/bin/ppp-ip.sh 添加到crontab中。具体操作步骤如下: - 确定合适的时间间隔…

作者头像 李华