linux系统无内置“检测root权限变更即断外网”机制,需组合sudo日志监控、pam模块或受限shell实现:监听auth.log/secure触发ip route del default与dns重定向,或通过sudoers限制高权会话网络能力,确保可审计、可恢复、低误伤。

Linux系统本身不提供“检测到root权限变更就自动切断外网”的内置机制。这不是标准安全模型的设计逻辑——权限提升(如su、sudo)是合法管理行为,系统不会因此主动断网;强行切断网络反而会中断运维、日志上报甚至安全响应。
但你可以通过组合策略实现近似效果:在关键权限切换发生时,主动执行网络限制动作,并确保该动作具备可审计、可恢复、低误伤的特性。以下是贴近实战的三类可行方案:
一、用sudo日志触发网络封锁(推荐,精准可控)
核心思路:监听/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(RHEL/CentOS),当检测到sudo成功提权行为时,立即运行脚本禁用外网接口。
-
步骤简述:
- 编写监控脚本(例如
/usr/local/bin/block-on-sudo.sh):#!/bin/bash # 禁用默认路由和DNS解析(保留内网通信) ip route del default 2>/dev/null echo "nameserver 127.0.0.1" > /etc/resolv.conf
- 使用
tail -f配合grep实时捕获提权事件(需以root运行):tail -f /var/log/auth.log | while read line; do echo "$line" | grep -q "sudo:.* : TTY=.* ; PWD=.* ; USER=root ; COMMAND=" && /usr/local/bin/block-on-sudo.sh done
- 将该监控作为systemd服务启用,开机自启、后台常驻。
- 编写监控脚本(例如
优点:只响应真实
sudo命令执行,不误杀su -或SSH登录;操作可逆(手动加回路由+DNS即可恢复)。
二、限制特权会话的网络能力(预防型隔离)
不等“变更发生”,而是在高权限会话启动时默认剥离外网能力。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
方法:
- 修改
/etc/sudoers,为特定用户添加网络受限的shell环境:# 使用visudo添加(避免语法错误) Cmnd_Alias NET_BLOCK = /usr/bin/ip route del default, /bin/sh -c "echo 'nameserver 127.0.0.1' > /etc/resolv.conf" %admin ALL=(ALL) NOPASSWD: NET_BLOCK, /bin/bash
- 创建受限shell脚本(如
/usr/local/bin/restricted-root-shell),启动前先执行网络封锁,再调用/bin/bash。 - 要求管理员必须显式运行
sudo /usr/local/bin/restricted-root-shell才能获得带网络限制的root shell。
- 修改
适用场景:合规要求严格的生产环境,强制“特权即隔离”。
三、结合PAM模块做登录级干预(进阶,需编译)
利用PAM(Pluggable Authentication Modules)在用户完成身份认证后、会话建立前注入网络控制逻辑。
-
操作要点:
- 编写轻量PAM模块(C语言),在
pam_sm_open_session中检查geteuid() == 0且getppid()非systemd主进程; - 若满足条件,调用
system("ip link set eth0 down")(需提前授权该命令免密); - 将模块加入
/etc/pam.d/sudo或/etc/pam.d/sshd(按需)。
- 编写轻量PAM模块(C语言),在
注意:此方式侵入性强,调试复杂,仅建议有内核/PAM开发经验的团队在测试环境验证。
以上方案均不依赖第三方EDR或商业产品,全部基于Linux原生组件构建。关键不是“切断”,而是“明确意图+即时响应+留有出口”。实际部署前,请务必在离线虚拟机中验证恢复路径(例如:是否还能用console登录?是否影响systemd-networkd?)。










