閱讀878 返回首頁    go 阿裏雲 go 技術社區[雲棲]


不可不知的NAT網關的防火牆功能

防火牆掃盲

    之前在沒學網絡的時候,認為防火牆真的是可以防火的牆。10多年前還有不少人問,防火牆多少錢一個平方。

TB1Kf6mdwMPMeJjy1XdXXasrXXa-657-347.png

    但現在大家都知道,防火牆是用來防黑客的,是內部網絡和外部網絡的分界,是用來保護內部服務器和網絡的,是一種信息安全防護係統。

TB1cL6mdwMPMeJjy1XdXXasrXXa-865-222.png

圖片來源:https://www.tunnelsup.com/what-is-a-firewall/

    防火牆有幾個最重要的特征:

    1. 部署在內部網絡和外部網絡之間。這個和建築上的防火牆真的很類似,也是叫Firewall的原因。

    2. 提供基於狀態的安全防護。這個描述很專業,也最恰當的描述了防火牆的本質。最開始的防火牆是基於路由器的訪問控製列表ACL實現的包過濾防火牆,之後逐步發展和演進為基於狀態的防火牆。所謂的狀態淺顯的講就是說防火牆會維護一個源IP,目的IP,源端口,目的端口,協議的五元組的連接狀態,隻有在防火牆上建立起來連接會話狀態的報文才會會放行,否則一律丟棄。這是一種很強的防禦能力。

    防火牆一般情況下是一個安全加固的產品,沒有防火牆業務也可以跑起來。就像是小區沒有門禁和保安其實也不影響小區的正常使用,但也意味著壞人可以隨意的進出,安全風險很大。所以一般上一些規模的用戶都會考慮部署防火牆。

NAT網關的防火牆功能

    在VPC網絡中,有一個企業級的產品叫NAT網關,這個NAT網關中有兩個重要的功能一個是SNAT,一個是DNAT。SNAT其實就是一個基於狀態的安全防護功能,可以當一個簡易的防火牆使用。

TB1QL6mdwMPMeJjy1XdXXasrXXa-1131-772.png

    當部署完NAT網關後,外部設備3如果想主動訪問內部服務器1的話,在NAT網關上會把外部設備3的訪問請求拒絕掉,把報文丟棄。因為外部設備3的公網IP 3.3.3.3在NAT網關的SNAT狀態表中不存在。

    但內部服務器1可以主動訪問外部設備2,當內部服務器1對外訪問的第一個報文到達NAT網關時,NAT網關會記錄下會話狀態。假設內部服務器1通過80端口訪問外部服務器2的80端口,此時NAT會把五元組信息記錄下來並保持狀態信息。之後如果外部服務器2以80端口,訪問內部服務器1的80端口,此時NAT網關會接受訪問請求,並將報文轉發到內部服務器。但如果外部服務器2以8080端口訪問內部服務器1的80端口時,此時這個訪問請求也會被丟棄,因為在SNAT狀態表中沒有對應五元組的狀態連接信息。

    上麵的描述就是典型的基於狀態的安全防護功能,不允許外部的用戶或設備主動訪問內部的服務器。隻允許內部服務器主動訪問外部服務器後並建立起連接狀態後,外部服務器才能和內部服務器通信。

    所以NAT網關在使用中是可以當一個功能簡單的防火牆使用的,可以把後端的服務器隱藏到NAT網關後麵,不會被黑客掃描到,也不會輕易的被黑客攻擊。

最佳實踐

    舉個最佳實踐的例子,很多部署在雲上的在線支付係統都會調用支付寶的支付接口。而在線支付係統的安全性一般要求是特別高的,不能輕易的被黑客掃描到,不能輕易的被黑客攻擊。在這種場景下,用戶會選擇在VPC網絡中部署NAT網關。當前在線支付係統有調用支付寶支付接口的需求時,會通過NAT網關出公網。此時NAT網關會記錄調用請求的狀態信息。NAT會檢查收到的IP報文,隻有IP報文的源IP,源端口號,目的IP,目的端口號,協議類型這五元組信息和SNAT狀態表中的連接信息相匹配時。NAT網關才會將報文轉發到內部支付係統,否則接收到的報文一律丟棄。

   


最後更新:2017-09-13 00:32:31

  上一篇:go  探秘阿裏EDAS任務調度服務
  下一篇:go  Logtail技術分享(一) : Polling + Inotify 組合下的日誌保序采集方案