实用科技屋
霓虹主题四 · 更硬核的阅读氛围

Snort入侵检测部署步骤详解

发布时间:2025-12-21 13:21:32 阅读:331 次

准备环境与安装依赖

在开始ref="/tag/273/" style="color:#479099;font-weight:bold;">部署 Snort 之前,先确认你的系统环境。这里以 CentOS 8 或 Ubuntu 20.04 为例,大多数生产服务器跑的也是这类稳定发行版。打开终端,更新软件包列表:

sudo apt update && sudo apt upgrade -y

接着安装必要的依赖库,Snort 需要 libpcap、pcre、libnet 等组件来捕获和分析流量:

sudo apt install -y build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdumbnet-dev liblzma-dev openssl libssl-dev

下载并编译 Snort 源码

Snort 官方推荐从源码编译安装,这样可以自定义功能模块。进入临时目录:

cd /tmp
wget https://www.snort.org/downloads/snortplus/snort-2.9.26.tar.gz
tar -xvzf snort-2.9.26.tar.gz
cd snort-2.9.26

配置编译选项,启用常用插件和支持:

./configure --enable-sourcefire --enable-tcmalloc --enable-ipv6 --with-dnet-includes=/usr/include --with-dnet-libraries=/usr/lib

然后开始编译并安装:

make && sudo make install

创建用户和目录结构

为了安全起见,Snort 不应以 root 权限运行。创建专用用户:

sudo groupadd snort
sudo useradd -r -s /sbin/nologin -g snort snort

创建配置和日志目录:

sudo mkdir -p /etc/snort/rules /var/log/snort /usr/local/lib/snort_dynamicrules
sudo cp etc/*.conf* /etc/snort/
sudo cp etc/*.map /etc/snort/
sudo touch /etc/snort/rules/local.rules

配置基础规则与接口监听

编辑主配置文件,告诉 Snort 哪些网段是可信的内网:

sudo nano /etc/snort/snort.conf

找到变量定义部分,修改 HOME_NET 为你实际的局域网段,比如:

var HOME_NET 192.168.1.0/24

将默认的 rule_path 指向本地规则目录:

var rule_path /etc/snort/rules

在文件末尾加入本地规则引用:

include $RULE_PATH/local.rules

测试配置并启动服务

先检查配置是否正确:

sudo /usr/local/bin/snort -T -c /etc/snort/snort.conf -i eth0

如果提示“Initialization Complete”,说明配置没问题。这里的 eth0 是你要监听的网络接口,根据实际情况替换为 ens33 或其他名称。

现在可以后台运行 Snort 进行实时检测:

sudo /usr/local/bin/snort -c /etc/snort/snort.conf -i eth0 -u snort -g snort -D -l /var/log/snort

添加简单检测规则试试效果

编辑本地规则文件,加一条测试规则:

sudo nano /etc/snort/rules/local.rules

写入一行,检测访问特定端口的行为:

alert tcp any any -> $HOME_NET 4444 (msg:"可疑反向 Shell 尝试"; sid:1000001; rev:1;)

保存后重启 Snort。然后从另一台机器执行 telnet your_server_ip 4444,查看 /var/log/snort/alert 文件是否有告警记录。

看到日志中出现对应告警,就说明 Snort 已经正常工作了。后续可以根据需要导入社区规则集(如 Snort Community Rules)或订阅官方规则增强检测能力。