歡迎您光臨本站 註冊首頁

防火牆和代理伺服器HOWTO

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  作者: Mark Grennan, markg@netplus.net
譯者: 趙平望 tchao@worldnet.att.net

v0.4, 1996年11月8日
_________________________________________________________________

v0.4, 1996年11月8日,這篇文章主要在於說明防火牆系統的各種基本概念,並示
□在Linux為基礎的個人電腦上安裝作為過濾之用的防火牆和代理伺服器的詳細步
驟。這份文件的HTML版本載
於http://okcforum.org/~markg/Firewall-HOWTO.html
_________________________________________________________________

1. 導言

* 1.1 讀者回應
* 1.2 嚴正聲明
* 1.3 版權宣告 (譯註∶版權宣告不譯)
* 1.4 寫這篇文章的動機
* 1.5 有待完成的工作
* 1.6 延伸讀物

2. 什麼是防火牆

* 2.1 防火牆的缺陷
* 2.2 防火牆的種類

3. 設置防火牆

* 3.1 硬體需求

4. 設置防火牆的軟體

* 4.1 現有的套裝軟體
* 4.2 TIS Firewall Toolkit 和SOCKS間的差異

5. 設定Linux系統

* 5.1 編輯內核
* 5.2 設定兩張網路卡
* 5.3 設定Network Addresses
* 5.4 測試網路
* 5.5 加固防火牆

6. IP filtering 的設置(IPFWADM)

7. 安裝TIS代理伺服器

* 7.1 取得軟體
* 7.2 編輯TIS FWTK
* 7.3 安裝TIS FWTK
* 7.4 設置TIS FWTK

8. SOCKS代理伺服器

* 8.1 設定代理伺服器
* 8.2 設置代理伺服器
* 8.3 代理伺服器
* 8.4 代理伺服器的缺點

9. 高級設置

* 9.1 注重安全的大型網路
_________________________________________________________________

1. 導言

最初的這篇「防火牆 - HOWTO」是David Rudderdrig@execpc.com的作品。他讓我
在他的原稿上增訂內容,對此我深表感謝。 最近這一陣子, 防火牆(Firewall)
成了網際網路的安全問題的熱門話題。但像許多其他熱門話題一樣,這也同時造
成了許多人對它的誤解。這篇HOWTO 將會探討什麽是防火牆?如何安裝?何謂代
理伺服器(Proxy Server)?如何設定代理伺服器?以及這些技術在安全領域以
外的應用。

1.1 讀者回應

如果發現這篇文章中有任何錯誤, 請務必通知我。人非聖賢, 孰能無過! 任何錯
誤我都樂於更正。來信我都會設法回覆, 但我相當忙, 如果沒有收到我的回信,
還請包涵。回信地址markg@netplus.net

如果發現任何誤譯之處,請立即通知本文譯者:趙平望
(tchao@worldnet.att.net)。

1.2 嚴正聲明

我不對任何依照本文所做行為造成的損害負任何責任(I AM NOT RESPONSIBLE
FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THIS DOCUMENT)
。這篇文章只介紹防火牆和代理伺服器的作用。要知道,我不是電腦安全問題專
家,也從來沒有裝成這方面的專家。我只是個喜歡讀書,而且愛電腦勝過愛人類
的傢伙。我希望這篇文章能幫助你熟悉這個主題, 但不保證內容絕對無誤。

1.3 版權宣告 (譯註∶版權宣告不譯)

Unless otherwise stated, Linux HOWTO documents are copyrighted by
their respective authors. Linux HOWTO documents may be reproduced and
distributed in whole or in part, in any medium physical or electronic,
as long as this copyright notice is retained on all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO coordinator.

In short, we wish to promote dissemination of this information through
as many channels as possible. However, we do wish to retain copyright
on the HOWTO documents, and would like to be notified of any plans to
redistribute the HOWTOs.

If you have any questions, please contact Mark Grennan at
.

1.4 寫這篇文章的動機

儘管去年在comp.os.linux上有許多關於防火牆問題的討論,但我發現很難找到設
定防火牆所需的資料。這篇HOWTO的原先版本提供了一些幫助,但內容仍嫌不足。
我根據David Rudder編寫的Firewall HOWTO作了增訂,希望這篇文章提供了足夠
的資料,使你能在幾小時內就能設定一個可以運作的防火牆,而不再需要花幾星
期之久。 我也認為我應該略盡綿力,回報愛好Linux的朋友。

1.5 有待完成的工作

* 指導如何設定客戶機
* 尋找能與Linux搭配的UDP代理伺服器

1.6 延伸讀物

* NET-2 HOWTO
* Ethernet HOWTO
* Multiple Ethernet Mini HOWTO
* Linux的聯網
* PPP HOWTO
* OReilly and Associates出版的TCP/IP Network Administrators Guide
* TIS Firewall Toolkit的文件

在Trusted Information System (TIS) 網址上收集了許多有關防火牆的文件和相
關材料。http://www.tis.com/

此外,我也正在從事一項稱為Linux安全(Secure Linux)的項目。在Secure
Linux網址上,我收集了所有使Linux安全可靠的資料、文件和程式。如果你需要
這方面的資料,請來信索取。

2. 什麼是防火牆

防火牆是汽車中一個部件的名稱。在汽車中,利用防火牆把乘客和引擎隔開,以
便汽車引擎一旦著火,防火牆不但能保護乘客安全,而同時還能讓司機繼續控制
引擎。 在電腦中,防火牆是一種裝置,可使個別網路不受公共部分(整個網際網
路)的影響。 此後,文中將防火牆電腦稱為「防火牆」,它能同時連接受到保護
的網路和網際網路兩端。但受到保護的網路無法接到網際網路,網際網路也無法
接到受到保護的網路。 如果要從受到保護的網路內部接到網際網路,就
得telnet到防火牆,然後從防火牆聯上網際網路。 最簡單的防火牆是dual
homed系統(具有兩個網路聯結的系統)。如果你能相信所有你的用戶,那你只要
裝設一台Linux(設定時將 IP forwarding/gatewaying 設為 OFF),並讓每人設
一帳戶。他們隨後能登錄這一系統,使用telnet、FTP,閱讀電子函件和使用所有
你提供的任何其他服務。根據這項設置,這一網路中唯一能與外界聯繫的電腦便
是這個防火牆。在這個網路中的其他電腦甚至不需要一條公用的路徑。 需要再次
說明∶要使上述防火牆發揮作用,就必須相信所有用戶!不過,我可不敢這麼建
議。

2.1 防火牆的缺陷

用於過濾之用的防火牆的問題是這種防火牆不讓網際網路進入你的網路。只有通
過過濾防火牆才能取用功能。在有代理伺服器的情況下,用戶可登錄到防火牆,
然後進入私有網路內的任何系統。 此外,目前幾乎每天都有新型客戶機和伺服器
上市。因此,得要有新的方法進入網路才能調用這些功能。

2.2 防火牆的種類

防火牆有兩種。

1. IP過濾防火牆 - 除一些網路功能外阻擋一切聯網功能。
2. 代理伺服器 - 替你進行網路聯結。

IP過濾防火牆

IP過濾防火牆在數據包一層工作。它依據起點、終點、埠號和每一數據包中所含
的數據包種類信息控制數據包的流動。 這種防火牆非常安全,但是缺少有用的登
錄記錄。它阻擋別人進入個別網路,但也不告訴你何人進入你的公共系統,或何
人從內部進入網際網路。 過濾防火牆是絕對性的過濾系統。即使你要讓外界的一
些人進入你的私有伺服器,你也無法讓每一個人進入伺服器。 Linux從1.3.x版開
始就在內核中包含了數據包過濾軟體。

代理伺服器

代理伺服器允許通過防火牆間接進入網際網路。最好的例子是先telnet系統,然
後從該處再telnet另一個系統。在有代理伺服器的系統中,這項工作就完全自動
。利用客戶端軟體連接代理伺服器後,代理伺服器啟動它的客戶端軟體(代理)
,然後傳回數據。 由於代理伺服器重複所有通訊,因此能夠記錄所有進行的工作
。 只要配置正確,代理伺服器就絕對安全,這最它最可取之處。它阻擋任何人進
入,因為沒有直接的IP通路。

3. 設置防火牆

3.1 硬體需求

在□例中,所用的電腦配置是一塊486-DX66晶元,16M內存和500M Linux分割。系
統內還裝了兩張網路卡,一張連到私有網路,另一張接到一個稱為「非軍事區」
的網路(譯註:指公用網路),而在這個非軍事區的網路上,有一個接到網際網
路的路由器(router)。 這種配置極為常見,甚至還可用一張網卡和一台數據機
通過PPP接到網際網路,但關鍵之處是防火牆上必須有兩個IP號碼。 不少人家中
都有小網路,把兩、三台電腦接在一起。不妨試試把所有數據機都接在跑Linux的
電腦上(老舊的386機),然後利用負載平衡的方式把數據機都接到網際網路。利
用這種裝置,如果要傳輸數據,兩部數據機同時工作,可加倍傳輸的速度。

4. 設置防火牆的軟體

4.1 現有的套裝軟體

如果只要設置一個過濾防火牆,那隻要Linux和基本網路軟體就夠了。有一套軟體
可能不在你使用的Linux版本中,稱為 IP Firewall Administration工具。
(IPFWADM) 可從 http://www.xos.nl/linux/ipfwadm/取得。 如果要設置代理伺
服器,就需要一個這種套裝軟體。
1. SOCKS
2. TIS Firewall Toolkit (FWTK)

4.2 TIS Firewall Toolkit 和SOCKS間的差異

Trusted Information System (http://www.tis.com)提供了一系列軟體,用以簡
化安裝防火牆的工作。 這些軟體基本上同SOCKS的軟體相同,但設計策略不同
。SOCKS利用一套軟體執行所有與Internet有關的工作,而TIS對每一個希望使用
防火牆的utility都提供一個軟體。 為了說明兩者之間的不同,就以world wide
web和Telnet為例吧!在SOCKS中,設定一個設置(configuration)檔和一
個daemon後,telnet和WWW都能開始工作,同時其他沒有關閉的功能也都能夠運作
。 但在TIS中,為WWW和telnet都得設定各自的configuration檔和daemon。經此
設定後,其他internet的功能仍無法運用,除非對這些功能也作出相關的設定。
如果某一功能(例如talk)沒有daemon,雖然有"plug-in" daemon可用,但它不
像其他工具那樣靈活,而且也不易設定。 這似乎是小事,但且大有差別。設
置SOCKS時比較可以隨意。如果SOCKS伺服器的設置不太完美,從網路內部可以調
用原先並不打算提供的internet功能。如使用TIS,從網路內部只能調用系統管理
者規定的功能。 SOCKS易於設定、易於編輯,並且靈活性較高。如要管制受到保
護的網路內的使用者,則TIS的安全性較高。不過兩者都提供了絕對保護,外界無
法進入。 我會說明兩者的安裝和設定方法。

5. 設定Linux系統

5.1 編輯內核

首先利用Linux版本重新安裝Linux系統(我用RedHat 3.0.3,此後實例均以這一
版本為準)。系統中安裝的軟體越少,毛病和漏洞也越少,因為這些毛病和漏洞
對系統的安全都會產生問題,所以只要安裝夠用的最少量軟體即可。 選用一個穩
定的內核。我的系統用了Linux 2.0.14的內核。 因此,這份文件以這種內核設置
為基礎。 根據適當的選項(options)重新編輯內核。 如果以前沒有讀
過Kernel HOWTO、 Ethernet HOWTO和NET-2 HOWTO,此時不妨利用這個機會讀一
讀這些HOWTO。 以下是在『make config』內與網路有關的設定。
1. 在General setup中
1. 設Networking Support 為ON
2. 在Networking Options中
1. 設Network firewalls為 ON
2. 設TCP/IP Networking為 ON
3. 設IP forwarding/gatewaying為 OFF (除非要用IP過濾)
4. 設IP Firewalling為ON
5. 設IP firewall packet loggin為 ON(不是必需,設了更好)
6. 設IP: masquerading 為OFF(不屬本文範圍)
7. 設IP: accounting 為ON
8. 設IP: tunneling 為OFF
9. 設IP: aliasing 為OFF
10. 設IP: PC/TCP compatibility mode 為OFF
11. 設 IP: Reverse ARP 為OFF
12. 設Drop source routed frames 為ON
3. 在Network device support項下
1. 設Network device support 為ON
2. 設Dummy net driver support 為ON
3. 設Ethernet (10 or 100Mbit) 為ON
4. 選擇網路卡

現在重新編輯,重新安裝內核,重新啟動。網路卡應在啟動的提示中顯示。如果
沒有抓到網路卡,查閱其他HOWTO,直到設對為止。

5.2 設定兩張網路卡

電腦中如有兩張網路卡,極可能需要在/etc/lilo.conf檔中增加一行,說明兩張
網路卡的IRQ和地址。在我的機器中,lilo.conf檔增加的一行如下∶
append="ether=12,0x300,eth0 ether=15,0x340,eth1"

5.3 設定Network Addresses

這部分比較有趣,而且得要做些決定。由於不打算讓網際網路進入自設網路的任
何部分,因此網路中不需要用實際的網址。在網際網路中留了一些地址可讓網路
隨意使用,因為自設網路總得需要地址,而且這些地址也無法進入網際網路,攪
渾全局。因此不妨選用這些地址。 在這些地址中,192.168.2.xxx是被留用的地
址,因此就用這些地址來作說明。

由於代理伺服器同時身處兩個網路,因此它能居中傳送兩邊的數據。

199.1.2.10 __________ 192.168.2.1
_ __ _ \ | | / _______________
| \/ \/ | \| |/ | |
網際網路 \-------------| 防火牆 |-------------------| 工作站 |
\_/\_/\_/\_/ |_________| |______________|

如要設置過濾防火牆,依舊可用這些網址,不過得使用IP masquerading。經過這
種設定,防火牆就會轉送數據包,並加附實際的IP地址送往網際網路。 在網路卡
的網際網路端(外端)得設定真正的IP地址,在乙太網卡的內端設
為192.168.2.1。這是這台電腦代理/網關的IP地址。受保護的網路內的所有其他
電腦均可選用192.168.2.xxx中的任何一個作為地址(從192.168.2.2
到192.168.2.254)。 在RedHat Linux 中,得在
/etc/sysconfig/network-scripts目錄下增加一個ifcfg-eth1檔,以便在啟動時
,通過這個檔設定網路和routing表。 ifcfg-eth1的參數可設定如下∶
#!/bin/sh
#>>>Device type: ethernet
#>>>Variable declarations:
DEVICE=eth1
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
GATEWAY=199.1.2.10
ONBOOT=yes
#>>>End variable declarations

可試用這些參數使數據機與ISP自動連接。不妨看看 ipup-ppp檔。 如用數據機與
網際網路連接,ISP會在連接時指定外端的IP地址。

5.4 測試網路

從測試ifconfig和route開始。如機器上有兩張網路卡,各項設置應有如下情況∶
#ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:1620 errors:0 dropped:0 overruns:0
TX packets:1620 errors:0 dropped:0 overruns:0

eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55
inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:12 Base address:0x310

eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:15 Base address:0x350

route 表應看起來如下∶
#route -n
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0
192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1
127.0.0.0 * 255.0.0.0 U 3584 0 2 lo
default 199.1.2.10 * UG 1500 0 72 eth0

注∶ 199.1.2.0在防火牆的網際網路端,192.168.2.0在自設網路一端。 首先試
試從防火牆ping 網際網路。不妨把nic.ddn.mil作試驗點。這個試驗點還不錯,
只是不如我預期的可靠。如果沒聯上,試試ping幾個不是你網路上的地址。如果
仍聯不上,則PPP的設定一定不對。再讀一次Net-2 HOWTO,然後再試。 然後,試
驗從防火牆ping保護網路內的電腦。所有網路內的電腦應能ping網路內的任何其
他一台電腦。如果不行,再讀讀Net-2 HOWTO,再試一次。 接著試驗從保護網路
內ping防火牆以外的地址。(注意∶不屬於192.168.2.xxx的任何地址)如果可以
,表示IP Forwarding的功能沒有取消。想一想這是否符合原先的構想。如果保
留IP Forwarding的功能,就別放過下面設定IP filtering的部分。 現在試試從
防火牆後ping 網際網路。利用以前試通的同一地址(例如,nic.ddn.mil)。如
果 IP Forwarding功能已經取消,就不應接通。不過如果這項功能沒有取消,就
應該接通。 假設保留了IP Forwarding功能,而在自設的網路中使用實際的IP地
址(不是192.168.2.*),在這種設定下,如果無法ping 網際網路,但能夠ping
網際網路邊的防火牆,就得檢查上一層的router有否把數據包傳送到自設網路的
地址上。(可能得由ISP作這項檢查) 如果保護網路的地址定為192.168.2.*,則
任何數據包都不能傳送。如果沒有作這些設定,而使用了IP masquerading,這項
試驗應該成功。 至此,各項設定基本完成。

5.5 加固防火牆

如果通過防火牆上沒有使用的功能能夠隨意進出防火牆,則這種防火牆也就沒有
什麼用處。 "駭客" 能到防火牆內作出必要的修改,供其所用。 首先關閉所有不
用的功能。先檢查 /etc/inetd.conf檔。這個檔控制所謂的"超級伺服器"。它控
制了許多伺服器的daemon,然後在需要時啟動這些daemon。 完全取消netstat、
systat、 tftp、 bootp和finger功能。取消功能的方法是把#作為功能行的行首
字母。設定完畢後,鍵入"kill -HUP ",執行SIG-HUP ,其中
是inetd的程序編號。inetd會再次讀取配置檔(inetd.conf),並從新啟動系統
。 利用telnet 測試防火牆的埠號(port)15,這是netstat的埠號。如netstat
回應網路情況,系統並沒有按要求正確地從新啟動。

6. IP filtering 的設置(IPFWADM)

首先設定內核的IP Forwarding功能,系統應開始轉送每一信息。路徑表
(routing table)應已設定,因此應該可以通往任何地點,從網內可以聯到網外
,從網外也可進到網內。 但是防火牆的作用是不讓任何人可以隨便進出網路。
在示□系統中設定了兩套指令(script),對防火牆的forwarding和accounting
作了規定。系統在運行/etc/rc.d時取用這兩套指令,因此在系統啟動時就對系統
作了設置。 Linux的內核自設轉送一切信息的IP Forwarding系統。因此,防火牆
的指令應首先禁止一切進入系統的權利,清除上次運行後留下的任何ipfw規則。
下面的指令應能達到這項目的。

#
# setup IP packet Accounting and Forwarding
#
# Forwarding
#
# By default DENY all services
ipfwadm -F -p deny
# Flush all commands
ipfwadm -F -f
ipfwadm -I -f
ipfwadm -O -f

好了,現在有了絕對保險的防火牆。一切都被屏擋在外面,無法穿越防火牆一步
。當然,有些功能還是需要的,下面的一些例子可作參考。
# Forward email to your server ∶轉送電子郵件到伺服器
ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25

# Forward email connections to outside email servers ∶將電子郵件連到網路外的
電子郵件伺服器
ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535

# Forward Web connections to your Web Server∶將Web連到Web伺服器
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80

# Forward Web connections to outside Web Server∶將Web連到外界Web伺服器
/sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535

# Forward DNS traffic∶轉送DNS信息
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24

如果想知道通過防火牆的信息來往情況,下列指令會統計所有數據包。

# Flush the current accounting rules
ipfwadm -A -f
# Accounting
/sbin/ipfwadm -A -f
/sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
/sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24

如果只把電腦設為過濾防火牆,到這裡就大功告成了!

7. 安裝TIS代理伺服器

7.1 取得軟體

TIS FWTK軟體可從下列網址得到∶ftp://ftp.tis.com/. 千萬記住∶從TIS下載軟
件後,首先閱讀README。TIS fwtk存放在伺服器的一個隱藏目錄內,需要發電子
郵件給fwtk-request@tis.com 並在信文內填入SEND才能得知隱藏的目錄的名字
。Subject欄內不必填入任何內容。在回覆的電子郵件內會告知存放軟體的目錄的
名字,有效時間為12小時,得趕快下載。 在編寫本文時,FWTK的最新版本為2.0
(beta)。除了幾個小地方之外,這個版本在編輯時沒有問題,運行時也正常,
此處就以這一版本為例。如有最後定本時,將在以後的HOWTO中增訂。 安裝FWTK
時,首先在 /usr/src下建立fwtk-2.0目錄。將FWTK(fwtk-2.0.tar.gz)放在這
個目錄內解壓(tar zxf fwtk-2.0.tar.gz)。 FWTK並無代理SSL的網路文件
,Jean-Christophe Touvet寫了一些附加資料,可
從ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl-gw.tar.Z取得。 Eric Wedel寫
了修訂本,其中包括使用網景(Netscape)的新聞伺服器。這套軟體可從下列網
址取得∶ftp://mdi.meridian-data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z
以下以Eric Wedel的版本為例。 要安裝,只要在/usr/src/fwtk-2.0目錄內建立
一個 ssl-gw目錄,把文檔放在其中即可。 在安裝這個網關時,得要作些改動才
能進行編輯。 首先改變ssl-gw.c檔,其中遺漏了必要的include檔。
#if defined(__linux)
#include
#endif

其次,也沒有Makefile檔。不妨從其他網關目錄拷貝一個,然後將網關的名字改
為ssl-gw。

7.2 編輯TIS FWTK

版本2.0的FWTK比以往任何一個版本都易於編輯。不過在編輯以前還需要對BETA版
本作一些更動。希望這些更動會加附到最後定本中。 修改方法如下∶首先進
入/usr/src/fwtk/fwtk目錄,拷貝Makefile.config.linux檔,以此檔替
代Makefile.config檔。 不要運行FIXMAKE。雖然在說明中建議執行這個程序。但
運行後會破壞每一個目錄中的makefile。 修改fixmake的方法是在每一
個Makefile的sed指令的include行中添加『.』和"。按下例更改,便可運行無礙

sed s/^include[ ]*\([^ ].*\)/include \1/ $name .proto > $name

然後需要編輯Makefile.config檔,但首先得作兩項修改。 Makefile.config檔中
的source目錄應改為進行編輯的/usr/src,因此FWTKSRCDIR應作相應的改變。
FWTKSRCDIR=/usr/src/fwtk/fwtk

有些Linux系統使用gdbm資料庫。Makefile.config使用dbm。例如,RedHat
3.0.3就使用dbm,因此需要作出相應更動。
DBMLIB=-lgdbm

最後需要改x-gw。BETA版內socket.c中的下列數行必需刪除。
#ifdef SCM_RIGHTS /* 4.3BSD Reno and later */
+ sizeof(un_name->sun_len) + 1
#endif

如在FWTK源目錄中添加ssl-gw,則在Makefile的目錄單中也要加上ssl-gw。
DIRS= smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw x-gw ssl-gw

完成上述修改後,運行make。

7.3 安裝TIS FWTK

運行make install。 默認的安裝目錄是/usr/local/etc。可以改到更加安全可靠
的目錄進行安裝,但也可以不改,也可將其特權改為chmod 700。 現在開始設定
防火牆。

7.4 設置TIS FWTK

好!下面就比較有趣了!設定的系統要能調用這些新功能,並建立管製表管理這
些功能。 以下的說明並不是為了要重寫TIS FWTK的使用手冊,其目的只是為了顯
示可行的設定、可能遇到的問題和解決的辦法。 有三個文檔組成這些controls。

* /etc/services
+ 告訴系統所定功能在何埠號

* /etc/inetd.conf
+ 當服務埠有動作時告訴inetd啟動那個程式

* /usr/local/etc/netperm-table
+ 告訴FWTK同意和拒絕來往的用戶

要FWTK發揮作用,應徹底編輯這些檔案。編輯這些功能檔而不正確設定
inetd.conf或netperm-table,可能使系統完全無法作用。

netperm-table檔

這個檔控制何人可以使用TIS FWTK的功能。首先應該想到防火牆兩邊的需求。網
路外面的用戶在進入網路之前應首先表明身份,但網路內部的用戶則可直接通過
。 在表明身份時,防火牆使用一個稱為authsrv的程式,其中存有用戶的ID和密
碼。netperm-table中的authentication部分控制這一資料庫存放何處和誰可取用
。 要不讓人取用這一功能並不容易,在premit-hosts這一行中使用「*」,以致
每人都能取用這一功能。這一行的正確設定應該是「authsrv: premit-hosts
localhost」,但似乎不起作用。
#
# Proxy configuration table: 代理伺服器設置表
#
# Authentication server and client rules
authsrv: database /usr/local/etc/fw-authdb
authsrv: permit-hosts *
authsrv: badsleep 1200
authsrv: nobogus true
# Client Applications using the Authentication server
*: authserver 127.0.0.1 114

要啟動資料庫,以root在/var/local/etc內運行./authsrv,設立管理者的使用記
錄。實際操作如下∶ 閱讀FWTK文檔了解如何添加用戶和用戶組。
#
# authsrv
authsrv# list
authsrv# adduser admin "Auth DB admin"
ok - user added initially disabled
authsrv# ena admin
enabled
authsrv# proto admin pass
changed
authsrv# pass admin "plugh"
Password changed.
authsrv# superwiz admin
set wizard
authsrv# list
Report for users in database
user group longname ok? proto last
------ ------ ------------------ ----- ------ -----
admin Auth DB admin ena passw never
authsrv# display admin
Report for user admin (Auth DB admin)
Authentication protocol: password
Flags: WIZARD
authsrv# ^D
EOT
#

Telnet的網關(tn-gw)控制直接了當,應首先設定。 例如,允許在保護網路內
的用戶不表明身份直接通過(permit-hosts 196.1.2.* -passok)。但其他用戶必
需提供用戶ID和密碼才可使用代理伺服器(permit-hosts * -auth)。 此外,有一
個系統(196.1.2.202)也可直接使用防火牆。這隻要設定inetacl-in.telnetd的內
容即可。 Telnet的timeout時間應該短暫。
# telnet gateway rules:
tn-gw: denial-msg /usr/local/etc/tn-deny.txt
tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt
tn-gw: help-msg /usr/local/etc/tn-help.txt
tn-gw: timeout 90
tn-gw: permit-hosts 196.1.2.* -passok -xok
tn-gw: permit-hosts * -auth
# Only the Administrator can telnet directly to the Firewall via Port 24
netacl-in.telnetd: permit-hosts 196.1.2.202 -exec /usr/sbin/in.telnetd

r-command如同telnet的同一方式設定。
# rlogin gateway rules:
rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt
rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt
rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt
rlogin-gw: timeout 90
rlogin-gw: permit-hosts 196.1.2.* -passok -xok
rlogin-gw: permit-hosts * -auth -xok
# Only the Administrator can telnet directly to the Firewall via Port
netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind -a

任何人均不得直接進入防火牆,其中包括FTP,因此,不要把FTP伺服器放在防火
牆上。 再者,permit-hosts行允許保護網路內的任何人自由進入網際網路,其他
人則必需表明身份。下文附上送到和收到的每份文檔的記錄(-log { retr stor
})。 FTP的timeout開關控制在多少時間後停止試接,以及在多少時間沒有動作
後,放棄試接。
# ftp gateway rules:
ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt
ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt
ftp-gw: help-msg /usr/local/etc/ftp-help.txt
ftp-gw: timeout 300
ftp-gw: permit-hosts 196.1.2.* -log { retr stor }
ftp-gw: permit-hosts * -authall -log { retr stor }

通過WWW、gopher和瀏覽器進行的ftp由http-gw控制。最上面的兩行建立一個目錄
,用於儲存經由防火牆的ftp和WWW文件。在本例中,這些文件屬root所有,因此
放在只有root能夠進入的目錄內。 WWW的連接應該短暫。它控制使用者在連接不
通時的等待時間。
# www and gopher gateway rules:
http-gw: userid root
http-gw: directory /jail
http-gw: timeout 90
http-gw: default-httpd www.afs.net
http-gw: hosts 196.1.2.* -log { read write ftp }
http-gw: deny-hosts *

ssl-gw實際上是一個任何人都可通過的網關。應噹噹心設定。在本例中,任何保
護網路中的用戶,除127.0.0.* 和192.1.1.* 外,均可連接網路外的任何伺服器
,並只能使用443至563 埠號。443至563埠號一般稱為SSL埠號。
# ssl gateway rules:
ssl-gw: timeout 300
ssl-gw: hosts 196.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 }
ssl-gw: deny-hosts *

下面的例子說明如何利用plug-gw連接到新聞伺服器。在本例中,保護網路內的用
戶只允許連接到一個系統,即連接到它的新聞埠。 第二行使新聞伺服器將其資料
送到保護網路。 對新聞伺服器的timeout時間設定應該比較長,因為多數用戶大
都聯機閱讀新聞。

# NetNews Pluged gateway
plug-gw: timeout 3600
plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp
plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp

Finger網關的設定至為簡單。保護網路內的用戶只要首先登錄,就可使用防火牆
上的finger程式。任何其他人就只收到一段message。
# Enable finger service --------設定finger功能
netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd
netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt

在這份HOWTO中,沒有設定Mail和X-windows功能。如任何人有這方面的實例,請
發email給我。

inetd.conf的設置檔

下面附上/etc/inetd.conf的全部文檔。所有不需要的功能都用#符號註銷。在這
份全部文檔中顯示取消了何種功能,以及顯示如何設定新的防火牆功能。

#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
# FTP firewall gateway --------FTP防火牆網關
ftp-gw stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw
# Telnet firewall gateway------Telnet防火牆網關
telnet stream tcp nowait root /usr/local/etc/tn-gw /usr/local/
etc/tn-gw
# local telnet services------用戶的telnet功能
telnet-a stream tcp nowait root /usr/local/etc/netacl in.telnetd
# Gopher firewall gateway------Gopher防火牆網關
gopher stream tcp nowait.400 root /usr/local/etc/http-gw /usr/loca
l/etc/http-gw
# WWW firewall gateway------WWW防火牆網關
http stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/ht
tp-gw
# SSL firewall gateway------SSL防火牆網關
ssl-gw stream tcp nowait root /usr/local/etc/ssl-gw ssl-gw
# NetNews firewall proxy (using plug-gw)------NetNews防火牆代理伺服器(使用pl
ug-gw)
nntp stream tcp nowait root /usr/local/etc/plug-gw plug-gw nntp
#nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd
# SMTP (email) firewall gateway------SMTP(email)防火牆網關
#smtp stream tcp nowait root /usr/local/etc/smap smap
#
# Shell, login, exec and talk are BSD protocols------ Shell, login, exec and
talk均屬BSD協議
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al------Pop和imap mail功能
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd


[火星人 ] 防火牆和代理伺服器HOWTO已經有613次圍觀

http://coctec.com/docs/security/show-post-72994.html