Snort 入侵检测系统搭建指南

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

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

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

6.6监听网卡不匹配

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

ip addr

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值