nmap 원시 패킷 권한이 작동하지 않습니다(루트 사용자라도 "작업이 허용되지 않음")

nmap 원시 패킷 권한이 작동하지 않습니다(루트 사용자라도 "작업이 허용되지 않음")

nmap을 사용할 때 루트로 실행하는 경우에도 "작업이 허용되지 않음" 메시지가 나타나는 이유는 무엇입니까?

$ sudo nmap 192.168.1.2

Starting Nmap 7.12 ( https://nmap.org ) at 2017-01-13 02:12 CST
sendto in send_ip_packet_sd: sendto(5, packet, 44, 0, 192.168.1.2, 16) => Operation not permitted
Offending packet: TCP 192.168.1.1:53769 > 192.168.1.2:2099 S ttl=47 id=47294 iplen=44  seq=2821662280 win=1024 <mss 1460>
...
Omitting future Sendto error messages now that 10 have been shown.  Use -d2 if you really want to see them.

이것은 iptables 문제가 아닙니다. 내 OUTPUT 체인이 열려 있습니다.

$ sudo iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

이제 여기에는 VLAN과 브리지를 포함한 몇 가지 다른 인터페이스가 있습니다. 이는 일부 인터페이스에서는 작동하지만 다른 인터페이스에서는 작동하지 않습니다.

  • br0:브리지됨 eth0(태그 없음) 및 vbox0(VirtualBox 사용), IP 사용 192.168.1.1-> 작동하지 않음(위 그림).
    • 킥의 경우 vbox0브리지에서 제거해도 아무것도 해결되지 않습니다.
  • eth0.2: VLAN 2, IP 포함 192.168.2.1. 이 서브넷의 주소에서 nmap을 실행하면 예상대로 작동합니다. -> 작동합니다.
    • eth0이는 (위)와 동일한 물리적 네트워크 카드를 사용하기 때문에 중요해 보입니다.
  • vbox1: IP가 있습니다 192.16.3.1. 이 서브넷의 주소에서 nmap을 실행하면 예상대로 작동합니다. -> 작동합니다.

이는 물리적 워크스테이션으로, 여기에 추가 제한을 가할 수 있는 가상화 또는 컨테이너에서 실행되지 않습니다.

다리:

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0015171970fc       no              eth0
                                                        vbox0

-sT물론 기본 TCP SYN 스캔( ) 대신 권한이 낮은 TCP 연결 스캔( )을 사용하여 이 문제를 해결할 수 있지만 -sS이것이 왜 이런 일이 발생하는지 설명하지는 않습니다.

이더넷 브리징에 대해 알려진 제한 사항이나 고려해야 할 다른 문제가 있습니까?

편집자 (2017-01-14):

  • 깨끗한 가상 머신(i7 물리적 시스템에 vCPU 2개)에서 복제를 시도했습니다. 브릿지를 설치한 후에도 재현이 불가능합니다.
  • 모든 이더넷 오프로드 옵션을 비활성화(ethtool 사용)해도 도움이 되지 않았습니다.
  • 소스에서 컴파일된 최신 Nmap 7.40을 실행해도 도움이 되지 않았습니다.
  • 커널 문제인 것 같은데요? http://seclists.org/nmap-dev/2016/q4/131. 동일한 버전에도 불구하고 왜 가상 머신에서 재현할 수 없는지 잘 모르겠습니다. 하드웨어/드라이버에 따라 다를 수도 있습니다.
  • 검사가 아직 실행 중입니다. 이는 스캔 시작에만 영향을 미치는 것 같습니다. 결과가 손실될 수 있으므로 여전히 걱정됩니다.
    • 이는 처음 10개 이후의 모든 메시지가 생략되었음을 의미합니다. 그러나 -d2프롬프트를 반복한 후에도 여전히 10개만 표시됩니다. (단, 이 자체가 오류일 수도 있습니다.)
    • 나열된 특정 포트(예: -p 2099위에 표시된 예)를 반복적으로 스캔하면 포트가 성공적으로 스캔되므로 일부 포트가 차단되지 않습니다.
  • 달리면 --max-parallelism=1이 상태의 발생을 크게 줄일 수 있습니다.
    • 50으로 설정해도 별 도움이 안되는 것 같습니다.
    • 30으로 설정하면 단일 호스트의 경우 절반 정도 작동하는 것처럼 보이지만 결국에는 서브넷 스캔이 실패하기 시작합니다.
    • 값을 점차 낮추면 서브넷을 스캔하여 오류를 관찰하는 데 필요한 시간이 늘어납니다. 하지만 1을 사용해도 결국에는 실패하게 됩니다.
    • 이는 nmap 자체의 병렬성 문제는 아닌 것 같습니다. parallel여러 동시 nmap 스캔을 다시 사용 하고 실행하면 --max-parallelism=1문제가 발생할 가능성이 높아집니다.

호스트 정보: Ubuntu 16.10, 커널 4.8.0-34-일반 #36-Ubuntu. Intel(R) Core(TM) i7-2600S, 32GB RAM.

답변1

iptable_nat이는 현재 4.8.x Linux 커널(< 4.8.16)의 모듈 문제인 것으로 보입니다 .https://bugzilla.redhat.com/show_bug.cgi?id=1402695.

4.9 커널에는 "실제" 수정 사항이 포함되어 있습니다. 하지만 Ubuntu의 경우 공식적으로 이를 확인하려면 Ubuntu 17.04(Zesty Zapus)를 기다려야 할 것 같습니다. (4.9가 거기에 포함될 것입니다.릴리즈 노트).

Ubuntu 16.10(Yakkety Yak)의 경우 수정된 4.8.16 커널이 출시를 기다리고 있는 것 같습니다.https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1654584, 여기에는 다음 수정 사항이 포함됩니다.

"netfilter: nat: nat bysrc 해시를 rhashtable로 변환"
복원 "netfilter: nat hlist_head를 nf_conn으로 이동"

나는 다음을 사용하여 이 커널로 업데이트했습니다.http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.16/및 지침https://wiki.ubuntu.com/Kernel/MainlineBuilds. (평상시와 마찬가지로 다른 업데이트가 나오면 더욱 업그레이드될 것이라고 확신합니다.) 이를 통해 문제가 해결되었을 뿐만 아니라 스캔 성능도 크게 향상되었습니다.

관련 정보