GB | BIG5
|
| 首頁 > 安全技術 > 網絡 > 正文 |
 |
| 怎樣用ipchains構建防火牆 |
| http://www.linuxforum.net 作者:白雲煒 (2001-04-21 19:38:25) |
提示:防火牆是提供網絡安全性的重要手段之一,RedHat6.1提供了用實現過濾型防火牆的工具
包ipchains。實現防火牆的策略一般有兩種:在第一種方式下,首先允許所有的包,然在禁止有
危險的包通過防火牆;第二種方式則相反,首先禁止所有的包,然再根據所需要的服務允許特定的包
通過防火牆。相比較而言,第二種方式更能保証網絡的安全性。但對第二種方式,要求使用者知道
Server/Client交互的基本原理和特定服務所對應的具體端口。本文將從一個具體的實列出發,討論怎
樣採用第二種方式構建企業的防火牆系統。
一、Server/Client的交互原理
首先讓我們看一下服務器/客戶機的交互原理。服務器提供某特定功能的服務總是由特定的台程
序提供的。在TCP/IP網絡中,常常把這個特定的服務綁定到特定的TCP或UDP端口。之,該台程序就
不斷地監聽(listen)該端口,一旦接收到符合條件的客戶端請求,該服務進行TCP握手就同客戶端建
立一個連接,響應客戶請求。與此同時,再產生一個該綁定的拷貝,繼續監聽客戶端的請求。
舉一個具體的例子:假設網絡中有一台服務器A(IP地址為a.b.c.1)提供WWW服務,另有客戶機
B(a.b.c.4)、C(a.b.c.7)。首先,服務器A運行提供WWW服務的台程序(比如Apache)並且把該服務綁
定到端口80,也就是說,在端口80進行監聽。當B發起一個連接請求時,B將打開一個大1024的連接端
口(1024內為已定義端口),假設為1037。A在接收到請求,用80端口與B建立連接以響應B的請求,同
時產生一個80端口綁定的拷貝,繼續監聽客戶端的請求。假如A又接收到C的連接請求(設連接請求端口
為1071),則A在與C建立連接的同時又產生一個80端口綁定的拷貝繼續監聽客戶端的請求。如下所示,
每個連接都是唯一的。
服務器 客戶端
連接1:a.b.c.1:80 <=> a.b.c.4:1037
連接2:a.b.c.1:80 <=> a.b.c.7:1071
二、服務端口
每一種特定的服務都有自己特定的端口,一般說來小1024的端口多為保留端口,或者說是已定義
端口,低端口分配給眾所周知的服務(如WWW、FTP等等),從512到1024的端口通常保留給特殊的UNIX
TCP/IP應用程序,具體情況請參考/etc/services文件或RFC1700。
三、網絡環境
假設網絡環境如下:某一單位,租用DDN專線上網,網絡拓撲如下:
+--------------+
| 內部網段 | eth1+--------+eth0 DDN
| +------------|firewall|<===============>Internet
| 198.168.80.0 | +--------+
+--------------+
eth0: 198.199.37.254
eth1: 198.168.80.254
以上的IP地址都是Internet上真實的IP,故沒有用到IP欺騙。並且,我們假設在內部網中存在以下
服務器:
dns服務器:dns.yourdomain.com 由firewall兼任
www服務器:www.yourdomain.com 198.168.80.11
ftp服務器:ftp.yourdomain.com 198.168.80.12
bbs服務器:bbs.yourdomain.com 198.168.80.13
email服務器:mail.yourdomain.com 198.168.80.14
下面我們將用ipchains一步一步地來建立我們的包過濾防火牆。
四、實現步驟
說明:有關ipchains的詳細命令用法,請參考有關HOWTO文檔。在本例中,我們將在eth0和eth1的
input chain設置過濾規則。
1. 在/etc/rc.d/目錄下用touch命令建立firewall文件,執行chmod u+x firewll以更改文件屬性
,編輯/etc/rc.d/rc.local文件,在末尾加上 /etc/rc.d/firewall 以確保開機時能自動執行該腳本。
2. 刷新所有的ipchains
#!/bin/sh
echo "Starting ipchains rules..."
#Refresh all chains
/sbin/ipchains -F
3.設置WWW包過濾
說明:WWW端口為80,採用tcp或udp協議。規則為:eth1=>允許所有來自Intranet的WWW包;eth0=>
僅允許目的為內部網WWW服務器的包。
#Define HTTP packets
#Allow www request packets from Internet clients to www servers
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d 198.168.80.11/32 www -i eth0 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 0.0.0.0/0 1024: -d 198.168.80.11/32 www -i eth0 -j
ACCEPT
#Allow response from Intranet www servers to request Internet clients
/sbin/ipchains -A input -p tcp -s 198.168.80.11/32 www -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 198.168.80.11/32 www -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
#Allow www request packets from Intranet clients to Internet www servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 www -i eth1 -j ACCEPT
/sbin/ipchains -A input -p udp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 www -i eth1 -j ACCEPT
#Allow www response packets from Internet www servers to Intranet clients
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 www -d 198.168.80.0/24 1024: -i eth0 -j ACCEPT
/sbin/ipchains -A input -p udp -s 0.0.0.0/0 www -d 198.168.80.0/24 1024: -i eth0 -j ACCEPT
4.設置ftp包過濾
說明:ftp端口為21,ftp-data端口為20,均採用tcp協議。規則為:eth1=>允許所有來自Intranet
的ftp、ftp-data包;eth0=>僅允許目的為內部網ftp服務器的包。
#Define FTP packets
#Allow ftp request packets from Internet clients to Intranet ftp server
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d 198.168.80.12/32 ftp -i eth0 -j
ACCEPT
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d 198.168.80.12/32 ftp-data -i eth0 -j
ACCEPT
#Allow ftp response packets from Intranet ftp server to Internet clients
/sbin/ipchains -A input -p tcp -s 198.168.80.12/32 ftp -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
/sbin/ipchains -A input -p tcp -s 198.168.80.12/32 ftp-data -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
#Allow ftp request packets from Intranet clients to Internet ftp servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 ftp -i eth1 -j ACCEPT
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 ftp-data -i eth1 -j
ACCEPT
#Allow ftp response packets from Internet ftp servers to Intranet clients
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 ftp -d 198.168.80.0/24 1024: -i eth0 -j ACCEPT
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 ftp-data -d 198.168.80.0/24 1024: -i eth0 -j
ACCEPT
5.設置telnet包過濾
說明:telnet端口為21,採用tcp協議。規則為:eth1=>允許所有來自Intranet的telnet包;
eth0=>僅允許目的為bbs服務器的包;為了提高網絡安全性,禁止所有對firewall的telnet請求。
#Define telnet packets
#Allow telnet request packets from Internet clients to Intranet bbs server
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d 198.168.80.13/32 telnet -i eth0 -j
ACCEPT
#Allow telnet response packets from bbs server to Internet clients
/sbin/ipchains -A input -p tcp -s 198.168.80.13/32 telnet -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
#Allow telnet request packets from Intranet clients to Internet telnet servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 telnet -i eth1 -j
ACCEPT
#Allow telent response packets from Internet telnet servers to Intranet clients
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 telnet -d 198.168.80.0/24 1024: -i eth0 -j
ACCEPT
6.設置smtp包過濾
說明:smtp端口為21,採用tcp協議。規則為:eth1=>允許所有來自Intranet的smtp包;eth0=>僅允
許目的為email服務器的smtp請求。
#Define smtp packets
#Allow smtp request packets from Internet smtp servers to Intranet email server
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 1024: -d 198.168.80.14/32 smtp -i eth0 -j
ACCEPT
#Allow smtp response packets from Intranet email server to Internet smtp servers
/sbin/ipchains -A input -p tcp -s 198.168.80.14/32 smtp -d 0.0.0.0/0 1024: -i eth1 -j
ACCEPT
#Allow smtp request packets from Intranet clients to Internet smtp servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 smtp -i eth1 -j
ACCEPT
#Allow smtp response packets from Internet smtp servers to Intranet clients
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 smtp -d 198.168.80.0/24 1024: -i eth0 -j
ACCEPT
7.設置POP-3包過濾
說明:POP-3端口為110,採用tcp或udp協議。規則為:eth1=>允許所有來自Intranet的POP-3包;
eth0=>允許所有目的為Intranet(email server 除外)的POP-3包。
#Define pop-3 packets
#Allow pop-3 request packets from Intranet clients to Internet pop-3 servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 pop-3 -i eth1 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 198.168.80.0/24 1024: -d 0.0.0.0/0 pop-3 -i eth1 -j
ACCEPT
#Allow pop-3 response packets from Internet pop-3 servers to Intranet clients (except
email server)
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 pop-3 -d 198.168.80.0/24 1024: -i eth0 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 0.0.0.0/0 pop-3 -d 198.168.80.0/24 1024: -i eth0 -j
ACCEPT
9.設置domain包過濾
說明:domain端口為53,採用tcp或udp協議。規則為:允許所有來自Intranet和Internet的domain請
求。筆者在用網絡監視軟件測試時,發現domain的請求端口都是大1100的,但是找不到相關的解釋。
#Donmain name server
#Allow domain request packets from Intranet clients to Internet domain servers
/sbin/ipchains -A input -p tcp -s 198.168.80.0/24 1100: -d 0.0.0.0/0 domain -i eth1 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 198.168.80.0/24 1100: -d 0.0.0.0/0 domain -i eth1 -j
ACCEPT
#Allow domain response packets from Internet domain servers to Intranet clients
/sbin/ipchains -A input -p tcp -s 0.0.0.0/0 domain -d 198.168.80.0/24 1100: -i eth0 -j
ACCEPT
/sbin/ipchains -A input -p udp -s 0.0.0.0/0 domain -d 198.168.80.0/24 1100: -i eth0 -j
ACCEPT
10.設置icmp包過濾
說明:icmp包通常用網絡測試等,故允許所有的icmp包通過。(另:icmp包通常帶來的危害為ping
of death,但是高版本的linux內核已經包含了相應的措施來避免ping of death)
#Define icmp packets
/sbin/ipchains -A input -p icmp -j ACCEPT
11.設置缺省包過濾規則
說明:除了以上所允許通過的包以外,禁止其他包通過。
#Define all rules on input chain
/sbin/ipchains -A input -j DENY -l
通過以上個步驟,我們建立了一個相對完整的防火牆。該防火牆禁止除了提供基本服務以外的包通
過。但是該防火牆還有不完善的地方,比如,某些搜索引擎會打開一個小1024的但不常用的端口的連
接,這樣的包就無法通過該防火牆,從而使用戶不能使用該搜索引擎。但是提高了網絡的安全性,消除
了安全隱患,所謂魚與熊掌不可兼得,安全性重要還是服務重要就要看不同的情況了。
姓名:白雲煒
聯系地址:雲南省玉溪市玉溪師專計算機系
郵編:653100
Email: bye2000@yxtc.edu.cn
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
ipchains網卡設置菜鳥必讀 (2001-09-27 08:00:00) ipchains的參數和使用 (2001-09-27 07:00:00) ipchains參數介紹 (2001-08-21 10:00:00) 為什我用 ipchains 構建的子網裡的機器不能用 ftp? (2001-06-20 08:10:00) ipchains 的問題 (2001-06-04 18:08:00) 怎樣用ipchains構建防火牆 (2001-04-21 19:38:25) ipchains的工作流程 (2001-04-21 18:02:09)
|
|
|
|
 |
★ 樊強制作 歡迎分享 ★ |