防火牆是什麼?讓通訊通過或擋下的機制
防火牆是設在網路的邊界,只讓符合既定規則的通訊通過、擋下其他通訊的機制。它主要看通訊的目的地號碼、要交給哪個App的號碼,以及通訊的方向來判斷。它是阻擋外部擅自連線的基本防護,但擋不住走已允許通道的攻擊,也擋不住騙人輸入資料的手法。
這篇文章可以了解
- 防火牆是看什麼,來決定讓通訊通過或擋下
- 防火牆在家用路由器、電腦、公司、雲端的哪些地方運作
- 只讓回覆通過的機制(狀態檢測),與家用路由器的NAT有什麼不同
- 防火牆擋不住的事
先備知識:不需要。先讀過「IP位址是什麼?」「TCP與UDP的差異是什麼?」會更容易理解。
生活中的例子
啟動新遊戲時,電腦上是否出現過「防火牆已封鎖,要允許存取嗎?」這樣的視窗?在公司,也可能聽到「這台伺服器設定成無法從公司外連進來」。資安新聞裡,也常出現防火牆這個詞。
英文的firewall,原本是指建築物的「防火牆」。這個名稱借自隔開房間、不讓火災延燒到隔壁的牆。不過,網路的防火牆並不是把一切都堵住的牆。它比較接近挑選可以通過的東西、再放行的「閘門」。這篇文章會依序看看它是怎麼挑選的。
防火牆是什麼:網路邊界的「閘門」
在網際網路上,資料會被切成小塊來傳送。這些小塊稱為封包,開頭附有寫著目的地等資訊的標頭。詳細內容請參考「網際網路怎麼傳送資料?」。
家裡或公司的網路,與網際網路之間有一條邊界。逐一檢查通過這裡的封包標頭,決定放行或丟棄的設備或軟體,稱為防火牆。判斷的依據,是人事先決定好的規則。
在哪裡:家裡、電腦、公司、雲端
防火牆不只是指專用的機器。它以軟體的形式,內建在各種地方。
- 家用路由器:位於家中網路與網際網路邊界的設備。很多都具有擋下從外部突然送來之通訊的功能。
- 電腦:Windows內建防火牆,而且一開始就是啟用的。在設定畫面的「防火牆與網路保護」項目中可以確認。在預設設定下,接收時只放行「自己要求的回覆」和規則允許的通訊,其他都擋下。傳送時,除了規則擋下的以外都放行。
- 公司的網路:在與網際網路的出入口設置專用設備。對外公開的網頁伺服器,基本上放在與公司內部分開的區域。這個區域稱為DMZ(非軍事區),即使公開伺服器被入侵,損害也不容易擴散到公司內部。
- 雲端:租用的虛擬伺服器,也附有依規則篩選通訊的機制。在AWS(Amazon的雲端)稱為「安全群組」。新建立時,從允許所有傳送、沒有任何接收許可的狀態開始。雲端的原理請參考「雲端運算是什麼?」。
像這樣,有在邊界設備上防護的,也有在每一台機器上防護的。實際上,一般會把兩者疊加使用。
原理1:根據什麼來判斷
防火牆看的項目主要有3個。第1個是寄件端與目的地的IP位址。這是在網路中區分設備的號碼。詳細內容請參考「IP位址是什麼?」。
第2個是表示要交給設備裡哪一個App的「窗口」號碼。這稱為連接埠號碼。例如,HTTPS的網頁使用443號。號碼的分配方式,在「TCP與UDP的差異是什麼?」中說明。
第3個是通訊的方向。區分是從外部進到內部,還是從內部送到外部。此外,通訊規則的種類(TCP或UDP等)也可以當作條件。
原理2:規則由上往下比對,最後「全部擋下」
規則會排成表格的形式來寫。這種放行與擋下的清單,稱為存取控制清單(ACL)。下表是小公司出入口的規則範例,為了方便說明而簡化過。第2列的22號,是從遠處操作伺服器用的窗口。
| 順序 | 條件(從哪裡、到哪裡) | 處理 |
|---|---|---|
| 1 | 從外部,到網頁伺服器的443號 | 放行 |
| 2 | 從總公司,到管理伺服器的22號 | 放行 |
| 3 | 從公司內部,到外部的443號 | 放行 |
| 4 | 其他所有通訊 | 擋下 |
多數防火牆會把收到的封包,從表格的上方依序對照。在最先符合的那一列決定處理方式,下面的列就不再看。因此,條件範圍窄的例外,必須寫在條件範圍廣的列之上。
重點是最後的第4列。不符合任何一列的通訊,全部擋下。這稱為「預設拒絕」。美國國家標準與技術研究院(NIST)的指引(SP 800-41),也建議擋下決定允許之外的通訊。反過來,如果寫成「只擋危險的」,沒想到的通道就會全部維持開放。
原理3:只讓回覆通過的「狀態檢測」
這裡有一個麻煩。公司內的電腦打開網站時,網站的回覆封包會從外部回到內部。如果只靠表格的規則判斷,這個回覆屬於「外→內」,會被最後一列擋下。
話雖如此,如果寫成「從外部來的全部放行」,就沒有防護作用了。早期的簡單機制不會記住通訊的狀態(單純的封包過濾)。當時的寫法是,標頭上有「回覆」記號的通訊就放行。這樣一來,只模仿記號的假回覆就有機可乘。
因此,現在多數防火牆會記住從內部發起的通訊。先記下「這台電腦開始和這台伺服器的443號通訊」,只讓與紀錄相符的回覆通過。紀錄中沒有、從外部突然送來的通訊則擋下。因為會記住通訊的狀態(state)再檢查,所以稱為狀態檢測(stateful inspection)。AWS也正式說明,安全群組採用這種「記住狀態」的方式。
家用路由器的NAT是「碰巧形成的牆」
多數家用路由器,會把家中設備的號碼,改寫成網際網路用的1個號碼。這種改寫稱為NAT(網路位址轉譯)。路由器會把從內部發起的通訊記在對照表上,再把回覆送回原本的設備。詳細內容請參考「IP位址是什麼?」中的「NAPT」一節。
從外部突然送來的通訊,不在對照表上。因此,路由器不知道該交給哪台設備,通常就到不了裡面。結果就形成了一道和狀態檢測有點相似的牆。
不過,NAT原本是為了分享不夠用的號碼而設計的機制。它並不是設計來防護的功能。制定網際網路技術標準的組織,稱為IETF。IETF的文件(RFC 4864,2007年)也說明,改寫號碼本身並不是防護。
實際上,漏洞有好幾個。為了遊戲等用途設定「開放連接埠」(連接埠轉送)後,從外部送到該號碼的通訊,會直接送到裡面的設備。也有路由器支援讓App請路由器自動開洞的機制(UPnP)。從內部送往外部的通訊,NAT完全不會限制。
另外,在新的號碼形式IPv6中,號碼非常充足,所以通常不使用NAT。因此IETF在2011年的文件(RFC 6092)中,建議家用IPv6路由器加入記住狀態的過濾功能。許多家用路由器在NAT之外,也另外具有防火牆功能。
連內容都檢查的防火牆
到目前為止的防火牆,都是看標頭的號碼來判斷。但現在許多App都使用同一個443號。只看號碼,無法分辨那是業務系統,還是公司禁止的檔案分享服務。
於是,能從通訊內容的特徵辨識App、並依App訂定規則的產品普及開來。這稱為「次世代防火牆(NGFW)」。不過,在加密的通訊中,看得到的內容有限。很多產品也一併內建了找出並擋下常見攻擊型態通訊的功能(入侵防禦系統,IPS)。
也有專門保護網站的類型。它設在網頁伺服器前方,檢查送來的要求內容,擋下含有典型攻擊型態的要求。這稱為網頁應用程式防火牆(WAF)。依據日本資訊處理推進機構(IPA)的指引,WAF是減輕攻擊影響的措施。它並不會修好網站本身的缺陷。各自的差異,整理在「防火牆、IDS、IPS、WAF的差異」的表格中。
防火牆擋不住的事
1. 經由已允許通道而來的危險
如果為了上網而開放443號,經由那裡送來的危險檔案也會通過。附加在電子郵件裡的惡意程式也一樣。防火牆看的是「這條路能不能走」,並不保證運送的貨物是安全的。
2. 騙人輸入資料的手法
用假冒真實公司的假網站,騙人輸入密碼的手法,稱為網路釣魚。打開假網站的通訊,和一般的網頁通訊分辨不出來,所以防火牆會放行。分辨假網站的方法,在「HTTPS是什麼?」中說明。
3. 持有正確鑰匙的入侵
像公司的VPN設備這樣,有些入口是為了從外部進來而開著的。如果被人用容易猜到的密碼或外洩的密碼登入,防火牆就無法與正式員工區分。密碼被破解的原理,在「密碼為什麼會被破解?」中說明。VPN設備成為攻擊目標的原因,在「VPN是什麼?」中說明。
4. 內部的人,或在內部受感染的設備
邊界的防火牆,通常不會看內部與內部之間的通訊。公司內部人員帶走的資訊,或從公司內受感染的電腦擴散到其他設備的攻擊,入口都擋不住。所以公司也會把內部分成幾個區域。此外,每次使用都確認本人與裝置的零信任思維,也逐漸普及。
防火牆是多層防護中的一層。要搭配軟體更新、在密碼之外再用其他方式確認的多因素驗證,以及監視端點等措施一起使用。
防火牆的發展歷程
1980年代末期,大學與企業的網路透過網際網路相連,來自外部的非法入侵成了問題。美國電腦公司DEC(迪吉多)的研究所,在1989年3月發表了一份報告。內容是在組織之間的出入口,依規則篩選封包的機制。這是封包過濾的早期例子。
同一時期,美國AT&T的貝爾實驗室,也打造了保護公司內部網路的出入口。在那裡工作的Cheswick與Bellovin,在1994年出版了一本書。書名是《Firewalls and Internet Security》,推廣了防火牆的思維。
以色列的Check Point公司在1993年創立。1993~94年左右,推出了產品「FireWall-1」(年份因資料而異)。這是採用狀態檢測技術的產品,會記住從內部發起的通訊並讓回覆通過。在電腦上,從2004年Windows XP的大型更新(SP2)起,防火牆預設為啟用。
常見的誤解
誤解:有了防火牆,病毒和帳號被盜都能全部擋下
實際上,防火牆決定的是「要開放哪些通道」。經由已允許的通道而來的危險檔案、假網站,以及用盜來的密碼入侵,它都擋不住。「防火牆」這個名稱,容易讓人想像成什麼都能擋的牆,這是誤解的來源。要和防毒、軟體更新、多因素驗證搭配使用。
誤解:關掉防火牆,遊戲會變快
實際上,一般電腦和規則對照所花的時間,比起與遠方遊戲伺服器往返的時間,可說微乎其微。反應的延遲,主要取決於與對方的距離,以及線路、Wi-Fi的壅塞程度。遊戲真正會遇到的問題,是語音聊天或建立對戰房間時,從外部來的連線被擋下。Microsoft說明,關掉防火牆會更容易受到非法存取。它建議不要關掉,而是只允許需要的App。
誤解:家裡有路由器,就不需要電腦的防火牆
實際上,家用路由器保護的只有與網際網路的邊界。在咖啡廳或車站的Wi-Fi,同一個網路上連著陌生人的設備。即使在家中,只要其他設備受到感染,攻擊也可能從那裡過來。在這些情況下,在電腦上運作的防火牆就能發揮防護作用。
從數字來看
| 項目 | 數字、內容(時間點、出處) |
|---|---|
| 連接埠號碼的範圍 | 0~65,535(65,536種) |
| 篩選封包之機制的報告 | 1989年3月(DEC的研究所) |
| Check Point公司創立/FireWall-1 | 1993年/1993~94年左右 |
| Cheswick與Bellovin的書 | 1994年(Addison-Wesley) |
| Windows的防火牆預設為啟用 | 2004年(Windows XP SP2) |
| Windows的預設設定 | 接收時,除了回覆與允許的通訊外都擋下。傳送時放行(2026年時點) |
| AWS新建立的安全群組 | 接收許可0條。允許所有傳送(2026年時點) |
| 說明NAT不是防護機制的文件 | RFC 4864(2007年,IETF) |
| 建議家用IPv6路由器防護方式的文件 | RFC 6092(2011年,IETF) |
連接埠號碼共有65,536種,但家用電腦需要接受外部連線的,通常幾乎沒有。所以規則才能寫成「只開放需要的幾個,其他全部關閉」。
進一步學習
- 用表格比較各種防護機制:防火牆、IDS、IPS、WAF的差異
- 在邊界防護的思維,以及之後的思維:邊界防禦與零信任的差異
- 用計算試試網路的劃分方式:IP位址與子網路計算
- 下一步的用語:入侵偵測系統(IDS)(發現疑似攻擊的通訊並通報)、最小權限原則(只允許必要部分的思維)、VLAN(用1台設備劃分網路)
- 相關文章:「VPN是什麼?」「加密是什麼?」