找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 1057|回复: 3

【OpenWrt入侵检测/防御】关于在路由器上使用snort3的建议

[复制链接]
发表于 2026-4-12 18:10 | 显示全部楼层 |阅读模式
本帖最后由 Harvey·Ho 于 2026-4-12 18:10 编辑

一直以来,在 OpenWrt 上使用 IDS/IPS 功能是一个很专业的需求,一般人根本不会用到它,但随着 snort3 的发布,让这项功能在 OpenWrt 上的部署方式更加灵活,既可以作为旁路只告警的入侵检测系统 (IDS),也可以作为串联在流量路径中直接阻断威胁的入侵防御系统 (IPS)。



📦 安装
在 OpenWrt 23.05+ 等较新版本上,可以通过软件包管理器直接安装 Snort 3 及其核心依赖:
  1. opkg update
  2. opkg install snort3 kmod-nft-queue ethtool
复制代码
⚙️ 核心配置
OpenWrt 的 Snort 3 包采用了模块化的设计,将核心配置与用户自定义配置分离开来,方便升级和维护。你需要关注的主要是两个 Lua 配置文件:

1. 定义你的网络范围 (/etc/snort/homenet.lua)
这是第一步,你需要在这里定义你的“内部”可信网络,其余的都视为“外部”网络。
  1. # 示例:如果你的内网网段是 192.168.1.0/24
  2. HOME_NET = [[ 192.168.1.0/24 ]]
  3. EXTERNAL_NET = "!$HOME_NET"
复制代码

2. 配置 Snort 的工作模式 (/etc/snort/local.lua)
这里是配置的核心,决定了 Snort 是只“看”还是出手“拦”。

  • 仅告警模式 (IDS - 推荐新手先从此模式开始)
此模式下,Snort 只分析并记录匹配规则的流量,不会造成网络中断。在 local.lua 中设置 mode = tap 即可。

  • 串联防御模式 (IPS - 性能更强,但需谨慎)
此模式下,Snort 可以主动丢弃恶意数据包。你需要进行以下设置:

a. 启用 IPS 模式:在 local.lua 中,将 mode 从 tap 改为 inline,并取消 snort["-Q"] = true 的注释。
  1. # 编辑 /etc/snort/local.lua 文件
  2. snort["-Q"] = true  -- 启用 inline 模式

  3. ips = {
  4.     mode = inline,   -- 将模式改为 inline
  5.     -- ... 其他配置
  6. }
复制代码
b. 配置数据获取接口 (DAQ):在 local.lua 中配置 N购物 (NetFilter Queue) 模块,告诉 Snort 去哪个队列抓包。
  1. daq = {
  2.     module_dirs = { '/usr/lib/daq' },
  3.     inputs = { '0' }, -- 队列编号,需与后续 nftables 规则中的队列号匹配
  4.     modules = {
  5.         {
  6.             name = 'n购物',
  7.             mode = 'inline',
  8.             variables = { 'device=eth1' } -- eth1 通常是你的 WAN 口,请根据实际情况修改
  9.         }
  10.     }
  11. }
复制代码
c. 配置 nftables 流量转发:创建 nftables 规则,将 WAN 口的流量“镜像”一份发送到 Snort 监听的队列中。
  1. # 创建一个名为 IPS 的链,在转发路径 (forward) 上处理流量
  2. nft 'add chain inet fw4 IPS { type filter hook forward priority filter; }'
  3. # 插入规则,将所有转发流量复制一份发送到队列 0 (bypass 参数确保即使 Snort 挂了也不断网)
  4. nft insert rule inet fw4 IPS counter queue num 0 bypass
复制代码
⚠️ 重要提示:硬件卸载
在启用 IPS 模式前,强烈建议关闭 WAN 网卡的 通用接收卸载 (GRO) 功能,否则 Snort 可能无法正确分析数据包。
  1. # 假设你的 WAN 口是 eth1
  2. ethtool -K eth1 gro off
复制代码
📜 规则管理
没有规则的 Snort 就像一个没有杀毒软件的电脑。OpenWrt 社区提供了便捷的脚本来管理规则。

下载规则:

如果你有 Snort 的Oinkcode(订阅码,即使是免费的),可以使用 snort-rules --oinkcode <你的Oinkcode> 来下载官方规则集。

也可以手动下载免费的Snort Community Rules并解压到 /etc/snort/rules/ 目录。

测试安装:配置完成后,务必先进行测试,确保没有配置错误。
  1. snort -c /etc/snort/snort.lua -T
复制代码
如果看到 Snort successfully validated the configuration.,就代表成功了。

启用/重启服务:
  1. /etc/init.d/snort enable
  2. /etc/init.d/snort restart
复制代码
📊 其他有用信息
性能参考:有用户在 Intel N150 这样的现代 x86 平台上测试,Snort 3 可以轻松跑满 1000Mbps 的对称带宽而不至于让 CPU 完全饱和。对于性能较弱的嵌入式设备,建议先以 IDS 模式运行,评估负载情况。

查看告警:告警信息会记录在系统日志中,你可以通过 logread | grep snort 命令查看实时告警。

替代选择:如果你的设备性能实在有限,或者觉得 Snort 3 的配置仍然复杂,可以考虑 OpenWrt 上另一个轻量级的 IPS 方案 suricata。

💎 总结
在 OpenWrt 上配置 Snort 3 确实比普通软件复杂一些,特别是 IPS 模式涉及网络接口和防火墙的底层调整。所以建议先从 IDS (tap) 模式开始,确保能正常安装、配置规则并看到告警日志。对规则和网络环境熟悉后,再按步骤切换到 IPS (inline) 模式。

始终记得先 -T 测试配置,再 restart 服务。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2026-4-12 18:17 来自手机 | 显示全部楼层
1楼占位
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-4-13 22:38 | 显示全部楼层
这个有用,顶起来
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-23 17:10 | 显示全部楼层
这个有用,顶起来
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 19:34

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表