Networking

VLAN 直通安全

  • January 17, 2021

目前我正在設計一個網路。問題是在某個時候我遇到了一個奇怪的請求。客戶對她/他自己提出了一些想法。現在我很困擾,因為我對這件事的了解不夠深。我無法確定請求本身是否存在固有問題,以及是否有如何將它們傳達給客戶。該請求特別適用於兩台伺服器,具體如下:

物理網路(簡化):

router.eth0 <--> switch.eth0 | switch.eth1 <--> server1.eth0 | server1.eth1 <--> server2.eth0

邏輯網路:

+----------+      +----------+      +----------+      +----------+
| router   |      | switch   |      | server1  |      | server2  |
| untagged | <--> | untagged |      |          |      |          |
+----------+      | vlan 10  | <----+----------+----> | vlan 10  |
                 |          |      | untagged | <--> | untagged |
                 +----------+      +----------+      +----------+

因此,來自路由器的每個請求首先標記到 vlan 10 並發送到 server1。server1 然後將這些數據包轉發到 server2,而 server1 對 vlan 10 數據包沒有反應。之後 server2 從 vlan 10 取消標記數據包,並根據數據包的內容將其中一些轉發回 server1 或自行處理。最後 server1 可以響應這些數據包,因為它們現在沒有標記。

搶先提出一些建議:我知道將 server2 直接連接到路由器並將 server1 連接到 server2 會更容易,但是如果這種方法沒有安全問題,客戶端會堅持這樣做。客戶端還將其設置為要求所有指向 server1 的數據包都必須由 server2 處理。

我現在的問題是攻擊者是否可以破壞此設置。這樣,如果他獲得了對其他路由器的控制權。攻擊者能否利用通過 server1 的數據包流來發揮自己的優勢(不包括拒絕服務)?例如,攻擊者能否偽造可以直接發往 server1 且不流經 server2 的數據包?

如果一切都完全按照描述進行配置,攻擊者應該無法偽造數據包或直接到達 server1。可以安全地配置它。

但這種設置仍然存在嚴重缺陷:

最重要的是,它太複雜了。雖然可以這樣配置,但為什麼要故意這樣配置呢?增加複雜性的目的是什麼,為什麼要做的事情比他們需要的更複雜?有時會說電腦系統的設計質量是用 WTF 來衡量的,WTF 詢問審核員的次數越多,系統就越出乎意料地複雜(即設計越差);確實是這樣,WTF是這樣的嗎?

其次,這種設置引入了一個故障點,使系統更難診斷和修復。觀察到失敗server1會導致server2無法訪問,即使它工作得很好;server2意志的失敗server1也無法訪問,即使它也很好。您無法真正區分這兩種情況。想像一下,您遇到了兩台伺服器都無法訪問的情況。你覺得哪一個失敗了?您無法提供任何大致的指示來及早診斷和修復系統。您需要從一開始就仔細檢查所有內容,並且無法遠端完成任何事情。這樣,它需要額外的不合理的維護。您的客戶是否願意為這些額外的工作支付更多費用,而通過適當的網路設計可以輕鬆避免(或至少降低可能性)這種費用?

此外,這種設置非常脆弱。其他可能的設置可以證明一些錯誤是合理的;如果在不明顯的地方犯了一個錯誤,這將顯示違規行為。對於一些剛剛面臨這種設置的新員工來說,應該啟用什麼以及在哪裡啟用並不明顯。您需要非常仔細地在 server1 上配置 VLAN,因為它不接受來自交換機端的未標記數據包。如果它錯誤地接受,則設置有缺陷並且條件 server1 不可訪問,除非通過 server2 不再成立;這為偽造的數據包創造了一個洞。

最後,它效率低下,可能導致 DoS。預計兩條鏈路都是 1Gbps 是正常的。我們不知道將在 server1 上執行哪種服務,但為簡單起見,我將描述一個最簡單的情況,它具有對稱的典型流量分佈:傳入流量大約等於傳出流量。在這種情況下,連結 server1-server2 的載入量始終是連結 switch-server1 的兩倍。當鏈路 switch-server1 上的負載僅超過其容量的 50% 時,如果所有流量都預計通過 server2 到達 server1,則伺服器之間的鏈路將超出其容量並且數據包將被丟棄。另外,server1 必須橋接網路,這將由 CPU 完成;它不是很高的負載,但它仍然會產生中斷,上下文切換,所以 server1 必須做一些完全不需要的工作。這是政府一直喜歡的設置類型,它讓他們的員工忙碌而沒有做任何有用的工作,只是來回移動紙張。

如果伺服器以“正確的順序”連接並且沒有 VLAN,所有這些問題當然都會消失。也可能是星型網路拓撲,在這種情況下,所有設備(路由器、兩台伺服器)都直接連接到交換機,然後所有 VLAN 處理都在交換機上完成。Star-like 也“有點”沒有這些問題。它只描述了鏈路過載的問題,但在這種情況下更容易解決,在交換機上安全配置 VLAN 自然比在伺服器上更容易。

引用自:https://serverfault.com/questions/1050158