FWTK是一套用來(lái)建立和維護(hù)內(nèi)部網(wǎng)絡(luò)防火墻的工具集。它包含了許多獨(dú)立的組件,大部分組件是代理應(yīng)用程序,如telnet、FTP、rlogin、 sendmail、HTTP、X windows等。與Squid、Socks等同類軟件相比,它的突出優(yōu)點(diǎn)是不但可以從本地和目標(biāo)地的主機(jī)名、IP地址來(lái)指定訪問(wèn)規(guī)則,而且可以根據(jù)訪問(wèn)操作來(lái)允許或拒絕某個(gè)執(zhí)行命令,充分地體現(xiàn)了應(yīng)用層網(wǎng)關(guān)的優(yōu)勢(shì)。本文以telnet為例介紹如何利用FWTK配置Linux上的代理服務(wù)器型防火墻。
系統(tǒng)環(huán)境和設(shè)計(jì)目標(biāo)
系統(tǒng)配置環(huán)境:Red Hat Linux 6.1、FWTK v2.1、雙網(wǎng)卡(一塊用于外部網(wǎng)絡(luò),一塊用于內(nèi)部網(wǎng)絡(luò)),設(shè)192.9.200.* 為外部網(wǎng)絡(luò),10.1.1.*為內(nèi)部子網(wǎng)。
設(shè)計(jì)目標(biāo):
● 內(nèi)部網(wǎng)絡(luò)用戶可以telnet到任意外部主機(jī)上;
● 外部網(wǎng)絡(luò)用戶必須在經(jīng)過(guò)認(rèn)證許可后才可以telnet到內(nèi)部主機(jī)上;
● 只允許10.1.1.5 telnet到防火墻主機(jī)上(用于遠(yuǎn)程管理);
● 所有用戶通過(guò)防火墻代理時(shí),只允許使用普通用戶權(quán)限;
● 限制超時(shí)設(shè)置為300秒鐘;
● 可以自行編輯防火墻上的提示信息。
安裝FWTK
1.新建目錄/home/fwtk,將fwtk.tar.z拷貝到該目錄中,并解包:tar xzvf fwtk.tar.z。
2.準(zhǔn)備編譯:
● 用Makefile.config.linux替換掉Makefile.config;
● 將Makefile.config中AUXLIB=-lcrypt一行前的#號(hào)去掉;
● 在auth/Makefile中的CFLAGS=-I…$(COPT)一行后添加-I /usr/inclue/db1。
3.編譯:make。
4.安裝:make install,所有的可執(zhí)行文件默認(rèn)安裝在/usr/local/etc目錄中。
制作配置文件
1.配置/etc/services。給telnet代理(簡(jiǎn)稱tn-gw)增加端口號(hào):
tn-gw 3333/tcp
2.配置/etc/inetd.conf。將通常的telnet端口移至3333,telnet代理在23號(hào)端口監(jiān)聽(tīng)(用高端口保護(hù)正常telent服務(wù),netacl是FWTK提供的TCP包裝程序,功能和tcpd相似):
telnet stream tcp nowait root /usr/local/etc/tn-gw tn-gw
tn-gw stream tcp nowait root /usr/local/etc/netacl in.telnetd
執(zhí)行命令killall -HUP inetd使改動(dòng)生效。
3.配置/usr/local/etc/netperm-table(其中.txt文件的內(nèi)容由自己編寫,但一定要保證和directory的路徑一致):
● 控制登錄防火墻主機(jī)(正常telnet)部分:
#允許本地登錄
netacl-in.telnetd: permit-hosts 127.0.0.1 -exec /usr/sbin/in.telnetd
#只允許10.1.1.5遠(yuǎn)程登錄到防火墻
netacl-in.telnetd: permit-hosts 10.1.1.5 -exec /usr/sbin/in.telnetd
#顯示不允許登錄時(shí)的拒絕信息
netacl-in.telnetd: permit-hosts * -exec /bin/cat /home/guest/notelnet.txt
netacl-in.telnetd: timeout 300 #超時(shí)設(shè)置
● 控制通過(guò)防火墻主機(jī)(telnet代理)部分(最好在/etc/passwd中將guest的/bin/bash改成/bin/false):
#認(rèn)證服務(wù)器IP和端口號(hào)
tn-gw: authserver 127.0.0.1 7777
tn-gw: directory /home/guest #工作目錄
tn-gw: groupid guest #工作組名
tn-gw: userid guest #工作用戶名
# 歡迎信息
tn-gw: welcome-msg tn-welcome.txt
# 對(duì)拒絕訪問(wèn)者的信息
tn-gw: denial-msg tn-deny.txt
# 對(duì)受限目的拒絕訪問(wèn)者的信息
tn-gw: denydest-msg tn-denydest.txt
tn-gw: help-msg tn-help.txt # 幫助信息
tn-gw: timeout 300 # 設(shè)定超時(shí)的時(shí)間
tn-gw: prompt tn-gw-> # 提示符
# 允許10.1.1.*機(jī)器登錄
tn-gw: permit-hosts 10.1.1.* -dest * -passok
# 允許192.9.200.*機(jī)器登錄,但要求進(jìn)行身份認(rèn)證
tn-gw: permit-hosts 192.9.200.* -dest 10.1.1.* -auth
4.配置認(rèn)證服務(wù)器
● 配置/etc/services,給authsrv增加端口號(hào):
authsrv 7777/tcp
● 配置/etc/inetd.conf,以inted進(jìn)程啟動(dòng)authsrv:
authsrv stream tcp nowait root /usr/local/etc/authsrv authsrv
執(zhí)行killall -HUP inetd使改動(dòng)生效。
5.配置netperm-table:
#允許防火墻主機(jī)使用認(rèn)證服務(wù)器
authsrv: hosts 127.0.0.1
#數(shù)據(jù)庫(kù)所在路徑
authsrv: database /usr/local/etc/fw-authdb
authsrv: directory /home/guest #工作目錄
authsrv: groupid guest #工作組名
authsrv: userid guest #工作用戶名
authsrv: badsleep 1200 #禁止嘗試注冊(cè)的時(shí)間
authsrv: timeout 300 #超時(shí)設(shè)置
authsrv: nobogus true #允許注冊(cè)失敗響應(yīng)
依據(jù)以上步驟,同樣可以高效地配置FTP代理(ftp-gw)、郵件代理(smap)、HTTP代理(http-gw)、pop3代理(plug-gw)。


