linux bsd四大防火牆如何選擇

2021-12-30 06:59:31 字數 3689 閱讀 9683

經常看到很多人,在爭論linux/bsd下面有那麼多的防火牆,我們選擇誰呢,其實咱們經常碰到的開源防火牆(那些由bsd基礎定製開發的商業防火牆cisco、juniper、華為等)不在此列。有iptables、ipfilter、pf、ipfw(panabit7層),看起來很多,其實我們完全沒有必要恐慌,如果您有錢完全可以去買cisco、華為等品牌防火牆,出了事可以找個背黑鍋的,反正不是花咱們自己的錢,還能拿到他們的回扣…這樣的話你就不用往下面看了,因為你不用為選擇什麼防火牆煩惱了,呵呵…

其實對於一般的中小企業,總出口頻寬不超過千兆的話,完全不需要賣那些**高高在上,效能低低在下的東東,程式設計是門學問,核心庫演算法都是百年不變的東西(基礎都是數學,過時很難),有很多商家很聰明,會借用開源bsd、linux自己改改再加上乙個定製的1u、半u機箱,裝上乙個賽揚或者更低能的嵌入式cpu,就說是完全自主開發,線性千兆效能了(就不告訴你倒是多大的包的效能測試,你問他64位小包效能,他就要哭了)。當然網路過濾效能是軟體與硬體的共同結果,如果您企業的頻寬超過了千兆,那就沒辦法省錢了,還是去買cisco、juniper、華為等大企業的mips多核心+專門網路加速模組防火牆吧,我想最少也要百來萬把,不過您的實力肯定是小意思了。

好了廢話不說了,最近由於專案原因,研究了下防火牆——我們**的第一道防線,**下個人對iptables、ipfilter、pf、ipfw的個人看法吧,僅供參考,請謹慎部署,出問題與本人無關!

1、iptables,linux自帶的防火牆。對於這個防火牆本人不看好,首先我是不會拿linux來做防火牆的,為什麼呢,很簡單,linux核心開發者太多,無組織、無紀律,隔三差五的更新kernel,最新版的kernel都到3.6了,而我們的debian、centos才到2.6.32,可悲啊。不過我欣賞debian、centos發行版,為了穩定,還是不要冒進,linux核心都不穩定,選擇iptables就是乙個玩具了!動不動冒乙個linux溢位漏洞,所有設定都是枉然,建議還是老老實實,用linux當後端的web、資料庫用吧,當然如果你非要用,我那麼我還是建議你使用linux的專門的防火牆發行版ipcop ,畢竟如果安全要求不高話,還是可以用用的,畢竟linux的效能,iptables-nat**效能大家都知道很高的,而且還有乙個ly7專案,可以把iptables擴充套件到應用層去,不過你可千萬不要還用ly7官網的特徵碼了,那個太老了,以至於panabit都在笑了,其實大家完全可以學習ly7的7層特徵碼正規表示式(不難就是用正規表示式過濾匹配分析資料報),自己通過,科萊分析軟體,tcpdump等包分析軟體書寫自己的特徵碼,當然了這需要長時間的測試磨合了。

2、下面就來說說我們可愛的freebsd上的幾款防火牆其中最讓我糾結就是ipfilter、ipfw了,這兩個傢伙,乙個是普通過濾效能強悍——ipfw,乙個是nat**效能強悍——ipfilter(由於版權協議,已經被openbsd拋棄了,這也就誕生了pf),ipfw是freebsd的親生防火牆,在以前很老的版本中nat模式還不是核心模式,所以**效能很低下,當然現在已經是核心模式了,而且配置簡單明瞭,而且有強人寫了linux-iptables中的ly7山寨bsd7層過濾模組-ipfw-classly借用了linux-ly7的正則特徵碼,說白了就是linux-ly7的的bsd實現,只用我們常用到的pfsense,7層過濾功能就是呼叫了bsd-ly7模組,當然也是落後的7層過濾特徵碼,需要自己寫新的,還有那個笑使用linux-ly7的panabit,其實他也是在使用ipfw-classly只是人家把所有的軟體名字全部改掉了,不叫ipfw也不叫ipfw-classly了,(全完自主開發嘛),但是他們還是做了一點事情的就是設計了乙個很漂亮的web前台,和自己經常性的編寫最新的ly7特徵碼,以跟上騰訊qq,迅雷的腳步,可惜啊,那些都是加密的,本人是沒有辦法破解了,但是加密了怎麼能開源呢!對於ipfw我的看法是如果你不需要防護牆來實現f5一樣的集群負載均衡的話,可以使用,因為他缺乏pf的位址池輪詢功能,只能說是乙個功能和linux-iptables差不多的防火牆吧,我給他打70分吧。。。

至於ipfilter除了nat**效能蠻好外,沒有其他特別的功能,甚至還沒有人開發7層過濾模組,當然如果您的防火牆後面保護的是網咖遊戲電腦,可以有效的降低ping延遲,對於網咖來說是不不錯的選擇,不需要什麼負載均衡啊,位址池,7層過濾等功能,是不不錯的選擇,建議選擇基於freebsd的m0n0wall防火牆系統。。。打個60分吧。

下面我們來研究下我們的pf防火牆吧,這個東東原來是openbsd中用來替代ipfilter的防火牆,和openbsd配合簡直是完美的集合,加上openbsd的relayd可以實現和f5(聽說要幾十萬)的防火牆負載均衡功能,pf有著很多很使用的功能,ip位址池的強大配置,syn**握手,方便的包整流,流控,狀態表控制,閘道器認證等等除了不支援7層過濾外,其他防火牆有的他都有,其他防火牆沒有的他也有,完全能滿足咱們的各種**的要求,但是唯一的不好就是openbsd雖然安全但是,硬體支援不好,其中導致的最讓我崩潰的就是不支援intel網絡卡的polling功能,遇到64小包,syn攻擊等流量攻擊直接掛住,定死!好在freebsd是乙個研究,學者性的作業系統,他在偷學linux的同時,還在偷學其他的bsd,他很好的把pf從openbsd中移植了過來,而且功能語法直到freebsd9.0基本沒發上變化,(freebsd是移植openbsd4.5-pf,openbsd此前經行了效能最大調整版本),當我們遇到非常大的syn小包攻擊,導致cpu中斷崩潰時我們可以馬上開啟網絡卡的polling模式,雖然效能下降了點,不過好歹不怕syn攻擊了,我的最後選擇就是freebsd+pf作為我們的前端防火牆,把freebsd的swap關閉,所有系統載入到記憶體中區執行,精簡核心,刪除所有無用的程式,把freebsd執行等級提高到2,保護核心,及防火牆規則元件,如果你不是很熟悉pf規則編寫,或者喜歡圖形化,可以選擇pfsense2.01-freebsd8.1+pf的防火牆系統。我給pf打80分吧,畢竟效能不算最高的,建議部署在千兆頻寬以內,500臺機器左右的機房。

好了,防火牆選擇好了,隨便談談diy防火牆的硬體選擇及要求:

1、cpu,我們要選擇多核心最少2個核心,最關鍵的還有頻率,由於x86cpu是通用處理器,完成乙個資料報的過濾需要很大的中斷開銷,已經非常多的指令執行(大概完整的處理乙個資料報需要大約14000條指令),導致了其處理64位小包的能裡低下,沒辦法我大概的算了一下,要使用x86處理器達到小包線速處理千兆頻寬流量,需要處理器頻率達到7g左右,但是除非你超頻,否則我建議最少不要小於3.2g頻率吧,而且最好選擇intel-cpu支援能配合intel-網絡卡,更好的支援傳送,接受列隊功能,miix中斷等專門的網路優化技術。

2、網絡卡不用多說了,唯一的選擇intel網絡卡。而且要處理千兆的話最好是兩塊intrel網絡卡繫結聚合mode=0,這個我就不說了,linux配置大家都會吧,介面一定是pci-e介面,晶元組嘛5257系列了吧,最好支援佇列,支援miix2代中斷。把所有的外部網絡卡中斷都cpuset 到第乙個cpu上,可有效的防止ddos中斷是的cpu切換開銷,當然了你要知道那塊網絡卡是外部的,通過vmstat -i檢視中斷號,你懂得。

3、不要硬碟,隨便整乙個dom盤,就可以了,反正只是作為啟動用,一旦freebsd啟動所有的東東都會加入到 記憶體中執行!關閉swap.

4、記憶體這個東東,越大越好羅。最少2g-4g吧, 如果你圖穩定就選擇32位的freebsd,記憶體嘛 有個2g就好了,一般來說乙個連線占用1k左右記憶體,10m記憶體處理1萬個連線吧。處理百萬併發肯定要2g羅呵呵

5、其他的就沒什麼要求了,想耗電少點還是選擇一塊迷你小板吧,把所有東東塞進乙個火柴盒子裡面,就算是專業的千兆硬體防火牆了(開個十萬八萬的越高越有人買,越便宜越沒人要)。

好了,大概的說了說。大家有時間多看看openbsd-pf手冊,pfsense手冊,研究研究,一定會有收穫的。最後希望netbsd6.0趕緊出release,想用用他的新型防火牆npf官方介紹對多核心有優化期待中。

防火牆如何設定

伺服器防火牆的使用技巧你了解多少?1 更改防火牆的所有檔案規 在字面意思上,好像防火牆的檔案修改就是程式設計師幾行 幾個注釋的事情,但是如果我們真的操作過的話,就會發現其實不是這樣的,這之中是有不少需要注意到的地方。如果防火牆管理員因為突發情況或者一些其他形式的業務中斷做出更改抵消了之前的協議更改,...

如何穿越防火牆NAT

如何穿越防火牆nat,首先需要計算機節點可以自動判斷自己的nat狀態,計算機節點內部內建了 判斷邏輯,在外部需要一台stun的伺服器,通過傳送請求後可以計算機節點自己所在nat的情況.在處理full cone nat時由於ip位址和通訊埠都不做限制可以說它在通訊層面的級別和公網節 點是一致的.穿越這...

ORACLE如何穿越防火牆

應用程式如果要穿越防火牆,一般來說只需要將相應的埠在防火牆上開通,或者將伺服器的ip對映到防火牆的外口即可。但是oracle的埠有點特殊,程式訪問oracle的埠是1521 預設 但是這個埠只是oracle的偵聽器用 network listener listener 只起乙個中介作用,當客戶連線它...