Linux

如何防止新的隔離虛擬介面監聽 0.0.0.0:*

  • December 7, 2017

我正在創建一個新的虛擬介面:

ifconfig eth0:0 123.123.22.22

該命令netstat -tlnp返回如下內容:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:50505         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:7337          0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:3790            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      2450/Xvnc4      
tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN      2626/Xvnc4      
tcp        0      0 192.168.2.77:22         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:3001          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:52698         0.0.0.0:*               LISTEN      3488/plugin_host
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -               
tcp6       0      0 ::1:7337                :::*                    LISTEN      -               
tcp6       0      0 :::5901                 :::*                    LISTEN      2450/Xvnc4      
tcp6       0      0 :::5902                 :::*                    LISTEN      2626/Xvnc4      
tcp6       0      0 ::1:631                 :::*                    LISTEN      -               
tcp6       0      0 ::1:5432                :::*                    LISTEN      -               
tcp6       0      0 ::1:6010                :::*                    LISTEN      -  

因此,如果我nmap同時創建虛擬和物理介面,結果將是相同的(這在 中使用“本地地址”的值進行了解釋netstat)。我試圖關閉這個新虛擬介面中的埠(5901,5902,6001,6002)。對於nmap兩個介面:

PORT     STATE SERVICE
5901/tcp open  vnc-1
5902/tcp open  vnc-2
6001/tcp open  X11:1
6002/tcp open  X11:2

命令:

sudo iptables -A INPUT -i eth0:0 -p tcp --dport 5901 -j DROP

該埠將無法訪問,但打開(對於nmap)。有什麼方法可以防止eth0:0監聽來自 的流量0.0.0.0嗎?

如果主機有兩個 IP 地址,192.168.1.1 和 10.1.2.1,並且在主機上執行的伺服器偵聽 0.0.0.0,那麼這兩個 IP 都可以訪問它。(維基)

目標:

  • 在 LAN 中公開新介面,並更改 Mac 地址(看起來像另一台機器)
  • 將 docker 容器綁定到最近創建的新介面,在某些埠中公開服務。

要在現有網卡之上模擬具有不同 MAC 的第二個(虛擬)乙太網卡,並且來自不同的命名空間(例如容器),您需要一個macvlan介面。

以下是如何在 Docker 容器中使用它們的說明。

您似乎對您嘗試的一些網路功能背後的原理有些困惑。也許以下有幫助:

  • eth0:0只是該ifconfig工具用於處理某個介面上的第二個 IP 地址的舊方法。如果你使用更新的工具之類的ip addr,它只會顯示第二個 IP 地址eth0。這僅適用於 OSI 級別 3,因此沒有不同的 MAC 地址,它不會像 docker 中那樣與網路命名空間互動,而且使用起來通常很痛苦,因為您必須確保每個應用程序都正確綁定到其中一個地址。並且此綁定是防止應用程序監聽 0.0.0.0 所必需的;沒有辦法一般地阻止“eth0:0監聽來自0.0.0.0”的流量(忽略那種形式的句子根本沒有意義;介面沒有監聽,
  • iptables允許您進行數據包過濾、防火牆、NAT 等。它不允許您更改 MAC 地址、控制哪些應用程序偵聽哪個地址等。
  • “我已經使用過modprobe”也沒有意義:modprobe是一種載入核心模組的方法,如果你不能說你想使用哪個核心模組,用於什麼目的,以及為什麼它沒有首先自動載入,這個句子沒有傳達任何資訊。

另外,請閱讀XY 問題:當您想做 X 並認為您可能需要做 Y 才能到達 X 時,請始終詢問有關 X的問題。然後提到你嘗試過 Y。在很多情況下(比如這裡)Y 是完全錯誤的。

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