1.網絡結構,這個網絡假設內部網有有效的internet地址,為了將內部網段192.168.80.0/24與internet隔離,在內部網絡和internet之間使用了包過濾防火牆。防火牆的內網接口是eth1(198.168.80.254),防火牆的internet接口是eth0(198.199.37.254).另外,內網中有3台服務器對外提供服務。www服務器:ip地址是:198.168.80.251ftp服務器:ip地址是:198.168.80.252e_mail服務器:ip地址為:198.168.80.2532.防火牆的建立過程: 本例主要是對內部的各種服務器提供保護.下面采用編輯並執行可執行腳本的方法建立此防火牆.具體過程如下: ①:在/etc/rc.d/目錄下用touch命令建立空的腳本文件,執行chmod命令添加可執行的權限。 #touch /etc/rc.d/filter-firewall #chmod u+x /etc/rc.d/filter-firewall ②:編輯/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/filter-firewall以確保開機時能自動執行該腳本. #echo "/etc/rc.d/filter-firewall" >>/etc/rc.d/rc.local ③:使用文本編輯器編輯/etc/rc.d/filter-firewall文件,插入如下內容: #!/bin/bash #在屏幕上顯示信息 echo “starting iptables rules....” #開啟內核轉發功能 echo “1”>/proc/sys/net/ipv4/ip_forward ******************************************** #定義變量 IPT=/sbin/iptables WWW-SERVER=198.168.80.251 FTP-SERVER=198.168.80.252 EMAIL-SERVER=198.168.80.253 IP_RANGE="198.168.80.0/24" ******************************************** #刷新所有的鏈的規則 $IPT -F ******************************************** 首先禁止轉發任何包,然後在一步步設置允許通過的包,所以首先設置防火牆FORWARD鏈的策略DROP $IPT -P FORWARD DROP ******************************************* 下面設置關於服務器的包過濾規則: 由於服務器/客戶機交互是雙向的,所以不僅僅要設置數據包出去的規則,也還要設置數據包返回的規則. 1)下面建立針對來自internet數據包的過濾規則: (1)WWW服務: 服務器端口:80采用tcp或utp協議 規則為:eth0=>允許目的為內網WWW服務器的包: $IPT -A FORWARD -p tcp $FTP-erver -dport www -i eth0 -j ACCEPT (2)FTP服務: 服務器端口:命令端為:21.數據端口為:20 FTP采用tcp協議. 規則為:eth0=>允許目的為內部FTP服務器的包. $IPT -A FORWARD -p tcp -d $FTP-SERVER -dport ftp -i eth0 -j ACCEPT (3)EMAIL服務器 : 包含兩個協議,一個是smtp ,一個是pop3 處於安全性考慮,通常只提供對內pop3服務. 所以在這裡我們只考慮針對smtp的安全性問題. #smtp端口 25 采用tcp協議. 規則為:eth0=>允許目的為內部網E_mail服務器的smtp請求. $IPT -A FORWARD -p tcp -d $EMAIL-SERVER -dport smtp -i eth0 -j ACCEPT2)下面建立針對intranet客戶的過濾規則: 本例中防火牆位於網關的位置,所以主要是防止來自internet的攻擊不能防止來自intranet的攻擊. 假如網絡中的,服務器都是基於linux的,也可以在每一部服務器上設置,相關的過濾規則來防止來自intranet的攻擊. 對於internet對intranet客戶的返回包,定義如下規則: (1)允許intranet客戶采用被動模式訪問internet的ftp服務器 $IPT -A FORWARD -p tcp -s 0/0 -sport ftp-data -d $IP_RANGE -i eth0 -j ACCEPT (2)接受來自internet的非連接請求的tcp包. $IPT -A FORWARD -p tcp -d 198.168.80.0/24 ! -syn -i eth0 -j ACCEPT (3)接受所有udp包,主要針對oicq等使用udp的服務: $IPT -A FORWARD -p utp -d 198.168.80.0/24 -i eth0 -j ACCEPT3)然後接受來自整個intranet的數據包過濾定義規則如下: $IPT -A FORWARD -s 198.168.80.0/24 -i eth0 -j ACCEPT*********************************************************************************處理ip碎片:接受所有的ip碎片,但采用limit匹配擴展對其單位時間可以通過的ip碎片數量進行限制,以防止ip碎片攻擊.$IPT -A FORWARD -f -m limit --limit 100/s --limit -burst 100 -j ACCEPT說明:對不管來自哪裡的ip碎片都進行限制,允許每秒通過100個ip碎片,該限制觸發的條件是100個ip碎片.**************************************************設置icmp包過濾:icmp包通常用於網絡測試等,故允許所有的icmp包通過,但是黑客常常采用icmp進行攻擊,如:ping of death等所以我們采用limit匹配擴展加以限制:$IPT -A FORWARD -p icmp -m limit --limit 1/s --limit -burst 100 -j ACCEPT說明:對不管來自哪裡的icmp包都進行限制,允許每秒通過一個包給限制觸發的條件是10個包.************************************************4)執行腳本,使之立刻生效.#/etc/rc.d/filter-firewall通過執行上面腳本,建立了一個相對完整的防火牆,該防火牆只對外開放了有限的幾個端口,同時提供了客戶對internet無縫訪問,並且對ip碎片攻擊和icmp的ping of death提供了有效的防護手段.