昨天大致講了專案背景跟環境長什麼樣子。今天想把「網段怎麼隔開」這件事講得具體一點,包含中間卡過的一個地方。
為什麼要分兩段?
環境概念很單純:一段是研究人員跟攻擊端所在的對外網段,另一段是被保護的內部網段,裡面放網域控制站跟受監控的靶機。中間用 OPNsense 做隔離,所有跨網段的流量理論上都要經過它。
聽起來理所當然,但實際動手前我沒有想清楚一件事:如果兩台機器放在同一個網段,流量根本不會經過防火牆。
同網段的機器互相通訊,靠的是同一層的廣播與 ARP,封包不會被送到閘道去繞一圈。這代表如果我把攻擊端跟靶機放同一段,防火牆那邊的日誌永遠是空的——不是規則寫錯,是這些流量本來就沒有機會被防火牆看到。
這個坑我是先建好環境、開始做攻擊模擬之後才發現的:跑了一次測試連線,回頭到 OPNsense 想確認有沒有記到,結果 Live View 什麼都沒有。查了一下才想起這個基本觀念,後來把攻擊端跟靶機分到不同網段,才開始有東西可以看。
OPNsense 目前的設定,以下描述我不會帶實際的位址,只講角色跟邏輯:
OPNsense 上面接了兩個介面,一個對應對外網段,一個對應內部網段。介面指派完之後,預設規則是「同介面內部互通、跨介面全部擋掉」,再依需求手動開放。
目前的防火牆規則,思路大致是白名單制:預設拒絕,只針對需要用到的路徑手動放行。舉例來說,攻擊端要能連到內部某一台特定靶機,我就針對這條路徑單獨寫一條規則,而不是整段網段互通。這樣做的原因是,如果一開始就把整段開放,之後回頭看告警的時候,很難分清楚哪些連線是「預期會發生」、哪些是「不該出現」。

下面這張是目前 Live View 的畫面,可以看到有針對特定來源做篩選:
圖裡這條規則的邏輯是「攻擊端只能連到指定的目標主機」,而不是開放整段網域。這是目前設計的樣子,還沒有壓力測試過,例如同時很多連線的情況下規則會不會有問題,這部分我還沒驗證,先老實寫在這裡。
現在能確認、跟還不能確認的部分
能確認的:兩個網段目前是分開的,跨網段流量會經過 OPNsense,而且防火牆日誌確實有記到東西——這點在踩過上面那個坑之後,有實際重新測過。
還沒確認的:
規則的覆蓋範圍是不是完整,有沒有漏掉應該擋但沒擋到的路徑,我還沒有系統性地測過。
內部網段裡機器彼此之間的流量(同段內互通),OPNsense 本來就看不到——如果之後要看這段東西西向流量,可能得另外加東西,目前沒有做。
明天
接下來想寫的是資料怎麼從 Windows 一路流到 Wazuh、再到 AI 這一層,把整個路徑先講一遍架構,再回頭一段一段細講。
謝謝看到這裡的你,明天見。