防火牆與 nat 伺服器

46
第第 第第 第第 第第 第第 第第 09 第第第第 NAT 第第第

Upload: hamish-hernandez

Post on 02-Jan-2016

131 views

Category:

Documents


11 download

DESCRIPTION

09. 防火牆與 NAT 伺服器. 認識防火牆 網路安全除了隨時注意相關軟體的漏洞以及網路上的安全通報之外,你最好能夠依據自己的環境來訂定防火牆機制!這樣對於你的網路環境,會比較有保障一點喔!那麼什麼是防火牆呢?其實防火牆就是透過訂定一些有順序的規則,並管制進入到我們網域內的主機 ( 或者可以說是網域 ) 資料封包的一種機制!更廣義的來說,只要能夠分析與過濾進出我們管理之網域的封包資料,就可以稱為防火牆。. P.9-2. 請參閱書籍. 為何需要防火牆 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 防火牆與  NAT  伺服器

第二 篇

主機的簡易資安防護措施

09

防火牆與 NAT 伺服器

Page 2: 防火牆與  NAT  伺服器

認識防火牆網路安全除了隨時注意相關軟體的漏洞以及網路上的安全通報之外,你最好能夠依據自己的環境來訂定防火牆機制!這樣對於你的網路環境,會比較有保障一點喔!那麼什麼是防火牆呢?其實防火牆就是透過訂定一些有順序的規則,並管制進入到我們網域內的主機 ( 或者可以說是網域 ) 資料封包的一種機制!更廣義的來說,只要能夠分析與過濾進出我們管理之網域的封包資料,就可以稱為防火牆。

P.9-2請參閱書籍

Page 3: 防火牆與  NAT  伺服器

為何需要防火牆仔細分析第七章的圖 7.1-1 可以發現,封包進入本機時,會通過防火牆、伺服器軟體程序、 SELinux 與檔案系統等。所以基本上,如果你的系統 (1) 已經關閉不需要而且危險的服務; (2) 已經將整個系統的所有軟體都保持在最新的狀態; (3) 權限設定妥當且定時進行備份工作; (4) 已經教育使用者具有良好的網路、系統操作習慣。 那麼你的系統實際上已經頗為安全了!要不要架設防火牆?那就見仁見智囉!

P.9-3請參閱書籍

Page 4: 防火牆與  NAT  伺服器

所以囉,防火牆能作什麼呢?防火牆最大的功能就是幫助你『限制某些服務的存取來源』!舉例來說: (1) 你可以限制檔案傳輸服務 (FTP) 只在子網域內的主機才能夠使用,而不對整個 Internet 開放; (2) 你可以限制整部 Linux 主機僅可以接受客戶端的 WWW 要求,其他的服務都關閉; (3) 你還可以限制整部主機僅能主動對外連線。反過來說,若有用戶端對我們主機發送主動連線的封包狀態 (TCP 封包的 SYN flag) 就予以抵擋等等。這些就是最主要的防火牆功能了!

所以鳥哥認為,防火牆最重要的任務就是在規劃出: 切割被信任 ( 如子網域 ) 與不被信任 ( 如 Internet) 的網段; 劃分出可提供 Internet 的服務與必須受保護的服務; 分析出可接受與不可接受的封包狀態;

P.9-3請參閱書籍

Page 5: 防火牆與  NAT  伺服器

Linux 系統上防火牆的主要類別 Netfilter ( 封包過濾機制 )

TCP Wrappers ( 程式控管 )

Proxy ( 代理伺服器 )

P.9-4請參閱書籍

Page 6: 防火牆與  NAT  伺服器

防火牆的一般網路佈線示意 單一網域,僅有一個路由器

因為內外網域已經分開,所以安全維護在內部可以開放的權限較大!

� 安全機制的設定可以針對 Linux 防火牆主機來維護即可! 對外只看的到 Linux 防火牆主機,所以對於內部可以達到有

效的安全防護!

P.9-5~6請參閱書籍

Page 7: 防火牆與  NAT  伺服器

內部網路包含安全性更高的子網路,需內部防火牆切開子網路:

P.9-6~7請參閱書籍

Page 8: 防火牆與  NAT  伺服器

在防火牆的後面架設網路伺服器主機

P.9-7~8請參閱書籍

Page 9: 防火牆與  NAT  伺服器

防火牆的使用限制可以進行的分析工作主要有:

拒絕讓 Internet 的封包進入主機的某些埠口 拒絕讓某些來源 IP 的封包進入 拒絕讓帶有某些特殊旗標 (flag) 的封包進入 分析硬體位址 (MAC) 來決定連線與否

某些情況下,他並不能保證我們的網路一定就很安全。 舉幾個例子來談一談:

� 防火牆並不能很有效的抵擋病毒或木馬程式 防火牆對於來自內部 LAN 的攻擊較無承受力

P.9-8~9請參閱書籍

Page 10: 防火牆與  NAT  伺服器

Linux 的封包過濾軟體: iptables

封包進入流程:規則順序的重要性!舉個簡單的例子,假設我預先定義 10 條防火牆規則好了,那麼當 Internet 來了一個封包想要進入我的主機,那麼防火牆是如何分析這個封包的呢?我們以底下的圖示來說明好了:

P.9-13~14請參閱書籍

Page 11: 防火牆與  NAT  伺服器

當一個網路封包要進入到主機之前,會先經由 NetFilter 進行檢查,那就是 iptables 的規則了。 檢查通過則接受 (ACCEPT) 進入本機取得資源,如果檢查不通過,則可能予以丟棄 (DROP) !上圖中主要的目的在告知你:『規則是有順序的』!例如當網路封包進入 Rule 1 的比對時,如果比對結果符合 Rule 1 ,此時這個網路封包就會進行 Action 1 的動作,而不會理會後續的 Rule 2, Rule 3.... 等規則的分析了。

P.9-14請參閱書籍

Page 12: 防火牆與  NAT  伺服器

iptables 的表格 (table)

與鏈 (chain)

P.9-15~16請參閱書籍

Page 13: 防火牆與  NAT  伺服器

filter ( 過濾器 ) :主要跟進入 Linux 本機的封包有關,這個是預設的 table 喔! INPUT :主要與想要進入我們 Linux 本機的封包有關; OUTPUT :主要與我們 Linux 本機所要送出的封包有關; FORWARD :這個咚咚與 Linux 本機比較沒有關係,他可以

『轉遞封包』到後端的電腦中,與下列 nat table 相關性較高。 nat ( 位址轉換 ) :是 Network Address Translation 的縮寫,

這個表格主要在進行來源與目的之 IP 或 port 的轉換,與 Linux 本機較無關,主要與 Linux 主機後的區域網路內電腦較有相關。PREROUTING :在進行路由判斷之前所要進行的規則 (DNAT/

REDIRECT)POSTROUTING :在進行路由判斷之後所要進行的規則

(SNAT/MASQUERADE) OUTPUT� :與發送出去的封包有關

P.9-16~17請參閱書籍

Page 14: 防火牆與  NAT  伺服器

mangle (破壞者 ) :這個表格主要是與特殊的封包的路由旗標有關,早期僅有 PREROUTING 及 OUTPUT 鏈,不過從 kernel 2.4.18 之後加入了 INPUT 及 FORWARD 鏈。 由於這個表格與特殊旗標相關性較高,所以像咱們這種單純的環境當中,較少使用 mangle 這個表格。

P.9-17請參閱書籍

Page 15: 防火牆與  NAT  伺服器

P.9-17請參閱書籍

Page 16: 防火牆與  NAT  伺服器

P.9-18請參閱書籍

由於 mangle 這個表格很少被使用,如果將圖 9.3-3 的 mangle 拿掉的話,那就容易看的多了:

Page 17: 防火牆與  NAT  伺服器

本機的 iptables 語法9.3.4-1 規則的觀察與清除

P.9-19~21請參閱書籍

Page 18: 防火牆與  NAT  伺服器

一般來說,我們在重新定義防火牆的時候,都會先將規則給他清除掉。還記得我們前面談到的,防火牆的『規則順序』是有特殊意義的,所以囉,當然先清除掉規則,然後一條一條來設定會比較容易一點啦。底下就來談談定義預設政策吧!

P.9-22請參閱書籍

Page 19: 防火牆與  NAT  伺服器

9.3.4-2 定義預設政策 (policy)

P.9-22~23請參閱書籍

Page 20: 防火牆與  NAT  伺服器

9.3.4-3 封包的基礎比對: IP, 網域及介面裝置

P.9-23~24請參閱書籍

Page 21: 防火牆與  NAT  伺服器

P.9-24~25請參閱書籍

Page 22: 防火牆與  NAT  伺服器

9.3.4-4 TCP, UDP 的規則比對:針對埠口設定

P.9-25~26請參閱書籍

Page 23: 防火牆與  NAT  伺服器

瞧!你可以利用 UDP 與 TCP 協定所擁有的埠口號碼來進行某些服務的開放或關閉喔!你還可以綜合處理呢!例如:只要來自 192.168.1.0/24 的 1024:65535 埠口的封包,且想要連線到本機的 ssh port 就予以抵擋,可以這樣做:

P.9-26請參閱書籍

Page 24: 防火牆與  NAT  伺服器

9.3.4-5 iptables 外掛模組: mac 與 state

P.9-26~27請參閱書籍

Page 25: 防火牆與  NAT  伺服器

9.3.4-6 ICMP 封包規則的比對:針對是否回應 ping 來設計

P.9-28請參閱書籍

Page 26: 防火牆與  NAT  伺服器

9.3.4-7 超陽春用戶端防火牆設計與防火牆規則儲存

1. 規則歸零

2.預設政策

3. 信任本機

4.回應封包

5. 信任用戶

P.9-29請參閱書籍

Page 27: 防火牆與  NAT  伺服器

P.9-29請參閱書籍

Page 28: 防火牆與  NAT  伺服器

單機防火牆的一個實例規則草擬

外部網路使用 eth0 ( 如果是撥接,有可能是 ppp0 ,請針對你的環境來設定 ) ;

內部網路使用 eth1 ,且內部使用 192.168.100.0/24 這個 Class ;

� 主機預設開放的服務有 WWW, SSH, https 等等;

P.9-33請參閱書籍

Page 29: 防火牆與  NAT  伺服器

INPUT 為 DROP

OUTPUT 及 FORWARD 為 ACCEPT

鳥哥底下預計提供的防火牆流程是這樣的:

P.9-34請參閱書籍

Page 30: 防火牆與  NAT  伺服器

實際設定 iptables.rule :設定最基本的規則,包括清除防火牆規則、載入模組、設定服務可接受等;

iptables.deny :設定抵擋某些惡意主機的進入; iptables.allow :設定允許某些自訂的後門來源主機!

P.9-35請參閱書籍

Page 31: 防火牆與  NAT  伺服器

P.9-35~36請參閱書籍

Page 32: 防火牆與  NAT  伺服器

P.9-36請參閱書籍

Page 33: 防火牆與  NAT  伺服器

P.9-36~37請參閱書籍

Page 34: 防火牆與  NAT  伺服器

P.9-37請參閱書籍

Page 35: 防火牆與  NAT  伺服器

P.9-37~38請參閱書籍

Page 36: 防火牆與  NAT  伺服器

P.9-38請參閱書籍

Page 37: 防火牆與  NAT  伺服器

P.9-39請參閱書籍

NAT 伺服器的設定NAT 的全名是 Network Address Translation ,字面上的意思是『網路位址的轉換』。由字面上的意思我們來想一想, TCP/IP 的網路封包不是有 IP 位址嗎?那 IP 位址不是有來源與目的嗎?我們的 iptables 指令就能夠修改 IP 封包的表頭資料,嘿嘿!連目標或來源的 IP 位址都可以修改呢!甚至連 TCP 封包表頭的 port number 也能修改!真是有趣!

Page 38: 防火牆與  NAT  伺服器

什麼是 NAT ? SNAT ? DNAT ?1.先經過 NAT table 的 PREROUTING 鏈;

2. 經由路由判斷確定這個封包是要進入本機與否,若不進入本機,則下一步;

3.再經過 Filter table 的 FORWARD 鏈;

4. 通過 NAT table 的 POSTROUTING 鏈,最後傳送出去。

NAT 伺服器的重點就在於上面流程的第 1,4 步驟,也就是 NAT table 的兩條重要的鏈: PREROUTING 與 POSTROUTING 。 那這兩條鏈有什麼重要的功能呢?重點在於修改 IP 嘛!但是這兩條鏈修改的 IP 是不一樣的! POSTROUTING 在修改來源 IP ,PREROUTING 則在修改目標 IP 。 由於修改的 IP 不一樣,所以就稱為來源 NAT (Source NAT, SNAT) 及目標 NAT (Destination NAT, DNAT) 。我們先來談一談 IP 分享器功能的 SNAT 吧!

P.9-39~40請參閱書籍

Page 39: 防火牆與  NAT  伺服器

來源 NAT, SNAT :修改封包表頭的『來源』項目

P.9-40請參閱書籍

Page 40: 防火牆與  NAT  伺服器

1. 用戶端所發出的封包表頭中,來源會是 192.168.1.100 ,然後傳送到 NAT 這部主機;

2. NAT 這部主機的內部介面 (192.168.1.2) 接收到這個封包後,會主動分析表頭資料,因為表頭資料顯示目的並非 Linux 本機,所以開始經過路由,將此封包轉到可以連接到 Internet 的 Public IP 處;

3.由於 private IP 與 public IP 不能互通,所以 Linux 主機透過 iptables 的 NAT table 內的 Postrouting 鏈將封包表頭的來源偽裝成為 Linux 的 Public IP ,並且將兩個不同來源 (192.168.1.100 及 public IP) 的封包對應寫入暫存記憶體當中,然後將此封包傳送出去了;

P.9-40請參閱書籍

Page 41: 防火牆與  NAT  伺服器

P.9-41請參閱書籍

Page 42: 防火牆與  NAT  伺服器

4. 在 Internet 上面的主機接到這個封包時,會將回應資料傳送給那個 Public IP 的主機;

5. 當 Linux NAT 伺服器收到來自 Internet 的回應封包後,會分析該封包的序號,並比對剛剛記錄到記憶體當中的資料,由於發現該封包為後端主機之前傳送出去的,因此 在 NAT Prerouting 鏈 中 , 會 將 目 標 IP 修 改 成 為 後 端 主 機 , 亦 即 那 部 192.168.1.100 ,然後發現目標已經不是本機 (public IP) ,所以開始透過路由分析封包流向;

6. 封包會傳送到 192.168.1.2 這個內部介面,然後再傳送到最終目標 192.168.1.100 機器上去!

P.9-41請參閱書籍

Page 43: 防火牆與  NAT  伺服器

目標 NAT, DNAT :修改封包表頭的『目標』項目

P.9-42請參閱書籍

Page 44: 防火牆與  NAT  伺服器

1. 外部主機想要連接到目的端的 WWW 服務,則必須要連接到我們的 NAT 伺服器上頭;

2. 我們的 NAT 伺服器已經設定好要分析出 port 80 的封包,所以當 NAT 伺服器接到這個封包後,會將目標 IP 由 public IP 改成 192.168.1.210 ,且將該封包相關資訊記錄下來,等待內部伺服器的回應;

3. 上述的封包在經過路由後,來到 private 介面處,然後透過內部的 LAN 傳送到 192.168.1.210 上頭!

4. 192.186.1.210 會回應資料給 61.xx.xx.xx ,這個回應當然會傳送到 192.168.1.2 上頭去;

5. 經過路由判斷後,來到 NAT Postrouting 的鏈,然後透過剛剛第二步驟的記錄,將來源 IP 由 192.168.1.210 改為 public IP 後,就可以傳送出去了!

P.9-42請參閱書籍

Page 45: 防火牆與  NAT  伺服器

最陽春 NAT 伺服器: IP 分享功能

P.9-43請參閱書籍

Page 46: 防火牆與  NAT  伺服器

假設內網有部主機 IP 為 192.168.100.10 ,該主機是可對 Internet 開放的 WWW 伺服器。你該如何透過 NAT 機制,將 WWW 封包傳到該主機上?答:假設 public IP 所在的介面為 eth0 ,那麼你的規則就是:

立刻實作

在防火牆後端之網路伺服器 DNAT 設定

P.9-45請參閱書籍