unflawed-code/route10-suricata-runner

GitHub: unflawed-code/route10-suricata-runner

专为 Route10 路由器优化的 Suricata IDS/IPS 自动化管理工具,通过规则裁剪和内存优化解决低配设备运行入侵检测的资源瓶颈。

Stars: 0 | Forks: 0

# Route10 Suricata 策略处理器与 CLI 自动化 本项目提供了一套稳健的自动化解决方案,用于在 Route10 上管理 Suricata。它针对 Route10 的 1GB RAM 进行了专门优化,并提供灵活的运行模式。 ## 功能特性 - **灵活的运行模式**: - **纯 CLI 模式(推荐)**:独立运行 Suricata,Web UI **禁用**。该脚本手动启动 `ips` 守护进程和 `suricata` 引擎,并采用优化设置以确保最大稳定性。 - **优化 UI 模式**:在 Web UI 中保持 Suricata **启用**。脚本检测系统进程,修剪规则并重启引擎,允许使用 UI 监控状态,同时仍受益于内存优化。 - **可配置的安全类别**:允许用户选择要保持活动的安全类别。包含针对家庭用户的推荐预设,平衡了高防护与低内存占用。 - **自动补丁**:修补系统的 `suricatad.sh` 和 `suricata-update.sh`,防止内存密集型的冗余更新循环(节省约 800MB RAM 峰值)。 - **启动集成**:通过 `/cfg/post-cfg.sh` 与路由器的启动过程无缝集成。 - **反应式阻断**:通过 `ips` 守护进程保留硬件的“阻断级别”反应式防火墙集成。 - **多 VLAN 支持**:自动监控所有定义的 LAN 接口(`br-lan`、`br-lan_2` 等)。 ## 安装说明 ### 1. 上传文件 将项目文件上传到您的路由器(例如 `/cfg/suricata-runner/` 或您选择的任何目录): - `setup.sh` - `ips-policy.conf` - `scripts/start.sh` - `scripts/boot-prune.sh` - `scripts/ips-rule-policy.sh` - `scripts/post-update-prune.sh` - `scripts/suricata-update.sh` ### 2. 设置权限 通过 SSH 登录您的路由器,导航到上传目录,并设置适当的权限: ``` cd /path/to/your/upload chmod 700 *.sh scripts/*.sh 2>/dev/null || chmod 700 *.sh ``` ### 3. 运行设置 在上传目录中执行安装脚本: ``` /bin/ash setup.sh ``` 这将: 1. 修补 `/usr/bin/suricatad.sh` 和 `/usr/bin/suricata-update.sh` 以修复内存峰值错误。 2. 创建 `/var/lib/suricata` 和 `/var/run/suricata` 先决条件。 3. 配置 `/cfg/post-cfg.sh`(作为注释条目)以确保重启后的持久性。 4. 触发初始规则修剪并重启 Suricata。 ## 验证 安装后,您可以验证系统状态并确定当前的阻断模式。 ### 1. 检查 Suricata 是否正在运行 运行以下命令查看活动的 Suricata 引擎: ``` ps -w | grep Suricata-Main ``` 如果处于活动状态,您将看到 `suricata` 的进程行。 ### 2. 识别当前的阻断模式 阻断行为取决于 `ips-policy.conf` 中的 `IPS_INLINE` 设置: #### **模式 A:反应式阻断 (IPS_INLINE=0)** *推荐用于 Route10(最低延迟)。* Suricata 作为 IDS 运行,并向 `ips` 守护进程发送警报,随后该守护进程在防火墙中动态阻断 IP。 - **验证守护进程**:`ps -w | grep "/usr/sbin/ips"` 应显示反应式守护进程正在运行。 - **验证连接**:`grep "eve-log output device (unix_dgram) initialized: /var/run/ips.sock" /var/log/suricata/suricata.log` 确认 Suricata 正在与守护进程通信。 #### **模式 B:内联 IPS (IPS_INLINE=1)** Suricata 直接运行在数据包路径 (AF_PACKET) 中并实时丢弃数据包。 - **验证引擎模式**:`grep "NFQ" /var/log/suricata/suricata.log` 或检查日志中的 `AF_PACKET` 可确认内联操作。 ### 3. 检查当前阻断 要查看是否有任何 IP 当前被反应式守护进程阻断: ``` iptables -L ips -v -n ``` 如果检测到威胁并进行了阻断,`ips` 链将列出活动的丢弃记录。 ## 优化结果 本项目显著减少了 Suricata 在 Route10 上的资源占用: - **规则缩减**:通常将规则集从约 65,000 条减少到 **约 7,700 条活动规则**(减少约 88%)。 - **内存稳定性**:通过修剪不必要的类别和修补冗余更新循环,遏制了 RAM 峰值,防止了默认配置中常见的 OOM (内存不足) 终止。 - **延迟**:反应式阻断(IDS 模式)避免了内联数据包处理的开销,同时仍提供动态防火墙保护。 ## 配置 所有配置均在 `/cfg/suricata-runner/ips-policy.conf` 中管理。 ### 关键设置 - `IPS_ENABLED=1`:必须设置为 1 脚本才能运行。 - `IPS_INLINE=0`:设置为 0 以启用带反应式阻断的 IDS 模式(推荐以获得速度)。 - `IPS_ALLOWED_CATEGORIES`:定义要追踪的威胁。 ## 工作原理 1. **启动**:`/cfg/post-cfg.sh` 在启动时运行并触发 `boot-prune.sh`,延迟 120 秒。 2. **安全等待**:脚本等待路由器完成其“繁忙”的启动阶段。 3. **符号链接恢复**:它恢复 Suricata 规则所需的易失性符号链接。 4. **修剪**:`ips-rule-policy.sh`(基于 Python)注释掉不必要的规则以节省 RAM。 5. **自动启动/优化**: - 如果 UI **启用**:它重启系统包装器以应用修剪后的规则。 - 如果 UI **禁用**:它手动启动 `ips` 守护进程和 `suricata` 引擎。 ## 故障排除 ### 检查状态 ``` # 检查内存使用情况 free -m # 检查 Suricata engine 是否活跃 ps -w | grep Suricata-Main # 检查 rule 加载状态 grep "rules successfully loaded" /var/log/suricata/suricata.log | tail -n 1 ``` ### 手动触发 如果您想强制重新修剪并重启而无需重新启动: ``` /bin/ash /cfg/suricata-runner/boot-prune.sh 1 ``` ## 文件结构(仓库) ``` / ├── setup.sh # One-time installation and persistence setup ├── ips-policy.conf # User configuration (categories, mode) ├── scripts/ │ ├── start.sh # Boot wrapper for persistence │ ├── boot-prune.sh # Background automation (runs on every boot) │ ├── ips-rule-policy.sh # Optimized rule pruner (Python3) │ ├── post-update-prune.sh # Post-update maintenance │ └── suricata-update.sh # Update wrapper └── tests/ # Test suite ``` ## 许可证 MIT License
标签:Cutter, Google搜索, IPS, LangChain, Metaprompt, Route10, Shell脚本, Suricata, VLAN支持, 入侵检测系统, 内存优化, 反应式阻断, 威胁检测与响应, 安全数据湖, 家庭网络, 嵌入式安全, 数字取证, 现代安全运营, 网络安全, 自动化脚本, 规则修剪, 路由器安全, 轻量级, 运维自动化, 防火墙集成, 隐私保护