ipchains內建于Linux內核,它是一個(gè)在系統之間拒絕、接受、路由數據包的基本防火墻工具。由于有了ipchains,再加上Linux操作系統固有的低成本優(yōu)勢,對于LAN或者連接Internet的企業(yè)網(wǎng)防火墻來(lái)說(shuō),Linux無(wú)疑是一種價(jià)廉物美的選擇。
防火墻類(lèi)型
Linux內核定義了三種類(lèi)型的防火墻通信過(guò)濾,把不同的規則應用到各種通信方式就形成了功能極其廣泛的防火墻。三種基本類(lèi)型如下:
輸入防火墻(Input Firewall):所有傳入的數據在接收之前都經(jīng)過(guò)輸入防火墻規則檢查。
輸出防火墻(Output Firewall):所有傳出的數據在發(fā)送之前都經(jīng)過(guò)輸出防火墻規則檢查。
轉發(fā)防火墻(Forwarding Firewall):所有轉發(fā)的數據在發(fā)送之前都經(jīng)過(guò)轉發(fā)防火墻規則檢查。
用戶(hù)可以自己定義規則(或稱(chēng)為“鏈”,即chains),其作用相當于對三種基本防火墻規則的擴展。
防火墻策略
所有這三種規則類(lèi)型以及用戶(hù)定義的附加規則都有默認的策略,默認策略控制系統如何處理到達防火墻的特殊數據包。用戶(hù)既可以對任何規則使用標準策略,也可以轉入另一個(gè)用戶(hù)定義的規則進(jìn)一步處理。這些標準的策略為:
ACCEPT(接受):允許數據包通過(guò)防火墻。
REJECT(駁回):丟棄數據包,并發(fā)送一個(gè)ICMP錯誤消息給該數據包的發(fā)送者。這里的ICMP是指Internet Control Message Protocol,即Internet控制消息協(xié)議。
DENY(拒絕):直接丟棄數據包,不向發(fā)送者提供任何錯誤信息。
MASQ(偽裝):偽裝(Masquerade)數據包,使其看起來(lái)就像來(lái)自本地系統一樣。當Linux用作路由器時(shí)這種策略尤其有用。
REDIRECT(轉發(fā)):不管數據包的目的地是哪里,把它轉發(fā)到本地系統的指定端口。
RETURN(返回):該策略只對用戶(hù)定義規則有效,它是指直接返回調用鏈。如果在某種內核鏈上應用該策略,意味著(zhù)脫離該鏈并用該鏈的默認策略取代。
構造規則鏈
ipchains構造規則鏈的方法相當簡(jiǎn)單,而且非常靈活。對于任何一個(gè)鏈,用戶(hù)可以指定一系列選項,包括:
協(xié)議類(lèi)型(TCP,UDP,ICMP或者ALL)。
數據包源地址(格式為:address[/mask] [port[:port]])。
數據包目標地址(格式與源地址相同)。
目標端口號(格式為:port[:port]])。
ICMP包類(lèi)型(ICMP消息的種類(lèi)有很多,可以將規則指定到某種特定的類(lèi)型)。
規則所應用的接口(例如eth0)。
還有其他一些選項,通過(guò)它們可以指定不同類(lèi)型TCP包的優(yōu)先級。例如,賦予FTP包比IRC(Internet Relay Chat)包更高的優(yōu)先級。又如,為某些鏈提供日志記錄;設置更加詳細的選項,如包類(lèi)型、大小等等。
鑒于ipchains豐富的功能和選項的繁多,構建防火墻可能很簡(jiǎn)單,也可能異常復雜,這與具體的需求有關(guān)。簡(jiǎn)單的防火墻可以只由4到5個(gè)命令組成;復雜的防火墻可以由數百個(gè)ipchanins命令組成,鎖定一切,只在用戶(hù)需要的時(shí)候打開(kāi)特定的服務(wù)和端口。
構建好的防火墻是一項非常復雜的工作,我們強烈建議讀者參閱www.linux-firewall-tools.com/linux/firewall的Linux Firewall DesignToolkit。它提供了一個(gè)簡(jiǎn)潔而詳盡的防火墻在線(xiàn)設計界面,即使不熟悉如何使用ipchains也可用它來(lái)生成直接可以使用的防火墻腳本。
防火墻腳本實(shí)例
下面是一個(gè)簡(jiǎn)單的防火墻腳本。
ipchains -A input -i eth0 -s 192.168.0.0/16 -j REJECT
ipchains -A input -d 192.168.1.5 25 -j ACCEPT
ipchains -A input -d 192.168.1.5.110 -j ACCEPT
ipchains -A input -d 192.168.0.0/16 -syn -j REJECT
該腳本把一些規則添加到輸入規則鏈。第一個(gè)規則的意思是,任何到達外部接口的數據包,如果其源地址裝扮成來(lái)自?xún)炔烤W(wǎng)絡(luò )(192.168),則丟棄它,這是因為有人試圖進(jìn)行欺騙。接下來(lái)兩個(gè)規則的意思是,接收所有目標地址為192.168.1.5(這是一個(gè)郵件服務(wù)器,在端口25提供SMTP服務(wù),在端口110提供POP3服務(wù))。最后一個(gè)規則的意思是,拒絕所有其他設置了SYN位的傳入TCP連接(設置SYN位表示試圖初始化一個(gè)連接)。
結束語(yǔ)
無(wú)論是為L(cháng)inux服務(wù)器提供防火墻,還是為內部LAN提供防火墻/路由器,ipchains都能夠提供強大的過(guò)濾能力。一個(gè)配置完善的防火墻所帶來(lái)的安全和保護是無(wú)價(jià)的。Linux具有任何希望構造防火墻的人所需要的靈活性和實(shí)力,而且它還獨具成本低廉的優(yōu)點(diǎn)。
聯(lián)系客服