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-link
iproute2
커널은 사용자가 명시적으로 설정한 경우에만 이 플래그를 내보냅니다. 예를 들어
IFF_PROMISC
a가 실행 중일 때는 내보내지 않습니다.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
.