我在 RHEL 7 机器上使用 Lynis 运行扫描,它说接口处于混杂模式。我检查并确定链接不是基于没有 Promusculous 标志(只有广播、多播、运行和 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
意思?这个接口混杂吗?
答案1
正如中所解释的修补它向/引入了promiscuity
只读参数:ip-link
iproute2
仅当用户显式设置该标志时,内核才会导出该标志,例如,当 a运行
IFF_PROMISC
时不会导出该标志)。tcpdump
+ if (do_link && tb[IFLA_PROMISCUITY] && show_details) + fprintf(fp, "\n promiscuity %u ", + *(int*)RTA_DATA(tb[IFLA_PROMISCUITY]));
而事实上,dev_get_flags()
ioctl(SIOCGIFFLAGS)
由接口(如使用的ifconfig
)和 rtnetlink 接口(如使用的)使用的内核函数ip link show
,将明确地IFF_PROMISC
从导出到用户空间的标志集中清除:
* Get the combination of flag bits exported through APIs to userspace.
*/
unsigned int dev_get_flags(const struct net_device *dev)
{
unsigned int flags;
flags = (dev->flags & ~(IFF_PROMISC |
...)) |
(dev->gflags & (IFF_PROMISC |
IFF_ALLMULTI));
[dev->gflags
上面是一组兼容性标志,它们是不是由内核使用,但仅由用户空间接口设置和检索]
这仅有的从用户空间检查接口是否处于混杂模式的方法是(就像ip -d link show
那样)通过 IFLA_PROMISCUITY
通过检索的属性rtnetlink(7)
界面。这反映了实际情况乱交计数设备的:promiscuity > 0
表示设备处于混杂模式。
ifconfig DEV promisc
通过或更新设备标志ip link set dev DEV promisc on
并不是将设备设置为混杂模式的唯一方法:另一种方法是通过packet(7)
setsockopt()
界面:
setsockopt(sock, SOL_SOCKET, PACKET_ADD_MEMBERSHIP, {.mr_type = PACKET_MR_PROMISC})`
这就是tcpdump
(以及其他网络捕获和过滤工具)正在使用的。
答案2
PROMISCUOUS
是一面旗帜本身,而不是其他旗帜的组合。
您提供的转储上未设置该标志。
如果我在系统上手动设置它,我可以清楚地看到它:
~# ifconfig eth0 promisc
~# ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 28:f1:0e:09:b8:f8 brd ff:ff:ff:ff:ff:ff
root@NEO-L196:~# ip -o -d link show dev eth0
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000\ link/ether 28:f1:0e:09:b8:f8 brd ff:ff:ff:ff:ff:ff promiscuity 1 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
~#
如果您继续收到 Lynis 的警告,有两种可能性:
Lynis 有问题,向您报告了误报。
您的系统已被黑客攻击并被后门:黑客替换了
ip
,ifconfig
以及route
带有隐藏混杂标志的修补程序的二进制文件。