我在 RHEL 7 机器上使用 Lynis 运行扫描,它说接口处于混杂模式。我检查并确定链接不是基于没有 Promuscuous 标志(只有广播、多播、运行和 UP (BMRU) 可见):
$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
$ netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 9001 17217705 0 0 0 17899485 0 0 0 BMRU
所以我查看了 Lynis 是如何检查并运行命令的ip link -o -d show dev eth0 | grep 'promiscuity 1'
,果然,我发现了以下内容:
$ ip -d link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff promiscuity 1 addrgenmode eui64 numtxqueues 8 numrxqueues 8 gso_max_size 65536 gso_max_segs 65535
我的问题是哪个更权威。我习惯于只检查标志而不是接口属性。是什么promiscuity 1
意思?这个界面是混杂的吗?
正如在/中引入只读参数的补丁中所解释的:
promiscuity
ip-link
iproute2
事实上,接口(由 使用)和 rtnetlink 接口(由使用)使用的
dev_get_flags()
内核函数将从导出到用户空间的一组标志中显式清除:ioctl(SIOCGIFFLAGS)
ifconfig
ip link show
IFF_PROMISC
[
dev->gflags
以上是一组不被内核使用,而仅由用户空间接口设置和检索的兼容性标志]从用户空间检查接口是否处于混杂模式的唯一
ip -d link show
方法是(就像这样做一样)通过 接口IFLA_PROMISCUITY
检索的属性rtnetlink(7)
。这反映了设备的实际混杂计数:promiscuity > 0
意味着设备处于混杂模式。ifconfig DEV promisc
通过or更新设备标志ip link set dev DEV promisc on
不是将设备设置为混杂模式的唯一方法:另一种方法是通过接口:packet(7)
setsockopt()
这就是
tcpdump
(以及其他网络捕获和过滤工具)正在使用的东西。PROMISCUOUS
它本身就是一面旗帜,而不是其他旗帜的组合。您提供的转储上未设置该标志。
如果我在我的系统上手动设置它,我可以清楚地看到它:
如果您继续收到来自 Lynis 的警告,则有两种可能性:
Lynis 有问题,向您报告了误报。
您的系统已被黑客入侵并安装了后门:黑客用隐藏混杂标志的修补程序替换了
ip
,ifconfig
和二进制文件。route