iptables實(shí)戰(zhàn)系列:公共網(wǎng)絡(luò)服務(wù)防火墻
原創(chuàng)【51CTO獨(dú)家特稿】本文將介紹一個(gè)使用iptables保障網(wǎng)絡(luò)服務(wù)安全的例子,需要保護(hù)的企業(yè)網(wǎng)絡(luò)提供對(duì)外的公共網(wǎng)絡(luò)服務(wù),包括WWW、FTP、SMTP、DNS等。
1、 應(yīng)用場(chǎng)景和網(wǎng)絡(luò)拓?fù)?/strong>
在這個(gè)應(yīng)用中,我們將需要使用iptables防火墻保護(hù)企業(yè)網(wǎng)絡(luò)提供的對(duì)外的公共Internet服務(wù),這些服務(wù)包括WWW服務(wù)、FTP服務(wù)、SMTP服務(wù)以及DNS服務(wù)(具體的網(wǎng)絡(luò)拓?fù)湔?qǐng)參見(jiàn)圖1)。因此,這些服務(wù)起都具有有效的Internet地址。
為了將內(nèi)部網(wǎng)段210.10.18.0/24與Internet隔離,在內(nèi)部網(wǎng)絡(luò)和Internet之間使用了包過(guò)濾防火墻。具體的IP地址設(shè)置如下:
- 防火墻的內(nèi)網(wǎng)接口是eth0(IP地址為:210.10.18.88),防火墻對(duì)外的Internet接口是eth1(IP地址為:210.10.19.188);
- WWW服務(wù)器:IP地址為210.10.18.89;
- FTP服務(wù)器:IP地址為210.10.18.90;
- DNS服務(wù)器:IP地址為210.10.18.91;
- SMTP服務(wù)器:IP地址為210.10.18.92。
2、 防火墻具體配置
本應(yīng)用的主要目的是對(duì)企業(yè)網(wǎng)提供各種服務(wù)的服務(wù)器提供保護(hù),以使他們免受來(lái)自于外網(wǎng)Internet惡意用戶(hù)和流量的攻擊和危害。
(1)建立有關(guān)的腳本文件:在/etc/rc.d/目錄下用touch命令建立空的腳本文件,執(zhí)行chmod命令添加可執(zhí)行權(quán)限。
# 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 以確保開(kāi)機(jī)時(shí)能自動(dòng)執(zhí)行該腳本,運(yùn)行如下命令:
# echo “/etc/rc.d/firewall-for-networkservice” >>/etc/rc.d/rc.local
(3)使用vi或者gedit等編輯器編輯/etc/rc.d/firewall-for-networkservice文件,插入如下內(nèi)容:
1)添加相關(guān)腳本信息,注意:腳本中的注釋是采用“#”表示,而不是通常用的“//”
# 添加腳本編寫(xiě)頭部 # !/bin/bash # 在屏幕上顯示信息 echo “Starting iptables rules…” # 開(kāi)啟內(nèi)核轉(zhuǎn)發(fā)功能 echo “1” >/proc/sys/net/ipv4/ip_forward
2)定義規(guī)則重要使用的相關(guān)變量
# 定義變量 IPT=/sbin/iptables WEB_SERVER=210.10.18.89 FTP_SERVER=210.10.18.90 DNS_SERVER=210.10.18.91 SMTP_SERVER=210.10.18.92 PROTECT_DOMAIN=“210.10.18.0/24”
3)刷新基本的鏈規(guī)則,并禁止轉(zhuǎn)發(fā)任意包
$IPT_LIST -F $IPT_LIST -P FORWARD DROP
4)設(shè)置有關(guān)保護(hù)服務(wù)器的包過(guò)濾規(guī)則,并且注意由于服務(wù)器/客戶(hù)機(jī)交互是雙向的,所以不僅僅要設(shè)置數(shù)據(jù)包出去的規(guī)則,還要設(shè)置數(shù)據(jù)包返回的規(guī)則,如下所示:
#保護(hù)WWW服務(wù):服務(wù)端口為80,采用tcp或udp協(xié)議 #規(guī)則為:eth1=>允許目的為內(nèi)部網(wǎng)WWW服務(wù)器的包 $IPT_LIST -A FORWORD -p tcp udp -d $WEB_SERVER -dport www -i eth1 -j ACCEPT #保護(hù)FTP服務(wù):服務(wù)端口為:命令端口21,數(shù)據(jù)端口20。FTP服務(wù)采用tcp協(xié)議。 # 規(guī)則為:eth1=>允許目的為內(nèi)部網(wǎng)FTP服務(wù)器的包 $IPT_LIST -A FORWORD -p tcp -d $FTP_SERVER -dport ftp -i eth1 -j ACCEPT #保護(hù)DNS服務(wù):DNS端口53,采用tcp協(xié)議或者udp協(xié)議 #規(guī)則為:eth1=>允許目的為內(nèi)部網(wǎng)DNS服務(wù)器的查詢(xún)請(qǐng)求 $IPT_LIST -A FORWORD -p tcp udp -d $ DNS_SERVER -dport dns -i eth1 -j ACCEPT #保護(hù)SMTP服務(wù):smtp端口25,采用tcp協(xié)議 #規(guī)則為:eth1=>允許目的為內(nèi)部網(wǎng)SMTP服務(wù)器的smtp請(qǐng)求 $IPT_LIST -A FORWORD -p tcp -d $ SMTP_SERVER -dport smtp -i eth1 -j ACCEPT
(4)執(zhí)行腳本,使配置規(guī)則立刻生效
# /etc/rc.d/firewall-for-networkservice
到現(xiàn)在為止,有關(guān)使用防火墻保障網(wǎng)絡(luò)服務(wù)的配置就完成了。通過(guò)執(zhí)行上面的腳本,我們建立了一個(gè)相對(duì)完整的防火墻。由于該防火墻只對(duì)外開(kāi)放了有限的幾個(gè)端口,因此能夠有效地限制除這幾個(gè)服務(wù)之外的流量進(jìn)入,從而達(dá)到保證安全的目的。當(dāng)然,這個(gè)例子還非常簡(jiǎn)單,用戶(hù)還可以在實(shí)際中通過(guò)針對(duì)具體服務(wù)的細(xì)化防火墻配置,比如限制外部網(wǎng)絡(luò)并發(fā)連接WWW服務(wù)的TCP請(qǐng)求個(gè)數(shù)、限制外網(wǎng)訪問(wèn)FTP服務(wù)器的IP地址列表等來(lái)進(jìn)行。這里只是給出一個(gè)簡(jiǎn)要的示例,以達(dá)到拋磚引玉的目的。
【編輯推薦】