前面幾天,我陸續談到了 Firewall、EDR、NDR、SIEM、Threat Intelligence、WAF,甚至 Deception。
如果把這些東西全部列出來,很容易產生一個問題:
企業真的需要這麼多資安設備嗎?
Firewall 已經可以阻擋不應該進來的流量,EDR 也可以監控端點上的異常行為,那為什麼還需要 NDR、SIEM,甚至其他偵測機制?
以前我可能會從每套產品的功能開始解釋。
但實際做 SOC 一段時間後,我覺得真正的問題並不是:
「企業到底需要多少資安產品?」
而是:
「如果其中一層沒有發現問題,還有沒有其他地方能夠看到?」
這也是我今天想談的 Defense in Depth(縱深防禦)。

Defense in Depth 中文通常稱為「縱深防禦」。
如果用比較簡單的方式理解,它並不是:
Firewall + EDR + WAF + NDR + SIEM = 安全
也不是資安產品買得越多,防禦能力就一定越好。
我比較傾向把它理解成:
在不同層次建立互補的防禦、偵測與應變能力。當其中一層沒有阻止或發現問題時,其他層仍有機會發現、限制或處理事件。
例如一個企業環境可能同時存在:

這些設備看到的事情並不完全相同。
Firewall 可以控制網路連線。
WAF 可以檢查送往網站或 API 的 HTTP/HTTPS 請求內容,依據規則偵測或阻擋常見的網頁攻擊。
EDR 可以觀察端點上的 Process、Command Line、File 等行為。
NDR 可以從網路流量觀察設備之間的通訊與異常行為。
SIEM 則把不同來源的 Log、Alert 與事件集中起來,讓 SOC 有機會找到它們之間的關聯。
所以真正的重點不是:
「哪一套最好?」
而是:
「當某一套沒有看到時,其他地方還能不能看到?」
假設今天有一台 Client 出現問題。
Firewall 沒有阻止最初的行為,而這台設備剛好也沒有安裝 EDR。
如果只依賴這兩層,我們可能就會失去一部分能見度。
但後來 NDR 發現:
Client
↓
大量掃描 Internal Network
↓
TCP 445
TCP 3389
這時候至少還有另外一個角度告訴 SOC:
這台設備的網路行為可能有問題。
但我要特別強調:
看到這個現象,並不能直接證明前面的 Firewall 或 EDR 已經「失效」。
因為我們還不知道事件真正發生的原因。
可是它至少代表:
前一層沒有阻止或沒有觀察到的行為,後面的偵測機制仍然有機會發現。
只要能及時看到,就還有機會進行後續調查與處置。
這也是我認為縱深防禦很重要的地方。
再換另外一個情境。
假設 NDR 發現某台內部 Client 正在大量掃描 Server:

那是不是代表:
「Firewall 已經擋掉了,所以沒事了?」
我不會這樣判斷。
因為 Block 解決的是這一次行為能不能執行成功的問題,但沒有回答為什麼這台 Client 會做這件事情。
如果一台平常正常使用的 Client,突然開始大量掃描 445、3389,我真正想知道的是:
它為什麼突然開始掃描?
可能是正常的弱點掃描。
可能是管理人員進行測試。
也可能是設備本身真的出現問題。
所以即使 Firewall 已經成功 Block,我還是會繼續調查。
這裡其實可以拆成幾個不同的資安概念。
Prevention(預防/阻擋)
讓不應該發生的行為無法繼續,例如 Firewall Block。
Detection(偵測)
發現環境裡正在發生值得注意的行為。
Investigation(調查)
進一步確認為什麼會發生,以及它跟其他事件有沒有關係。
三件事情彼此有關,但並不是同一件事。
阻擋成功,不代表造成這個行為的原因已經被處理。
假設後來真的確認:
這台 Client 已經遭到入侵。
但是 Firewall 成功阻止它繼續連線 Server 區。
我會認為 Firewall 這一層成功發揮作用。
但我不會因此直接說:
「整個防禦成功了。」
因為攻擊者不一定只有一條路可以走。
例如今天攻擊者取得了一組 VPN 帳號。
如果這個帳號原本就具有合法的 VPN 存取權限,單純依賴外部來源的網路阻擋就可能不足。
這時候還要繼續看:
所以縱深防禦真正要考慮的並不是:
「第一層能不能永遠把攻擊擋住?」
而是:
「如果攻擊者真的越過第一層,後面還有什麼?」
這裡還會碰到另外一個專有名詞:
Assume Breach(假設已遭入侵)
它不是說:
「反正一定會被駭,所以前面的防禦都不用做。」
而是在設計防禦時,不只思考:
「怎麼不讓攻擊者進來?」
還要多問一個問題:
「如果攻擊者已經進來了,我怎麼發現他?又怎麼限制他繼續移動?」
例如攻擊者已經進入某台 Client。
接下來可能開始探索內部網路。
這時候 Network Segmentation 可以限制它能直接接觸的範圍,Firewall 可以阻擋不允許的連線,NDR 可以觀察異常的網路行為,EDR 可以觀察端點上的程序活動。
最後再透過 SIEM,把不同地方看到的證據集中起來。
這時候每一層做的事情不同,但彼此可以互補。
但這裡還有另一個問題。
假設今天企業已經有:
Firewall
WAF
VPN
MFA
EDR
NDR
SIEM
是不是代表:
「我的縱深防禦已經做完了?」
我認為還不能這樣說。
因為設備存在,只代表基本的防護面可能已經建立。
如果每一套產品的資料都各自在自己的平台裡:
Firewall → Firewall Console
WAF → WAF Console
EDR → EDR Console
NDR → NDR Console
VPN → VPN Log
但是這些資訊沒有被整合,也沒有分析人員去找彼此之間的關係,最後很可能變成:
每一套產品都有看到一些東西,但沒有人看到完整的事情。
這也是 SIEM 與 SOC 很重要的價值之一。
把不同來源的資料集中只是第一步。
後面還要進行 Correlation(關聯分析),才能開始判斷:
這幾個 Alert 到底是不是同一件事情?
這裡也可以順便帶到兩個在資安裡很常出現的概念:
Coverage Gap(涵蓋缺口)
代表某個區域、設備或資料來源沒有被安全控制涵蓋。
例如某台 Server 根本沒有部署 EDR。
Detection Gap(偵測缺口)
則是即使有監控能力,現有的 Rule、Use Case 或偵測方式仍沒有把某種行為辨識出來。
這兩個問題都可能造成:
攻擊真的發生了,但某一層沒有看到。
縱深防禦的價值之一,就是不要把整個偵測能力押在單一控制上。
縱深防禦如果只談設備,我覺得還是不完整。
因為攻擊者不一定要突破 Firewall。
有時候,他只需要讓一個人相信他。
例如透過 Social Engineering 取得使用者的 VPN 帳號密碼。
甚至在某些情況下,攻擊者可能成功通過原本看起來合法的登入流程。
這時候要從系統上直接判斷:
「現在操作這個帳號的人,到底是不是本人?」
其實很困難。
SOC 能做的,可能是繼續觀察:
登入時間
↓
登入來源
↓
登入後存取哪些 Server
↓
有沒有突然掃描大量設備
↓
有沒有使用不合理的權限
也就是從後續的時間與行為尋找異常。
所以:
合法帳號成功登入,不代表後面的所有行為都應該被信任。
這其實也開始碰到 Zero Trust 與 Continuous Verification 的概念,不過這部分之後有機會再深入討論。

做到這裡,我覺得縱深防禦可以再往上一層理解。
它不應該只有 Technology。
還要包含:
Firewall、WAF、EDR、NDR、SIEM、MFA 等不同安全控制,提供不同的防禦與觀察能力。
使用者需要有基本的資安意識。
SOC 分析人員也需要有能力判斷 Alert、Context 與不同證據之間的關係。
真的發生事件時:
誰要處理?
誰要通知?
多久內要通知?
事件要怎麼 Escalation?
確認攻擊後要怎麼 Response?
這些事情都需要事先定義。
這也是我實際做 SOC 時很重視的一件事情。
假設今天:
Firewall 有 Log。
EDR 有 Alert。
SIEM 也成功產生告警。
但是最後真的發生資安事件後才發現:
當時根本沒有人處理。
這時候問題可能已經不是:
「為什麼產品沒有偵測到?」
因為產品其實看到了。
真正需要回頭檢查的,反而可能是 SOC Process。
例如:
尤其 SOC 服務通常還會有 SLA(Service Level Agreement)。
也就是某些等級的事件,需要在規定時間內完成確認或通知。
如果設備已經成功偵測到事件,但 SOC 沒有在 SLA 規定時間內完成必要處理與通知,那就不能再把問題單純歸因於偵測設備。
技術設備負責讓我們看見問題,而人與流程負責讓看見的問題真正被處理。
如果以前看到:
Firewall
EDR
NDR
SIEM
MFA
Deception
很容易把它理解成一堆不同的資安產品。
但現在我會比較在意的是:

真正的縱深防禦,不是產品越多越好。
而是當某一層失效時:
下一層能不能看到?
看到之後:
能不能把不同證據關聯起來?
確認有問題之後:
有沒有人在正確的時間內進行處理?
所以如果要用一句話整理我現在對 Defense in Depth 的理解:
縱深防禦不是把資安產品一層一層堆上去,而是讓人、流程與技術形成互補的防線;當其中一層沒有阻止或發現問題時,其他層仍有機會把事件接住。
SOC 並不是坐在螢幕前看一堆 Alert。
而是把原本分散在不同防禦層的訊號、證據與人員串起來,讓企業真的有能力從發現問題、判斷問題,到最後處理問題。