news 2026/4/17 7:29:15

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/16 12:12:33

网页前端如何通过JSP实现大文件上传的拖拽功能?

大文件传输系统解决方案 作为北京某软件公司的项目负责人,我针对大文件传输需求提出以下完整解决方案: 一、需求分析与技术选型 基于贵公司需求,我们决定采用自主研发部分开源组件整合的方案,主要原因如下: 现有开…

作者头像 李华
网站建设 2026/4/13 0:41:15

DiffSynth-Studio训练踩坑记录

DiffSynth-Studio训练踩坑记录:PyTorch 2.5.1 Meta Tensor 新增模块 strictTrue 导致的加载失败环境: PyTorch 2.5.1DiffSynth-Studio / Wan2.1-T2V-1.3B 任务:在官方 WanVideo 模型基础上增加模块,继续训练 LoRA这篇文章记录一…

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

7、OpenWrt第三方固件使用指南

OpenWrt第三方固件使用指南 1. 配置和使用OpenWrt 在Linksys设备上安装OpenWrt后,可通过GUI或命令行进行配置。强烈建议使用命令行,它功能强大,便于实现高级配置,而GUI功能有限,仅能进行基本设置。OpenWrt命令行基于Linux/UNIX,由BusyBox处理,它是一个小而强大的可执行…

作者头像 李华
网站建设 2026/4/17 1:00:02

在调度的花园里面挖呀挖

上文使用koordinator演示gang-scheduling和binpack调度, 已经生效。4个2卡Pod龟缩在一个节点,另外一个2卡Pod被挤到另外一个节点(每节点上虚拟gpu:8卡)。此时我们再尝试申请8卡作业,pod会Pending状态。但一…

作者头像 李华
网站建设 2026/3/25 19:30:32

万亿参数Kimi K2大语言模型:如何3分钟完成快速部署的完整指南

在人工智能技术飞速发展的今天,开发者和研究者面临着一个共同的挑战:如何在有限的计算资源下部署和运行万亿参数级别的大语言模型?Moonshot AI最新开源的Kimi-K2-Base模型以其1万亿总参数和320亿激活参数的混合专家架构,为这一难题…

作者头像 李华