歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

教你完全免費自建Linux防火牆

防火牆(Firewall)是在一個可信的網絡和不可信的網絡之間建立安全屏障的軟件或硬件產品。Linux操作系統內核具有包過濾能力,系統管理員通過管理工具設置一組規則即可建立一個基於Linux的防火牆,用這組規則過濾被主機接收、發送的包或主機從一個網卡轉發到另一個網卡的包,用一台閒置的PC就可以替代昂貴的專門防火牆硬件,對於某些中小企業或部門級用戶,很值得參考。

  一、防火牆的類型和設計策略

  在構造防火牆時,常采用兩種方式,包過濾和應用代理服務。包過濾是指建立包過濾規則,根據這些規則及IP包頭的信息,在網絡層判定允許或拒絕包的通過。如允許或禁止FTP的使用,但不能禁止FTP特定的功能(例如Get和Put的使用)。應用代理服務是由位於內部網和外部網之間的代理服務器完成的,它工作在應用層,代理用戶進、出網的各種服務請求,如FTP和Telenet等。

  目前,防火牆一般采用雙宿主機(Dual-homedFirewall)、屏蔽主機(ScreenedHostFirewall)和屏蔽子網(ScreenedSubnetFirewall)等結構。雙宿主機結構是指承擔代理服務任務的計算機至少有2個網絡接口連接到內部網和外部網之間。屏蔽主機結構是指承擔代理服務任務的計算機僅僅與內部網的主機相連。屏蔽子網結構是把額外的安全層添加到屏蔽主機的結構中,即添加了周邊網絡,進一步把內部網和外部網隔開。

  防火牆規則用來定義哪些數據包或服務允許/拒絕通過,主要有2種策略。一種是先允許任何接入,然後指明拒絕的項;另一種是先拒絕任何接入,然後指明允許的項。一般地,我們會采用第2種策略。因為從邏輯的觀點看,在防火牆中指定一個較小的規則列表允許通過防火牆,比指定一個較大的列表不允許通過防火牆更容易實現。從Internet的發展來看,新的協議和服務不斷出現,在允許這些協議和服務通過防火牆之前,有時間審查安全漏洞。

  二、基於Linux操作系統防火牆的實現

  基於Linux操作系統的防火牆是利用其內核具有的包過濾能力建立的包過濾防火牆和包過濾與代理服務組成的復合型防火牆。下面,讓我們來看看怎樣配置一個雙宿主機的基於Linux的防火牆。

  由於Linux的內核各有不同,提供的包過濾的設置辦法也不一樣。IpFwadm是基於Unix中的ipfw,它只適用於Linux2.0.36以前的內核;對於Linux2.2以後的版本,使用的是Ipchains。IpFwadm和Ipchains的工作方式很相似。用它們配置的4個鏈中,有3個在Linux內核啟動時進行定義,分別是:進入鏈(InputChains)、外出鏈(OutputChains)和轉發鏈(ForwardChains),另外還有一個用戶自定義的鏈(UserDefinedChains)。進入鏈定義了流入包的過濾規則,外出鏈定義了流出包的過濾規則,轉發鏈定義了轉發包的過濾規則。

  這些鏈決定怎樣處理進入和外出的IP包,即當一個包從網卡上進來的時候,內核用進入鏈的規則決定了這個包的流向;如果允許通過,內核決定這個包下一步發往何處,如果是發往另一台機器,內核用轉發鏈的規則決定了這個包的流向;當一個包發送出去之前,內核用外出鏈的規則決定了這個包的流向。某個特定的鏈中的每條規則都是用來判定IP包的,如果這個包與第一條規則不匹配,則接著檢查下一條規則,當找到一條匹配的規則後,規則指定包的目標,目標可能是用戶定義的鏈或者是Accept、Deny、Reject、Return、Masq和Redirect等。

  其中,Accept指允許通過;Deny指拒絕;Reject指把收到的包丟棄,但給發送者產生一個ICMP回復;Return指停止規則處理,跳到鏈尾;Masq指對用戶定義鏈和外出鏈起作用,使內核偽裝此包;Redirect只對進入鏈和用戶定義鏈起作用,使內核把此包改送到本地端口。為了讓Masq和Redirect起作用,在編譯內核時,我們可以分別選擇Config_IP_Masquerading和Config_IP_Transparent_Proxy。

  假設有一個局域網要連接到Internet上,公共網絡地址為202.101.2.25。內部網的私有地址根據RFC1597中的規定,采用C類地址192.168.0.0~192.168.255.0。為了說明方便,我們以3台計算機為例。實際上,最多可擴充到254台計算機。

  具體操作步驟如下:

  1、在一台Linux主機上安裝2塊網卡ech0和ech1,給ech0網卡分配一個內部網的私有地址191.168.100.0,用來與Intranet相連;給ech1網卡分配一個公共網絡地址202.101.2.25,用來與Internet相連。

  2、Linux主機上設置進入、轉發、外出和用戶自定義鏈。本文采用先允許所有信息可流入和流出,還允許轉發包,但禁止一些危險包,如IP欺騙包、廣播包和ICMP服務類型攻擊包等的設置策略。

  具體設置如下:

  (1)刷新所有規則

  (2)設置初始規則

  (3)設置本地環路規則

  本地進程之間的包允許通過。

  (4)禁止IP欺騙

  (5)禁止廣播包

  (6)設置ech0轉發規則

  (7)設置ech1轉發規則

  將規則保存到/etc/rc.firewallrules文件中,用chmod賦予該文件執行權限,在/etc/rc.d.rc.local中加入一行/etc/rc.firewallrules,這樣當系統啟動時,這些規則就生效了。

  通過以上各步驟的配置,我們可以建立一個基於Linux操作系統的包過濾防火牆。它具有配置簡單、安全性高和抵御能力強等優點,特別是可利用閒置的計算機和免費的Linux操作系統實現投入最小化、產出最大化的防火牆的構建。另外,如果在包過濾的基礎上再加上代理服務器,如TIS Firewall Toolkit 免費軟件包,還可構建更加安全的復合型防火牆

Copyright © Linux教程網 All Rights Reserved