自动报警与处置旨在发现非预期启用的网卡混杂模式,核心是监控、告警、限制与追溯:一、用ip或ifconfig快速识别混杂接口;二、脚本每5分钟巡检并邮件告警;三、限制setuid权限并审计关键命令;四、告警后先溯源分析再处置。

新手配置Linux网卡混杂模式本身很简单,但“自动报警与处置”不是为了开启它,而是为了发现它是否被**非预期启用**——这往往是主机被入侵或恶意程序在后台嗅探的信号。核心思路是:监控 + 告警 + 限制 + 追溯。
一、快速确认当前哪些网卡处于混杂模式
这是所有后续动作的前提。混杂模式会在接口状态中标明,推荐用现代命令筛查:
-
用 ip 命令(推荐):
ip link show | grep -B1 'promiscuity 1'—— 显示带 promiscuity 1 的接口及其上一行(含接口名) -
用 ifconfig(兼容老系统):
ifconfig | grep -A1 'PROMISC'—— 显示含 PROMISC 标志的接口段 -
排除回环口,只看物理/虚拟网卡:
ip -br link | awk '$1 !~ /^lo$/ && $3 ~ /PROMISC/ {print $1}'
二、设置每5分钟自动巡检并触发告警
无人操作却突然出现混杂模式,必须立刻通知管理员。建议用轻量脚本+ cron 实现:
- 新建脚本
/usr/local/bin/check-promisc.sh,内容如下:
ACTIVE_PROMISC=$(ip link show | awk '/promiscuity [1-9]/ {print $2}' | sed 's/://')
if [ -n "$ACTIVE_PROMISC" ]; then
logger -t "PROMISC-ALERT" "Unexpected promiscuous interfaces: $ACTIVE_PROMISC"
echo "$(date): ALERT — promisc mode detected on: $ACTIVE_PROMISC" | mail -s "PROMISC ALERT on $(hostname)" admin@example.com
fi
- 赋予执行权限:
sudo chmod +x /usr/local/bin/check-promisc.sh - 添加到 root 的定时任务:
sudo crontab -e,加入:*/5 * * * * /usr/local/bin/check-promisc.sh
三、从源头限制非授权启用行为
光靠事后告警不够,要减少误触发和恶意启用可能:
-
去掉 setuid 权限:运行
sudo chmod u-s /sbin/ifconfig /sbin/ip,防止普通用户直接调用这些命令启混杂模式(注意:部分发行版依赖此机制,操作前先测试网络服务是否正常) -
审计关键命令调用:启用 auditd 监控:
sudo auditctl -a always,exit -F path=/sbin/ifconfig -F perm=xsudo auditctl -a always,exit -F path=/sbin/ip -F perm=x
后续可用ausearch -m execve -i | grep -i promisc查谁、何时、用什么参数执行了相关操作
四、发现后标准处置流程
收到告警后,不应急着关混杂模式,先做上下文分析:
- 查当前启用混杂的进程:
sudo lsof -i -n -P | grep -E "(tcpdump|wireshark|tshark)"或sudo ss -tulpn | grep -E "(tcpdump|tshark)" - 查最近启动的可疑进程:
ps -eo pid,ppid,cmd,etime --sort=-etime | head -20 - 查 audit 日志中对应时间点的调用记录:
sudo ausearch -ts recent -m execve | grep -i promisc - 确认合法用途(如运维正在抓包)后,再关闭:
sudo ip link set dev eth0 promisc off;若无法确认来源,应隔离主机、保留内存与磁盘镜像供进一步分析


















