准备环境与安装依赖
在开始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)或订阅官方规则增强检测能力。