必须部署Snort IDS实现实时流量检测与告警,步骤包括:安装Snort及规则集、通过dpkg-reconfigure配置网卡与子网、配置systemd服务开机自启、放行TCP 3000端口并验证告警通路。

你在统信UOS上部署了Web服务或数据库,但日志里频繁出现扫描行为、异常连接尝试或暴力登录记录,仅靠防火墙无法识别已建立连接后的恶意载荷,必须部署入侵检测系统(IDS)实时分析网络流量并告警。
安装并启用Snort IDS核心组件
Snort是Linux平台最成熟的开源NIDS,支持规则匹配、协议解析与实时告警,统信UOS桌面版与服务器版均兼容其Debian/Ubuntu源包。该步骤为整个IDS运行的基础,缺失则后续配置全部失效。
打开终端(Ctrl+Alt+T)→执行sudo apt update刷新软件源→运行sudo apt install -y snort snort-rules-default安装主程序与默认规则集→安装完成后立即执行sudo dpkg-reconfigure snort启动交互式配置向导。
在向导中:第一屏选择“【eth0】”(请将eth0替换为你实际用于业务通信的网卡名,如ens33、enp0s3;选错会导致Snort监听空流量)→第二屏输入本地子网CIDR格式(如192.168.1.0/24),不可填any或0.0.0.0/0,否则触发误报风暴→第三屏保持默认“否”,不启用数据库日志(避免引入额外依赖故障点)→最后确认写入配置文件/etc/snort/snort.conf。
这一步操作起来很简单,直接回车确认即可,但必须确保网卡名和子网填写准确,否则Snort启动后会提示“FATAL ERROR: Can't find variable HOME_NET”,服务将无法加载。
配置Snort为守护进程并开机自启
Snort默认以命令行模式运行,退出终端即停止检测;生产环境必须将其转为systemd服务,实现后台常驻、自动拉起与日志归集。
方法一:启用预置service单元(推荐)
执行sudo systemctl enable snort→再运行sudo systemctl start snort→最后用sudo systemctl status snort验证状态,输出中必须含“active (running)”且无红色failed字样。
方法二:手动创建service文件(当systemctl list-unit-files无snort条目时使用)
执行sudo nano /etc/systemd/system/snort.service→粘贴以下内容:
[Unit]
Description=Snort Intrusion Detection System
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
保存后执行sudo systemctl daemon-reload→再运行sudo systemctl enable --now snort。
注意:ExecStart中的-i eth0必须与之前dpkg-reconfigure时填写的网卡名严格一致,否则服务启动失败且错误日志极难定位。
放行IDS管理端口并验证告警通路
Snort本身不提供Web界面,但需开放TCP 3000端口供外部SIEM平台(如Wazuh、Elastic SIEM)或本地curl工具拉取实时告警事件,否则检测结果无法被运维人员感知。
第一步:确认firewalld已启用(非UFW)→执行sudo firewall-cmd --state,返回running才继续;若为not running,则先执行sudo systemctl start firewalld并设开机自启。
第二步:添加永久端口规则→运行sudo firewall-cmd --permanent --add-port=3000/tcp→再执行sudo firewall-cmd --reload使规则生效。
第三步:本地验证告警输出→执行sudo tail -f /var/log/snort/alert,另开一个终端模拟攻击:ping -c 3 192.168.1.100(目标IP填本机地址),若alert日志中出现“ICMP Echo request”类记录,说明IDS已捕获并写入告警。
第四步:从另一台机器测试端口可达性→执行curl http://<strong>【本机IP】</strong>:3000/alerts(需提前部署轻量API代理,此处仅验证端口通断),返回HTTP 200即表示管理通道就绪。

















