인터페이스, 인터페이스 플래그 또는 속성의 난잡함을 결정하는 것은 무엇입니까?

인터페이스, 인터페이스 플래그 또는 속성의 난잡함을 결정하는 것은 무엇입니까?

RHEL 7 시스템에서 Lynis를 사용하여 스캔을 실행하고 있는데 인터페이스가 무차별 모드에 있다고 표시됩니다. 링크가 Promusculous 플래그 없이 기반이 아닌지 확인하고 결정했습니다(Broadcast, Multicast, Run 및 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-linkiproute2

커널은 사용자가 명시적으로 설정한 경우에만 이 플래그를 내보냅니다. 예를 들어 IFF_PROMISCa가 실행 중일 때는 내보내지 않습니다.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에 문제가 있어 오탐지가 보고되었습니다.

  • 귀하의 시스템이 해킹되어 백도어인 hacker와 숨겨진 무차별 플래그가 있는 패치된 바이너리로 ip교체 ifconfig되었습니다 route.

관련 정보