早在上大學時就有一個疑問,為什麼防火牆看起來像是一台路由器,為了引入一個防火牆,你起碼要多申請2個IP位址,還要配置複雜的路由保證通路,為了上述保證,你不得不重新規劃你的網絡,最最麻煩的就是為你的那個防火牆配置設定的那個IP位址,該位址可能會成為攻擊者進入内部網的入口。到底是誰在保護誰啊?
真正意義的純粹的防火牆應該就是一個過濾裝置,沒有IP位址,對流量完全透明,你可以把它看成是一根比較昂貴的線纜,線纜而已,它可以熱插拔到你的網絡的任何地方,不需要對已有的拓撲進行任何改造,本質上,它類似一個鍊路層裝置,也就是和一個橋很類似,和橋不同的就是它比較智能。說實話,難道防火牆本來不就應該是這樣嗎?隻要一個裝置能“看到包的五元素或者更多的資訊”,那麼該裝置就能根據這些資訊進行包過濾,如果該裝置還能維護一個流的資訊,那麼它就可以實作基于狀态的包過濾,這有什麼難的,和該裝置有沒有IP位址有關系嗎,和它工作在第幾層有關系嗎?如果該裝置工作在三層,那麼叫它路由防火牆二合一産品比較合适。
純粹的防火牆應該是鍊路層的透明防火牆,在以太網交換機中加入包過濾功能即可,或者更純粹的,一個隻有兩個口的橋裝置,加入包過濾功能,然後串聯在内部網的出口處即可。關于透明防火牆的功能,當然可以在包過濾之外進行擴充,它還可以是一個NAT裝置,NAT裝置并不一定非得需要一個IP位址。透明防火牆沒有IP位址,這确實是一個亮點,使得所有的基于IP的攻擊都束手無策。關于透明防火牆的實作,我覺得比較簡單,一個很簡單的Demo可以用linux快速做出來,在做這個Demo之前,必須要有所了解的就是Linux的Netfilter包過濾機制,特别是它在鍊路層都實作了什麼,資料包進入流出的具體流程是什麼,都經過了哪些路徑,知道了這些,你才能在關鍵的地點設定過濾器,其次,你必須要明白的是如何優化它,如何提高其可用性,最終如何産品化它,這就涉及到了很多的内容,比如我可以用硬體網卡加速器來優化性能,實作一個基于狀态的透明防火牆,我還必須確定闆子支援網卡掉電ByPass以及watchdog晶片實作的故障ByPass...
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1268997