Linux

nmap 原始數據包權限不起作用(“不允許操作”,即使是 root 使用者)

  • January 16, 2017

為什麼我使用 nmap 得到“不允許的操作” - 即使以 root 身份執行?

$ 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 可以按預期工作-> 正常工作。

    • 這似乎很重要,因為它使用與(上圖)相同的物理 NIC eth0
  • vbox1: 有IP 192.16.3.1。對該子網中的地址執行 nmap 可以按預期工作-> 正常工作。

這是一個物理工作站——不在任何可能在此處施加額外限制的虛擬化或容器下執行。

橋:

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

當然,我可以通過使用權限較低的 TCP 連接掃描 ( -sT) 而不是預設的 TCP SYN 掃描 ( -sS) 來解決這個問題——但這並不能解釋為什麼會發生這種情況。

乙太網橋接是否有任何已知的限制,或者我應該查看的其他任何內容?

編輯(2017-01-14):

  • 嘗試在乾淨的 VM 中複製(i7 物理系統上的 2 個 vCPU)。即使架設了網橋,也無法重現。

  • 禁用所有乙太網解除安裝選項(使用 ethtool)無濟於事。

  • 執行最新的從原始碼編譯的 Nmap 7.40 無濟於事。

  • 這似乎是一個核心問題? http://seclists.org/nmap-dev/2016/q4/131。不知道為什麼我不能在虛擬機上重現,儘管版本相同。可能還有特定於硬體/驅動程序的…

  • 掃描仍在執行。這似乎只會影響掃描的開始 - 我仍然擔心,因為我可能會失去結果。

    • 它表示前 10 條之後的所有消息都已被省略。但是,即使-d2按照提示重複,我仍然只看到 10 個。(但是,這本身可能是一個錯誤。)
    • 如果我重複掃描列出的給定埠(例如,-p 2099對於上面顯示的範例),它會成功掃描該埠 - 所以好像某些埠被阻止了。
  • 跑步--max-parallelism=1大大減少了這種情況的發生。

    • 設置為 50 似乎沒有幫助。
    • 對於單個主機,設置為 30 似乎可以工作大約一半的時間 - 但最終仍會因子網掃描而開始失敗。
    • 逐漸降低的值會延長子網掃描以觀察到任何故障的時間 - 但即使使用 1 最終也會失敗。
    • 這似乎不是 nmap 本身的並行問題。執行多個並發 nmap 掃描parallel--max-parallelism=1重新增加問題的發生率。

主機資訊:Ubuntu 16.10,核心 4.8.0-34-generic #36-Ubuntu。Intel(R) Core(TM) i7-2600S,32 GB RAM。

根據https://bugzilla.redhat.com/show_bug.cgi?id=1402695 ,這似乎是iptable_nat目前 4.8.x Linux 核心(< 4.8.16)中的模組的問題。

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上的說明更新了這個核心。(我相信它會像往常一樣進一步升級,因為隨後會有額外的更新。)這不僅解決了我的問題,而且大大提高了掃描性能。

引用自:https://unix.stackexchange.com/questions/337082