Iptables組件是一種工具,也稱為用戶空間(Userspace)。它使插入、修改和除去信息包過濾表中的規則變得容易。用戶可以從http://netfilter.org下載該工具並安裝使用它。
安裝Iptables
Iptables的安裝大家已經很熟悉了,下面只把相關的命令給出:
# bzip2 -d iptables-1.2.6a.tar.bz2# tar -xvf iptables-1.2.6a.tar# cd iptables-1.2.6a# make KERNEL_DIR=/usr/src/Linux/# make install KERNEL_DIR=/usr/src/linux/
匹配
iptables命令的可選match部分指定信息包與規則匹配所應具有的特征(如源和目的地址、協議等)。這裡將研究可用於采用任何協議的信息包的通用匹配。下面是一些重要的、且常用的通用匹配及其示例和說明:
-p或--protocol 該通用協議匹配用於檢查某些特定協議。協議示例有TCP、UDP、ICMP、用逗號分隔的任何這三種協議的組合列表和ALL。ALL是缺省匹配,用於所有協議。用戶可以使用!符號表示不與該項匹配。示例如下:
# iptables -A INPUT -p TCP, UDP# iptables -A INPUT -p ! ICMP
在上述示例中,這兩條命令都執行同一任務。它們指定所有TCP和UDP信息包都將與該規則匹配。通過指定! ICMP,用戶可以允許TCP和UDP協議,而將ICMP排除在外。
-s或--source 該源匹配用於根據信息包的源IP地址來與它們匹配。該匹配允許對某一范圍內的IP地址進行匹配,使用!符號表示不與該項匹配。缺省源匹配與所有IP地址匹配。示例如下:
# iptables -A OUTPUT -s 192.168.0.0/24# iptables -A OUTPUT -s ! 203.16.1.89
第一條命令指定該規則與所有來自192.168.0.0到192.168.0.24的IP地址范圍的信息包匹配。第二條命令指定該規則將與除來自源地址203.16.1.89外的任何信息包匹配。
-d或--destination 該目的地匹配用於根據信息包的目的IP地址來與它們匹配。該匹配允許對某一范圍內IP地址進行匹配,可以使用!符號,表示不與該項匹配。示例如下:
# iptables -A INPUT -d 192.168.0.0/24# iptables -A OUTPUT -d ! 203.16.1.89
目標
目標是由規則指定的操作。下面是常用的一些目標及其示例和說明: ACCEPT 當信息包與具有ACCEPT目標的規則完全匹配時, 會被接受(允許它前往目的地),並且它將停止遍歷鏈s。該目標被指定為-j ACCEPT。 DROP 當信息包與具有DROP目標的規則完全匹配時,會阻塞該信息包,並且不對它做進一步處理。該目標被指定為-j DROP。 REJECT 該目標的工作方式與DROP目標相同,但它比DROP好。和DROP不同,REJECT不會在服務器和客戶機上留下死套接字。另外,REJECT將錯誤消息發回給信息包的發送方。該目標被指定為-j REJECT。示例如下: # iptables -A FORWARD -p TCP --dport 22 -j REJECT RETURN在規則中設置RETURN,目標是讓與該規則匹配的信息包停止遍歷包含該規則的鏈。如果鏈是INPUT之類的主鏈,則使用該鏈的缺省策略處理信息包。 它被指定為-jump RETURN。示例如下: # iptables -A FORWARD -d 203.16.1.89 -jump RETURN
有了上面的基礎後,用戶可以使用相應的Iptables規則鏈來保護電腦。