linux无开箱即用的自动断网功能,需组合rkhunter/chkrootkit检测、日志监听、带锁与延迟的断网脚本及systemd守护实现;须预置恢复手段并测试验证。

Linux系统没有开箱即用的“检测攻击→自动断网”功能,必须靠组合工具+脚本+网络命令来实现。核心不是追求全自动,而是构建可验证、可回退、低误报的响应链:检测出线索 → 记录并告警 → 延迟确认 → 执行断网 → 留下恢复入口。
选一个轻量可靠的入侵检测工具
rkhunter 和 chkrootkit 是服务器环境最常用的选择,资源占用小、输出明确,适合做断网触发源。
- 安装后先运行 rkhunter --propupd 建立文件属性基线,否则后续比对无意义
- 日常扫描用 rkhunter -c --sk --rwo --logfile /var/log/rkhunter.log,把结果写入日志而非仅屏幕输出
- 不要只看“INFECTED”字样——重点匹配日志中 Warning:.*Rootkit、Suspicious file、Rootkit strings found 这类具体字段,避免因单个误报直接断网
写一个安全可控的断网脚本
脚本要能执行、能记录、能防重复、最好还能区分断网范围。不推荐直接 down 掉整个网卡,优先考虑更精细的控制方式。
- 若只需阻断外网流量(保留内网管理通道),执行:ip route del default
- 若必须物理级隔离,用:ip link set eth0 down(注意把 eth0 换成你实际的接口名,可用 ip -br a 查看)
- 开头加日志记录:echo "$(date): [ALERT] Triggered by rkhunter, cutting outbound" >> /var/log/intrusion-response.log
- 加简单锁机制防止并发多次执行:[ -f /tmp/.net_cut_active ] && exit; touch /tmp/.net_cut_active
用日志监听实现自动触发
不需要复杂消息队列,用 shell + tail + grep 就能稳定工作。关键是加入缓冲和防抖,避免日志刷屏导致反复断网。
- 写一个守护脚本,持续运行:tail -f /var/log/rkhunter.log | grep -E --line-buffered "Warning:.*Rootkit|INFECTED|Suspicious file"
- 匹配到后,sleep 3 秒再调用断网脚本,给人工干预留出窗口
- 将该脚本注册为 systemd service,设置 Restart=always,确保开机自启且崩溃后自动拉起
必须做的收尾与验证动作
断网是应急手段,不是终点。没做这几件事,等于埋下更大风险。
- 提前在另一台机器或本地终端准备好恢复命令,例如:ip link set eth0 up 或 ip route add default via 192.168.1.1
- 测试脚本前,先手动模拟一次断网/恢复全过程,确认接口名、网关地址、路由表状态都符合预期
- 搭配 iptables 或 fail2ban 先做第一层拦截,把明显暴力扫描、爆破行为挡在系统外,降低触发断网的频次











