IT 基礎知識 ch04 防火牆與網路隔離
下一章→
CH 04 新手先修

防火牆與網路隔離

規則清單Inbound/OutboundStateful vs StatelessDMZ 與跳板機L4 vs L7

AWS ch06 的 Security Group vs NACL 是全考試最高頻的比較題,而它的核心其實是一個通用網路觀念:stateful vs stateless。本章先把防火牆的本質(規則清單)、方向性(inbound/outbound)、有沒有記性(stateful/stateless)講清楚,再談為什麼要把網路切成公開區與私有區、跳板機是幹嘛的,最後區分「看地址的防火牆」和「拆包裹的防火牆」。

防火牆(Firewall)不是什麼神秘設備,本質就是一張規則清單+一個守門員:每個經過的封包都被拿來逐條比對規則,決定「放行(Allow)」或「丟棄(Deny)」。

  • 一條規則長什麼樣?基本三要素(ch01 的知識直接用上):協定(TCP/UDP)+ Port(要進哪個房號)+ 對象(來源或目的地的 IP/網段,用 CIDR 表示)。例如:「允許 TCP 443 來自 0.0.0.0/0」=任何人都能走 HTTPS 進來。
  • 白名單思維(預設拒絕):安全設計的鐵律是「沒有明講允許的,一律拒絕」。你只列出「誰可以進來」,其他全部擋掉——而不是列出「誰不能進來」。
  • 防火牆可以放在不同位置:單一機器門口(主機型)、整個網段門口(網路型)——這個「放哪裡」的差異就是 SG 與 NACL 的第一個差別。
💡 AWS 對應:Security Group 和 NACL 其實都是防火牆——SG 是「每台機器自己的守門員」(Instance 層),NACL 是「整個社區大門的警衛」(Subnet 層)。AWS ch06 沒明說,但你現在知道了。
  • 防火牆規則永遠分兩個方向:
    ・Inbound(入站):別人主動連進來的流量。「誰可以來敲我的門?」
    ・Outbound(出站):我主動連出去的流量。「我可以去敲誰的門?」
  • 方向看的是「誰發起連線」,不是資料流向——你連出去看網頁,網頁內容「流進來」,但這仍算 Outbound 連線的一部分,因為是你發起的。
  • 典型設定:網頁伺服器 Inbound 只開 443(誰都能來看網頁)+ 22 限公司 IP(只有自己人能登入管理);Outbound 通常較寬鬆(機器要下載更新、呼叫外部 API)。
  • 企業內網有時反而嚴管 Outbound:防止中毒的機器把資料偷送出去(資料外洩)。
⭐ 讀 AWS SG 規則時先看方向:SG 預設「Inbound 全擋、Outbound 全放」——新機器沒人連得進來,但它自己出得去。

這是本章最重要、也是 AWS 最高頻考點(SG vs NACL)的地基。問題場景:你的機器 Inbound 只開 443。使用者從 443 連進來,你的回應要送出去——那 Outbound 需要特別開規則嗎?

  • Stateful(有狀態)防火牆:記得每一條連線。「這個人是從 443 正常進來的,他的回應放行,不用再查規則。」類比:大樓警衛記得你進來過,你出去時直接放行、不用重新登記。→ 只要設一個方向的規則,回應流量自動放行。
  • Stateless(無狀態)防火牆:完全沒有記性,每個封包都當陌生人重新查一次規則清單——進來查一次、回應出去再查一次。類比:每次進出都要重新盤查證件的哨站。→ Inbound 和 Outbound 要分別寫規則,漏寫一邊連線就斷一半。
  • Stateless 麻煩在哪?回應流量的來源 Port 是隨機高位 Port(1024~65535,稱 ephemeral ports),所以 Stateless 防火牆的 Outbound 常要開一大段 Port 範圍給回應用——這是實務上常見的坑。
⭐ AWS 對應(背下來):Security Group = Stateful(允許進來,回應自動出去);NACL = Stateless(進出要分開設,包含 ephemeral ports)。AWS ch06 的比較表現在你知道為什麼了。

防火牆解決「單點守門」,但好的架構會直接把網路切成不同信任等級的區域——就算一區失守,也不會全軍覆沒(縱深防禦)。

  • 公開區(DMZ,非軍事區):直接面對網際網路的緩衝區,放「必須被外面碰到」的東西:網頁伺服器、負載平衡器。類比:銀行的營業大廳——民眾進得來,但只到櫃檯為止。
  • 私有區:外部絕對碰不到的內層,放資料庫、後端服務。類比:銀行的金庫——只有內部人員透過特定通道進出。
  • 跳板機(Bastion Host / Jump Box):管理員要維護私有區的機器怎麼辦?在公開區放一台專門用來「跳」進去的堡壘機:管理員先 SSH 到跳板機,再從跳板機連進私有區。整個私有區只信任跳板機這一個入口,好管控、好稽核(所有人都走同一道門,日誌集中)。
💡 AWS 對應:Public Subnet = DMZ(放 ALB、NAT Gateway、Bastion),Private Subnet = 私有區(放 EC2 應用、RDS)。AWS ch06 的「Web 放 Public、DB 放 Private」設計原則,理由就是這張卡。新一代作法:SSM Session Manager 可以完全取代跳板機(連 22 Port 都不用開),考題見 AWS ch11。

防火牆也分「檢查得多深」(層數是基礎篇 ch01/AWS ch03 講過的 OSI 分層):

  • L3/L4 防火牆(看信封):只看封包的「信封資訊」——來源/目的 IP(L3)、協定與 Port(L4)。不看內容。快、通用,SG 和 NACL 都屬於這類。
  • L7 防火牆/WAF(拆開包裹檢查內容):看得懂 HTTP,會檢查網址、參數、標頭的實際內容,能擋「信封正常但內容惡意」的攻擊:
    ・SQL Injection:在輸入框塞資料庫指令,騙後端執行(例如在帳號欄輸入 ' OR 1=1-- 試圖騙過登入檢查)。
    ・XSS(跨站腳本):把惡意 JavaScript 塞進網頁,在其他訪客的瀏覽器執行。
    這些攻擊走的是正常的 443 Port、正常的 IP——L4 防火牆完全看不出異狀,只有拆開內容看的 WAF 擋得住。
  • DDoS(分散式阻斷服務):用海量流量把你淹垮。不是「偷進來」而是「擠爆門口」,防法不同:靠大流量清洗中心吸收。
⭐ AWS 對應:AWS WAF=L7 防火牆(擋 SQL Injection/XSS,掛在 ALB/CloudFront/API Gateway 上);AWS Shield=DDoS 防護(Standard 免費內建、Advanced 付費進階)。考題分流:「SQL Injection/XSS」→ WAF;「DDoS」→ Shield;「封鎖特定 IP 或 Port」→ SG/NACL(詳見 AWS ch10)。
Stateful vs Stateless(SG vs NACL 的地基)
特性Stateful(如 Security Group)Stateless(如 NACL)
類比警衛記得你進來過,出去直接放行每次進出都重新盤查證件
記不記得連線記得(維護連線追蹤表)完全沒記性,每個封包獨立審查
回應流量自動放行,不用額外設規則要另外寫規則(含 ephemeral ports 1024~65535)
設定負擔只設「誰能進來」即可Inbound / Outbound 兩邊都要設,漏一邊連線斷一半
AWS 對應Security Group(Instance 層)NACL(Subnet 層)
各層防護對應 AWS 服務
防的是什麼檢查深度通用名稱AWS 服務
特定 IP / Port 的存取控制L3/L4(只看信封)封包過濾防火牆Security Group、NACL
SQL Injection、XSS 等內容型攻擊L7(拆開看 HTTP 內容)WAF(Web 應用防火牆)AWS WAF(掛 ALB / CloudFront / API GW)
DDoS 海量流量攻擊流量清洗(不是過濾)DDoS 防護AWS Shield(Standard 免費 / Advanced 付費)
私有區的管理入口架構設計跳板機(Bastion)Bastion Host;新作法 SSM Session Manager 免開 Port

練習題 點選選項查看解析

0 / 7
01 / 7
「白名單思維(預設拒絕)」的意思是?
A 列出禁止進入的名單,其他人都放行
B 只列出明確允許的對象,沒列到的一律拒絕
C 所有流量先放行再事後審查
D 只在上班時間開放存取
解析
安全設計的鐵律:預設拒絕(default deny),只放行明確列出的。反過來的「黑名單」思維永遠列不完壞人。AWS SG 就是純白名單設計——只有 Allow 規則,沒列到的自動被拒。
02 / 7
你的機器 Inbound 只開 TCP 443,Outbound 沒有設定任何規則。若防火牆是 Stateful 的,使用者從 443 連進來後,伺服器的回應能不能送出去?
A 不能,Outbound 沒開規則
B 能,Stateful 防火牆記得這條連線是合法進來的,回應流量自動放行
C 只有加密流量能出去
D 要看 NACL 有沒有開
解析
Stateful =「警衛記得你進來過」:合法建立的連線,其回應流量自動放行,不需要對應的 Outbound 規則。這正是 AWS Security Group 的行為。如果是 Stateless(如 NACL),回應出去時會被當陌生封包重新審查,沒開對應規則就會被丟棄。
03 / 7
NACL(Stateless)的 Inbound 允許了 443,但管理者忘了設定 Outbound 的 ephemeral ports(1024~65535)。會發生什麼事?
A 一切正常,回應會自動放行
B 使用者的請求進得來,但伺服器的回應出不去——連線看起來「連得上但沒有回應」
C 使用者完全連不上 443
D NACL 會自動補上缺少的規則
解析
Stateless 防火牆沒有記性:請求(進)和回應(出)是兩次獨立的審查。回應封包的目的 Port 是客戶端隨機挑的高位 Port(ephemeral ports),Outbound 沒開這段就出不去——症狀是「TCP 連線建到一半卡住」。這是 NACL 實務最經典的坑,也是考題最愛。
04 / 7
為什麼標準架構要把資料庫放在 Private Subnet,而不是跟網頁伺服器一起放 Public Subnet?
A Private Subnet 的機器效能比較好
B 縱深防禦:資料庫不需要被外部直接存取,放在外部路由到不了的私有區,就算網頁伺服器被攻破,攻擊者也多一道關卡
C Private Subnet 比較便宜
D 資料庫不支援公有 IP
解析
網路隔離的核心邏輯:依「需不需要被外面碰到」分區。網頁伺服器必須面對網際網路(放 DMZ/Public),資料庫只需要被內部的應用程式存取(放私有區)——它連出網的路都沒有,攻擊面大幅縮小。這就是 AWS「Web 放 Public、DB 放 Private」設計原則背後的理由。
05 / 7
管理員需要 SSH 進入 Private Subnet 的 EC2 進行維護。傳統上的標準作法是?
A 給那台 EC2 一個公有 IP,直接從家裡連
B 在 Public Subnet 放一台跳板機(Bastion Host),管理員先連跳板機、再從跳板機連進私有區
C 把 EC2 搬到 Public Subnet
D 開放 Private Subnet 的 NACL 讓所有 SSH 進入
解析
跳板機模式:私有區只信任跳板機這一個入口,所有管理流量走同一道門——好管控、日誌集中、跳板機可以重兵防守(限來源 IP、強化監控)。直接給私有區機器公有 IP 就破壞了隔離的意義。補充:新一代作法是 SSM Session Manager,連 22 Port 都不用開(AWS ch11)。
06 / 7
攻擊者在登入表單的帳號欄位輸入「' OR 1=1--」試圖騙過資料庫驗證(SQL Injection)。這個請求走正常的 HTTPS 443 Port。哪種防護擋得住?
A Security Group,封鎖攻擊者的 Port
B NACL,封鎖攻擊者的 IP
C WAF(L7 防火牆)——它看得懂 HTTP 內容,能辨識參數中的攻擊模式
D Shield,因為這是 DDoS
解析
SQL Injection 的信封完全正常:合法 IP、合法的 443 Port——L3/L4 防火牆(SG/NACL)只看信封,看不出任何異狀。只有 L7 的 WAF 會「拆開包裹」檢查 HTTP 參數內容,比對攻擊特徵後攔截。封 IP 只能擋這一個攻擊者,擋不了下一個。考題口訣:SQL Injection/XSS → WAF。
07 / 7
你的網站突然湧入每秒數百萬個垃圾請求,頻寬被吃滿、正常使用者連不上。這是什麼攻擊?對應的 AWS 防護是?
A SQL Injection,用 WAF
B DDoS(分散式阻斷服務),用 AWS Shield
C 連接埠掃描,用 NACL
D 中間人攻擊,用 ACM
解析
DDoS 不是「偷偷進來」而是「用海量流量擠爆門口」,靠規則過濾防不了(每個請求單看都像正常的)。防法是大流量清洗與吸收——AWS Shield Standard 免費內建基本防護,Shield Advanced 提供進階防護與 DDoS 費用保障。分流記法:內容型攻擊→WAF、流量型攻擊→Shield。

點擊卡片翻面查看答案,共 10 張。

QUESTION
防火牆的本質?規則三要素?
點擊翻面
ANSWER
規則清單+守門員,逐條比對決定放行/丟棄
三要素:協定(TCP/UDP)+ Port + 對象(IP/CIDR)
鐵律:白名單思維(預設拒絕)
點擊翻回
QUESTION
Inbound vs Outbound 怎麼分?
點擊翻面
ANSWER
看「誰發起連線」,不是資料流向
Inbound = 別人主動連進來
Outbound = 我主動連出去
SG 預設:Inbound 全擋、Outbound 全放
點擊翻回
QUESTION
Stateful vs Stateless 的類比?
點擊翻面
ANSWER
Stateful = 警衛記得你進來過,回應直接放行
Stateless = 每次進出都重新盤查
SG = Stateful;NACL = Stateless
點擊翻回
QUESTION
為什麼 NACL 要開 ephemeral ports(1024~65535)?
點擊翻面
ANSWER
Stateless:回應封包也要重新審查
回應的目的 Port 是客戶端隨機挑的高位 Port
Outbound 沒開這段 → 請求進得來、回應出不去
點擊翻回
QUESTION
DMZ 和私有區的類比?AWS 對應?
點擊翻面
ANSWER
DMZ = 銀行營業大廳(放必須被外面碰到的:ALB、NAT、Bastion)
私有區 = 金庫(放 App、資料庫)
AWS:Public Subnet / Private Subnet
點擊翻回
QUESTION
跳板機(Bastion Host)是什麼?新一代替代方案?
點擊翻面
ANSWER
放在公開區、專門用來「跳」進私有區的堡壘機
好處:單一入口、好管控、日誌集中
新作法:SSM Session Manager(免開 22 Port)
點擊翻回
QUESTION
L3/L4 防火牆 vs L7 WAF 的差別?
點擊翻面
ANSWER
L3/L4 = 只看信封(IP、Port)→ SG、NACL
L7 = 拆開包裹看 HTTP 內容 → WAF
走正常 Port 的內容型攻擊只有 L7 擋得住
點擊翻回
QUESTION
SQL Injection 是什麼?為什麼 SG 擋不住?
點擊翻面
ANSWER
在輸入欄塞資料庫指令騙後端執行(如 ' OR 1=1--)
信封完全正常(合法 IP+443)
SG 只看信封 → 必須用 WAF 拆內容檢查
點擊翻回
QUESTION
考題分流:SQL Injection / DDoS / 封鎖特定 IP 各找誰?
點擊翻面
ANSWER
SQL Injection、XSS → WAF
DDoS → Shield(Standard 免費)
封鎖特定 IP → NACL(SG 沒有 Deny)
特定 Port 存取控制 → SG
點擊翻回
QUESTION
什麼是縱深防禦?
點擊翻面
ANSWER
不靠單一道牆,把網路切成多層信任區
一區失守不會全軍覆沒
例:WAF → ALB(DMZ) → SG → Private Subnet → DB 各層都有防線
點擊翻回