National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 23

網路安全:防火牆、ACL 與 VPN

常見攻擊的原理與防禦:ARP 偽冒、DoS、中間人
Interaction 25 minute(s)

Learning Objectives

  • 用最小權限與預設拒絕的原則,決定網路上哪些連線應該放行
  • 說明 ACL 由上往下比對、第一條符合就決定、最後隱含全部拒絕,並在模擬器裡寫出 ACL
  • 比較無狀態的 ACL 與有狀態的防火牆,說明連線表怎麼讓回程封包自動通過
  • 說明 ARP 偽冒、DoS/DDoS、中間人、連接埠掃描的原理,以及對應的防禦方法
  • 說明 VPN 做什麼、適合什麼情況,以及它不能解決的問題

只讓需要的連線通過

到目前為止,模擬網路裡只要路由對了,任何主機都能連到任何主機的任何連接埠。真的網路不能這樣: 系網站只需要讓外部連 HTTPS,不需要讓全世界嘗試登入它的 SSH;系辦電腦的遠端桌面更不該對外開放。

網路安全的設計有兩個基本原則:

原則 意思 例子
最小權限(least privilege) 每個人、每台主機只拿到完成工作需要的存取權 外部只能連網站的 443 埠;只有管理員的電腦能 SSH 到伺服器
預設拒絕(default deny) 沒有明確允許的,一律拒絕 防火牆最後一條是「其他全部拒絕」,新開的服務要主動加規則才連得到

預設拒絕的好處是:忘了寫規則時,結果是「連不到」(使用者會來反應,你去補規則),而不是「不小心對全世界開放」(沒有人會發現,直到出事)。

這一課的工具:

  1. ACL(Access Control List,存取控制清單):路由器在介面上逐一檢查封包,決定放行或丟掉。
  2. 防火牆(firewall):記得每一條連線,能分辨「這是回應」還是「新的連線」。
  3. VPN:在不可信任的網路上建一條加密的通道。

本課的設備指令是課程自訂的教學用指令,各廠牌實際的指令與規則語法以手冊為準。這一課只談防禦: 攻擊只說明原理與怎麼防,不提供任何攻擊的操作方法;未經授權測試他人的系統,在臺灣與許多國家都可能觸法。

ACL:在路由器介面上逐條比對

ACL 是一串規則,套用在路由器的某個介面、某個方向:

  • in:封包從這個介面進入路由器時檢查
  • out:封包要從這個介面送出時檢查

每條規則寫:允許(permit)或拒絕(deny)、協定、來源網段、目的網段,以及(TCP、UDP 時)目的連接埠。比對的規則:

  1. 由上往下一條一條比
  2. 第一條符合的就決定結果,後面的規則不再看
  3. 全部都不符合時,最後有一條看不見的「全部拒絕」(implicit deny)

所以規則的順序很重要。例如想封鎖 203.0.113.0/24 這個來源,但允許其他人連網站:

順序 規則 203.0.113.66 連網站的結果
封鎖在前 ① deny any 203.0.113.0/24 → any ② permit tcp any → 網站 port 443 第 ① 條符合:拒絕
封鎖在後 ① permit tcp any → 網站 port 443 ② deny any 203.0.113.0/24 → any 第 ① 條就符合:允許,第 ② 條永遠輪不到

原則是越精確的規則放越前面,越寬的放後面。

ACL 是無狀態的(stateless):每個封包單獨判斷,路由器不記得「剛才有人從裡面連出去」。 這個特性會造成一個常見的問題,下面的練習會遇到。

互動練習:用 ACL 保護伺服器區

R1 接三個區域:g0 是系內網路(PC1 系辦電腦)、g1 是伺服器區(WEB 系網站)、g2 往外部(EXT 是外面的一台主機,也有網頁服務)。 為了專心看 ACL,這個拓撲沒有 NAT,外部主機可以直接連到伺服器區的位址。 在 R1 輸入 help 可以看到 acl 指令的寫法,show acl 列出目前的規則,acl <介面> clear 清空某個介面的規則。 封包紀錄裡被 ACL 擋下的封包,會寫出是第幾條規則或「隱含的全部拒絕」。

有狀態的防火牆與連線表

有狀態防火牆(stateful firewall)多做了一件事:放行一條新連線時,把它記在連線表(connection table)裡, 例如「192.168.10.23:52000 ↔ 198.51.100.80:443,TCP」。之後收到封包時先查連線表:

  1. 屬於表裡已經有的連線(包括對方的回應):直接放行,不用再比規則
  2. 是新的連線:照規則由上往下比對,最後是預設政策
  3. 允許的新連線加進連線表;連線結束(TCP 的 FIN、RST)或閒置太久就移除
無狀態 ACL 有狀態防火牆
判斷依據 每個封包單獨看標頭 先看是不是已建立連線的一部分
回程封包 要另外寫規則放行,常常寫得太寬 自動放行,規則只要寫「誰可以發起連線」
規則數量 每個服務要寫去程與回程 每個服務一條
代價 簡單、快 要記住每條連線,連線表會被大量連線塞滿(DoS 的目標之一)

UDP 沒有連線,防火牆用「同一組位址與連接埠,在一段時間內的回應」來判斷,例如 DNS 查詢的回答。

實務上常把網路分成區域(zone),再寫區域之間的規則:

區域 放什麼 典型規則
內部網路(LAN) 辦公室、電腦教室的電腦 可以主動連外;外部不能主動連進來
伺服器區(DMZ) 對外提供服務的網站、DNS 外部只能連指定的服務埠;伺服器區不能主動連進內部網路
外部(Internet) 網際網路 不信任

伺服器區的用意是:就算網站主機被入侵,攻擊者也還隔著一道防火牆才能碰到內部網路。

互動練習:寫一個有狀態防火牆的規則表

下方是一連串連線請求(含回應),每一列的「需求」欄寫著它應該被允許還是拒絕。 加入規則、調整順序、切換預設政策,按「逐條比對」看每個封包命中哪一條規則。 規則的來源、目的寫 any、單一位址(例如 10.0.50.10)或網段(例如 192.168.10.0/24);連接埠留空表示任何連接埠。

小測驗:ACL 與防火牆

1.

某介面的 ACL 依序是:① deny tcp any → 10.0.50.10 port 22 ② permit tcp any → 10.0.50.0/24。外部主機連 10.0.50.10 的 80 埠,結果是?

2.

同一個 ACL,外部主機 ping 10.0.50.10,結果是?

3.

為什麼「預設拒絕」比「預設允許、再把危險的服務一個一個擋掉」安全?

4.

有狀態防火牆的連線表被大量偽造的新連線塞滿,最可能造成什麼結果?

第 1 次作答

常見攻擊的原理與防禦

下面四種攻擊都利用了前面幾課學過的協定特性。這裡只說明原理,重點放在怎麼防。

攻擊 利用什麼 防禦
ARP 偽冒(ARP spoofing) ARP 沒有驗證(第 8 課):同一個網段的任何主機都能送出「閘道的 IP 對應到我的 MAC」,讓別人把封包送給它 交換器的動態 ARP 檢查(Dynamic ARP Inspection:依 DHCP 發出的位址紀錄核對 ARP 封包,不符的丟掉);重要設備用固定的 ARP 項目;最根本的是加密連線(HTTPS、SSH),封包被轉走也讀不懂、改不了
DoS/DDoS(阻斷服務/分散式阻斷服務) 用大量流量塞滿頻寬,或用大量半開的 TCP 連線、請求耗盡伺服器與防火牆的資源;DDoS 是很多台被控制的電腦一起送 限流(每個來源每秒的新連線、請求數上限)、SYN cookies 這類減少半開連線負擔的作法(RFC 4987 整理了常見的對策);流量大到自己的線路扛不住時,由上游的 ISP 或流量清洗服務在進到你的網路之前過濾
中間人(man-in-the-middle) 攻擊者設法夾在兩端之間(例如假的 Wi-Fi、ARP 偽冒),轉送並偷看或竄改流量 TLS 與憑證驗證(第 19 課):用戶端檢查憑證是不是可信任的機構發給這個網域;不要忽略瀏覽器的憑證警告;網站全面使用 HTTPS
連接埠掃描(port scan) 對一台主機的許多連接埠送出連線請求,看哪些有回應,找出有在執行的服務 關閉不需要的服務;防火牆預設拒絕,只開需要的連接埠;監控並告警異常的大量連線嘗試

這四列有一個共同點:防禦大多不是「抓到攻擊者」,而是縮小可以被攻擊的範圍(關掉不用的服務、預設拒絕、分區)並且加密(就算流量被轉走也沒有用)。

掃描、偽冒、大量送封包這些行為,未經系統擁有者書面授權就去做,即使只是「測試看看」,在臺灣可能觸犯刑法妨害電腦使用罪章。 學習防禦請在自己的模擬環境或課程提供的實驗環境裡進行。

VPN:在不可信任的網路上建一條加密通道

VPN(Virtual Private Network,虛擬私人網路)把你的封包加密後包在另一個封包裡,經過網際網路送到 VPN 閘道, 閘道解開後再送進內部網路。對內部網路來說,你就像是接在裡面的一台電腦。

類型 連接什麼 例子
遠端存取(remote access) 一台電腦 ↔ 組織的 VPN 閘道 在家連學校的 VPN,使用只開放校內存取的資料庫或授權軟體
站對站(site-to-site) 兩個網路的閘道之間 兩個校區的網路透過網際網路互連,像同一個內部網路

常見的協定有 IPsec(架構定義在 RFC 4301)與以 TLS 為基礎的 VPN;選哪一種依組織提供的服務而定。

什麼時候用:要從外面存取只在內部開放的服務;在不信任的網路(例如公共 Wi-Fi)上,不想讓同一個網路的人看到你連去哪裡。

VPN 不能解決的事:

  • 它只保護「你到 VPN 閘道」這一段;閘道之後到目的網站的流量,安全與否要看那一段有沒有 HTTPS。
  • 它不會讓惡意的網站變安全,也不能取代防毒與更新。
  • VPN 帳號本身就是一扇通往內部網路的門:要搭配強密碼與多因素驗證,閘道上也要用防火牆限制 VPN 使用者能連到哪些服務(同樣是最小權限)。

小測驗:攻擊的原理與防禦

1.

同一個網段裡有人送出偽造的 ARP 回覆,宣稱自己是閘道。下面哪一個防禦,即使 ARP 偽冒成功也還能保護資料內容?

2.

系網站遭受 DDoS,流量遠超過學校對外線路的頻寬。在學校的防火牆上加規則有用嗎?

3.

下列關於 VPN 的敘述,哪一個正確?

第 1 次作答

重點整理

  • 最小權限、預設拒絕:只放行完成工作需要的連線,其他一律拒絕。
  • ACL:由上往下比對,第一條符合就決定,最後隱含全部拒絕;越精確的規則放越前面。ACL 無狀態,回程封包要另外處理,常常因此寫得太寬。
  • 有狀態防火牆:用連線表記住已允許的連線,回應自動放行;規則只寫「誰可以發起什麼連線」。網路分區(內部、伺服器區、外部)再寫區域之間的規則。
  • 攻擊與防禦:ARP 偽冒→動態 ARP 檢查與加密連線;DoS/DDoS→限流、上游清洗;中間人→TLS 與憑證驗證;連接埠掃描→關閉不需要的服務、預設拒絕。
  • VPN 在不可信任的網路上建加密通道,讓遠端像在內部;它不取代 HTTPS、防火牆與多因素驗證。
  • 只在自己的或已授權的環境裡練習。

最後一課是綜合專題:把整個網路工程軌學過的子網路、VLAN、路由、DHCP、NAT 與 ACL 組合起來,規劃一棟系館的網路。

這一課完成了!
Next lesson:綜合專題:規劃一個系館的網路
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。