nmap 原始數據包權限不起作用(“不允許操作”,即使是 root 使用者)
為什麼我使用 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),有 IP192.168.1.1
-> 不工作(上圖)。
- 對於踢腿,
vbox0
從橋上移開並不能解決任何問題。
eth0.2
:VLAN 2,帶 IP192.168.2.1
。對該子網中的地址執行 nmap 可以按預期工作-> 正常工作。
- 這似乎很重要,因為它使用與(上圖)相同的物理 NIC
eth0
。
vbox1
: 有IP192.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。不知道為什麼我不能在虛擬機上重現,儘管版本相同。可能還有特定於硬體/驅動程序的…
- 這似乎是
iptable_nat
目前 4.8.x 核心中的模組的問題:https ://bugzilla.redhat.com/show_bug.cgi?id=1402695掃描仍在執行。這似乎只會影響掃描的開始 - 我仍然擔心,因為我可能會失去結果。
- 它表示前 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上的說明更新了這個核心。(我相信它會像往常一樣進一步升級,因為隨後會有額外的更新。)這不僅解決了我的問題,而且大大提高了掃描性能。