1 / 46

防火牆與 NAT 伺服器

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

Télécharger la présentation

防火牆與 NAT 伺服器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 09 • 防火牆與 NAT 伺服器

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

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

  4. 所以囉,防火牆能作什麼呢?防火牆最大的功能就是幫助你『限制某些服務的存取來源』!舉例來說:(1)你可以限制檔案傳輸服務 (FTP) 只在子網域內的主機才能夠使用,而不對整個 Internet 開放; (2)你可以限制整部 Linux 主機僅可以接受客戶端的 WWW 要求,其他的服務都關閉; (3)你還可以限制整部主機僅能主動對外連線。反過來說,若有用戶端對我們主機發送主動連線的封包狀態 (TCP 封包的 SYN flag) 就予以抵擋等等。這些就是最主要的防火牆功能了! • 所以鳥哥認為,防火牆最重要的任務就是在規劃出: • 切割被信任(如子網域)與不被信任(如 Internet)的網段; • 劃分出可提供 Internet 的服務與必須受保護的服務; • 分析出可接受與不可接受的封包狀態; • P.9-3 請參閱書籍

  5. Linux 系統上防火牆的主要類別 • Netfilter (封包過濾機制) • TCP Wrappers (程式控管) • Proxy (代理伺服器) • P.9-4 請參閱書籍

  6. 防火牆的一般網路佈線示意 • 單一網域,僅有一個路由器 • 因為內外網域已經分開,所以安全維護在內部可以開放的權限較大! • „安全機制的設定可以針對 Linux 防火牆主機來維護即可! • 對外只看的到 Linux 防火牆主機,所以對於內部可以達到有效的安全防護! • P.9-5~6 請參閱書籍

  7. 內部網路包含安全性更高的子網路,需內部防火牆切開子網路:內部網路包含安全性更高的子網路,需內部防火牆切開子網路: • P.9-6~7 請參閱書籍

  8. 在防火牆的後面架設網路伺服器主機 • P.9-7~8 請參閱書籍

  9. 防火牆的使用限制 • 可以進行的分析工作主要有: • 拒絕讓 Internet 的封包進入主機的某些埠口 • 拒絕讓某些來源 IP 的封包進入 • 拒絕讓帶有某些特殊旗標 (flag) 的封包進入 • 分析硬體位址 (MAC) 來決定連線與否 • 某些情況下,他並不能保證我們的網路一定就很安全。 舉幾個例子來談一談: • „防火牆並不能很有效的抵擋病毒或木馬程式 • 防火牆對於來自內部 LAN 的攻擊較無承受力 • P.9-8~9 請參閱書籍

  10. Linux 的封包過濾軟體:iptables • 封包進入流程:規則順序的重要性! • 舉個簡單的例子,假設我預先定義 10 條防火牆規則好了,那麼當 Internet 來了一個封包想要進入我的主機,那麼防火牆是如何分析這個封包的呢?我們以底下的圖示來說明好了: • P.9-13~14 請參閱書籍

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

  12. iptables的表格 (table) 與鏈 (chain) • P.9-15~16 請參閱書籍

  13. 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 請參閱書籍

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

  15. P.9-17 請參閱書籍

  16. 由於 mangle 這個表格很少被使用,如果將圖 9.3-3 的 mangle 拿掉的話,那就容易看的多了: • P.9-18 請參閱書籍

  17. 本機的 iptables語法 • 9.3.4-1 規則的觀察與清除 • P.9-19~21 請參閱書籍

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

  19. 9.3.4-2 定義預設政策 (policy) • P.9-22~23 請參閱書籍

  20. 9.3.4-3 封包的基礎比對:IP, 網域及介面裝置 • P.9-23~24 請參閱書籍

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

  22. 9.3.4-4 TCP, UDP 的規則比對:針對埠口設定 • P.9-25~26 請參閱書籍

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

  24. 9.3.4-5 iptables外掛模組:mac與 state • P.9-26~27 請參閱書籍

  25. 9.3.4-6 ICMP 封包規則的比對:針對是否回應 ping 來設計 • P.9-28 請參閱書籍

  26. 9.3.4-7 超陽春用戶端防火牆設計與防火牆規則儲存 • 規則歸零 • 預設政策 • 信任本機 • 回應封包 • 信任用戶 • P.9-29 請參閱書籍

  27. P.9-29 請參閱書籍

  28. 單機防火牆的一個實例 • 規則草擬 • 外部網路使用 eth0 (如果是撥接,有可能是 ppp0,請針對你的環境來設定); • 內部網路使用 eth1 ,且內部使用 192.168.100.0/24 這個 Class ; • „主機預設開放的服務有 WWW, SSH, https 等等; • P.9-33 請參閱書籍

  29. INPUT 為 DROP • OUTPUT 及 FORWARD 為 ACCEPT • 鳥哥底下預計提供的防火牆流程是這樣的: • P.9-34 請參閱書籍

  30. 實際設定 • iptables.rule:設定最基本的規則,包括清除防火牆規則、載入模組、設定服務可接受等; • iptables.deny:設定抵擋某些惡意主機的進入; • iptables.allow:設定允許某些自訂的後門來源主機! • P.9-35 請參閱書籍

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

  32. P.9-36 請參閱書籍

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

  34. P.9-37 請參閱書籍

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

  36. P.9-38 請參閱書籍

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

  38. 什麼是 NAT? SNAT? DNAT? • 先經過 NAT table 的 PREROUTING 鏈; • 經由路由判斷確定這個封包是要進入本機與否,若不進入本機,則下一步; • 再經過 Filter table 的 FORWARD 鏈; • 通過 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 請參閱書籍

  39. 來源 NAT, SNAT:修改封包表頭的『來源』項目 • P.9-40 請參閱書籍

  40. 用戶端所發出的封包表頭中,來源會是 192.168.1.100 ,然後傳送到 NAT 這部主機; • NAT 這部主機的內部介面 (192.168.1.2) 接收到這個封包後,會主動分析表頭資料,因為表頭資料顯示目的並非 Linux 本機,所以開始經過路由,將此封包轉到可以連接到 Internet 的 Public IP 處; • 由於 private IP 與 public IP 不能互通,所以 Linux 主機透過 iptables的 NAT table 內的 Postrouting鏈將封包表頭的來源偽裝成為 Linux 的 Public IP ,並且將兩個不同來源 (192.168.1.100 及 public IP) 的封包對應寫入暫存記憶體當中,然後將此封包傳送出去了; • P.9-40 請參閱書籍

  41. P.9-41 請參閱書籍

  42. 在 Internet 上面的主機接到這個封包時,會將回應資料傳送給那個 Public IP 的主機; • 當 Linux NAT 伺服器收到來自 Internet 的回應封包後,會分析該封包的序號,並比對剛剛記錄到記憶體當中的資料,由於發現該封包為後端主機之前傳送出去的,因此 在 NAT Prerouting鏈 中 , 會 將 目 標 IP 修 改 成 為 後 端 主 機 , 亦 即 那 部 192.168.1.100,然後發現目標已經不是本機 (public IP),所以開始透過路由分析封包流向; • 封包會傳送到 192.168.1.2 這個內部介面,然後再傳送到最終目標 192.168.1.100 機器上去! • P.9-41 請參閱書籍

  43. 目標 NAT, DNAT:修改封包表頭的『目標』項目 • P.9-42 請參閱書籍

  44. 外部主機想要連接到目的端的 WWW 服務,則必須要連接到我們的 NAT 伺服器上頭; • 我們的 NAT 伺服器已經設定好要分析出 port 80 的封包,所以當 NAT 伺服器接到這個封包後,會將目標 IP 由 public IP 改成 192.168.1.210 ,且將該封包相關資訊記錄下來,等待內部伺服器的回應; • 上述的封包在經過路由後,來到 private 介面處,然後透過內部的 LAN 傳送到 192.168.1.210 上頭! • 192.186.1.210 會回應資料給 61.xx.xx.xx ,這個回應當然會傳送到 192.168.1.2 上頭去; • 經過路由判斷後,來到 NAT Postrouting的鏈,然後透過剛剛第二步驟的記錄,將來源 IP 由 192.168.1.210 改為 public IP 後,就可以傳送出去了! • P.9-42 請參閱書籍

  45. 最陽春 NAT 伺服器:IP 分享功能 • P.9-43 請參閱書籍

  46. 立刻實作 • P.9-45 • 假設內網有部主機 IP 為 192.168.100.10 ,該主機是可對 Internet 開放的 WWW 伺服器。你該如何透過 NAT 機制,將 WWW 封包傳到該主機上? • 答:假設 public IP 所在的介面為 eth0 ,那麼你的規則就是: • 在防火牆後端之網路伺服器 DNAT 設定 請參閱書籍

More Related