BKJIA獨家特稿】本文將介紹一個使用iptables保障網路服務安全的例子,需要保護的商業網路提供對外的公用網路服務,包括WWW、FTP、SMTP、DNS等。
1、應用情境和網路拓撲
在這個應用中,我們將需要使用iptables防火牆保護商業網路提供的對外的公用Internet服務,這些服務包括WWW服務、FTP服務、SMTP服務以及DNS服務具體的網路拓撲請參見圖1)。因此,這些服務起都具有有效Internet地址。
為了將內部網段210.10.18.0/24與Internet隔離,在內部網路和Internet之間使用了包過濾防火牆。具體的IP地址設定如下:
- 防火牆的內網介面是eth0IP地址為:210.10.18.88),防火牆對外的Internet介面是eth1IP地址為:210.10.19.188);
- WWW伺服器:IP地址為210.10.18.89;
- FTP伺服器:IP地址為210.10.18.90;
- DNS伺服器:IP地址為210.10.18.91;
- SMTP伺服器:IP地址為210.10.18.92。
圖1 防火牆部署執行個體
2、防火牆具體配置
本應用的主要目的是對企業網提供各種服務的伺服器提供保護,以使他們免受來自於外網Internet惡意使用者和流量的攻擊和危害。
1)建立有關的指令檔:在/etc/rc.d/目錄下用touch命令建立空的指令檔,執行chmod命令添加可執行許可權。
# touch /etc/rc.d/firewall-for-networkservice# chmod u+x /etc/rc.d/firewall-for-networkservice
2)編輯/etc/rc.d/rc.local檔案,在末尾加上/etc/rc.d/firewall-for-networkservice 以確保開機時能自動執行該指令碼,運行如下命令:
# echo “/etc/rc.d/firewall-for-networkservice” >>/etc/rc.d/rc.local
3)使用vi或者gedit等編輯器編輯/etc/rc.d/firewall-for-networkservice檔案,插入如下內容:
1)添加相關指令碼資訊,注意:指令碼中的注釋是採用“#”表示,而不是通常用的“//”
# 添加指令碼編寫頭部# !/bin/bash# 在螢幕上顯示資訊echo “Starting iptables rules…”# 開啟核心轉寄功能echo “1” >/proc/sys/net/ipv4/ip_forward
2)定義規則重要使用的相關變數
# 定義變數IPT=/sbin/iptablesWEB_SERVER=210.10.18.89FTP_SERVER=210.10.18.90DNS_SERVER=210.10.18.91SMTP_SERVER=210.10.18.92PROTECT_DOMAIN=“210.10.18.0/24”
3)重新整理基本的鏈規則,並禁止轉寄任意包
$IPT_LIST -F$IPT_LIST -P FORWARD DROP
4)設定有關保護伺服器的包過濾規則,並且注意由於伺服器/客戶機互動是雙向的,所以不僅僅要設定資料包出去的規則,還要設定資料包返回的規則,如下所示:
#保護WWW服務:服務連接埠為80,採用tcp或udp協議#規則為:eth1=>允許目的為內部網WWW伺服器的包$IPT_LIST -A FORWORD -p tcp udp -d $WEB_SERVER -dport www -i eth1 -j ACCEPT#保護FTP服務:服務連接埠為:命令連接埠21,資料連接埠20。FTP服務採用tcp協議。# 規則為:eth1=>允許目的為內部網FTP伺服器的包$IPT_LIST -A FORWORD -p tcp -d $FTP_SERVER -dport ftp -i eth1 -j ACCEPT#保護DNS服務:DNS連接埠53,採用tcp協議或者udp協議#規則為:eth1=>允許目的為內部網DNS伺服器的查詢請求$IPT_LIST -A FORWORD -p tcp udp -d $ DNS_SERVER -dport dns -i eth1 -j ACCEPT#保護SMTP服務:smtp連接埠25,採用tcp協議#規則為:eth1=>允許目的為內部網SMTP伺服器的smtp請求$IPT_LIST -A FORWORD -p tcp -d $ SMTP_SERVER -dport smtp -i eth1 -j ACCEPT
4)執行指令碼,使配置規則立刻生效
# /etc/rc.d/firewall-for-networkservice
到現在為止,有關使用防火牆保障網路服務的配置就完成了。通過執行上面的指令碼,我們建立了一個相對完整的防火牆。由於該防火牆只對外開放了有限的幾個連接埠,因此能夠有效地限制除這幾個服務之外的流量進入,從而達到保證安全的目的。當然,這個例子還非常簡單,使用者還可以在實際中通過針對具體服務的細化防火牆配置,比如限制外部網路並發串連WWW服務的TCP請求個數、限制外網訪問FTP伺服器的IP地址清單等來進行。這裡只是給出一個簡要的樣本,以達到拋磚引玉的目的。