FWTK是一套用来建立和维护内部网络防火墙的工具集,用于构建应用网关式防火墙。它包含了许多独立的组件,大部分的组件是代理应用程序,如telnet、FTP、rlogin、sendmail、HTTP、X windows等。和squid、socks等软件相比,它的突出优点是将很好的访问控制融入其设计中,不但可以从本地和目标地的主机名、IP地址来指定访问规则,而且可以根据访问操作来允许或拒绝某个执行命令,更充分地体现了应用层网关的优势。
本人将参照以下的防火墙设计方案图,以telnet为例来讲解如何高效配置Linux上的代理服务器型防火墙。本人的配置环境是:Red Hat Linux 6.1、FWTK v2.1、双网卡(一块用于外部网络,一块用于内部网络),设192.9.200.* 为外部网络,10.1.1.*为内部子网。设计目标是:
1)内部网络用户可以telnet到任意外部主机上;
2)外部网络用户必须在经过认证许可后才可以telnet到内部主机上;
3)只允许10.1.1.5 telnet到防火墙主机上(用于远程管理);
4)所有用户通过防火墙代理时,只允许使用普通用户权限;
5)限制超时设置为300秒;
6)可以自行编辑防火墙上的提示信息。
防火墙设计方案图
具体的配置步骤分为安装FWTK、制作配置文件、调试运行三步:
一、安装FWTK
1.下载软件:从http://202.115.128.174/pub2/linux/system/fwtk可以找到fwtk.tar.z,即FWTK v.21(这个网址比http://www.tis.com方便的多)。
2. 安装软件:
1)新建目录/home/fwtk,将fwtk.tar.z拷贝到该目录中,解包:tar xzvf fwtk.tar.z;
2)准备编译:
i)用Makefile.config.linux替换掉Makefile.config;
ii)将Makefile.config中AUXLIB=-lcrypt一行前的#号去掉;
iii)在auth/Makefile中CFLAGS=-I…$(COPT)一行后添加-I /usr/inclue/db1。
3)编译:make
4)安装:make install,所有的可执行文件默认安装在/usr/local/etc。
二、制作配置文件
1、配置/etc/services,给telnet代理(简称tn-gw)增加端口号:
tn-gw3333/tcp
2、配置/etc/inetd.conf,将正常telnet端口移至3333,telnet代理在23号端口监听(用高端口保护正常telent服务,netacl是FWTK提供的TCP包装程序,功能和 tcpd差不多):
telnetstreamtcpnowaitroot/usr/local/etc/tn-gw tn-gw
tn-gw streamtcpnowaitroot/usr/local/etc/netaclin.telnetd
配置完以后使用命令killall –HUP inetd使改动生效。
3、配置/usr/local/etc/netperm-table(其中的.txt文件内容由自己编写,但一定要保证和directory的路径一致 ):
1)控制登录防火墙主机(正常telnet)部分:
netacl-in.telnetd: permit-hosts 127.0.0.1 -exec /usr/sbin/in.telnetd #允许本地登录
netacl-in.telnetd: permit-hosts 10.1.1.5 -exec /usr/sbin/in.telnetd #只允许10.1.1.5远程登录到防火墙
netacl-in.telnetd: permit-hosts * -exec /bin/cat /home/guest/notelnet.txt #显示不允许登录时的拒绝信息
netacl-in.telnetd: timeout 300 #超时设置
2)控制通过防火墙主机(telnet代理)部分(最好在/etc/passwd中将guest的/bin/bash改成/bin/false):
tn-gw: directory /home/guest#工作目录
tn-gw: groupid guest#工作组名
tn-gw: userid guest#工作用户名
tn-gw: welcome-msg /tn-welcome.txt# 欢迎信息
tn-gw: denial-msg /tn-deny.txt# 对拒绝访问者的信息
tn-gw: denydest-msg /tn-denydest.txt# 对受限目的拒绝访问者的信息
tn-gw: help-msg /tn-help.txt# 帮助信息
tn-gw: timeout 300# 设定超时的时间
tn-gw: prompt tn-gw-># 提示符
tn-gw: permit-hosts 10.1.1.* -dest * -passok# 允许10.1.1.*的这些机器登录
tn-gw: permit-hosts 192.9.200.* -auth# 只允许192.9.200.*的这些机器登录,并要求进行身份认证
4、配置认证服务器
1)配置/etc/services,给authsrv增加端口号;
authsrv7777/tcp
2)配置/etc/inetd.conf,以inted进程启动authsrv;
authsrvstreamtcpnowaitroot/usr/local/etc/authsrvauthsrv
执行killall –HUP inetd使改动生效。
3)配置netperm-table:
authsrv: hosts 127.0.0.1 #允许防火墙主机使用认证服务器
authsrv: database /usr/local/etc/fw-authdb #数据库所在路径
authsrv: directory /home/guest #工作目录
authsrv: groupid guest #工作组名
authsrv: userid guest #工作用户名
authsrv: badsleep 1200 # 禁止尝试注册的时间
authsrv: timeout 300 #超时设置
authsrv: nobogus true #允许注册失败响应
*: authserver 127.0.0.1 7777 #认证服务所在主机IP和端口号
三、调试运行
1、运行authsrv
在防火墙主机上以root身份执行/usr/local/etc/authsrv;
# ./authsrv <-----------------运行authsrv
authsrv# adduser f1 <--------------我在加用户了
ok - user added initially disabled
authsrv# password f1 testf1 <-------------设密码,xixi,passwd=username,so easy to crack
Password for wlj changed.
authsrv# group f1 tn <-------------设组别
set group
authsrv# enable f1 <-------------使能
enabled
authsrv# wiz f1
set group-wizard
authsrv# superwiz f1
set wizard
authsrv# ls <-------------现在看看……
Report for users in database
user group longname status proto last
---- ----- -------- ------ ----- ----
f1 tn y G passw never
authsrv# exit <-------------退出
在防火墙主机上以root身份执行/usr/local/etc/authmgr(认证管理员使用);
# ./authmgr
Connected to server
authmgr-> login
Username: f1
Password:
Logged in
authmgr-> list
Report for users in database
user group longname status proto last
---- ----- -------- ------ ----- ----
admin root y W passw never
f1 tn y G passw Mon Mar 20 11:26:18 2001
authmgr-> exit
2、运行tn-gw
1、客户端IP为192.9.200.56(属内部网),欲telnet到10.1.1.57(属外部网)上,防火墙主机IP为192.9.200.54,则telnet步骤为:
i)输入:telnet 192.9.200.54;
ii)出现用户认证提示,输入认证用户名:f1 ,口令:testf1;
iii)出现认证通过和欢迎信息以及代理运行的提示符tn-gw->,再输入:telnet 10.1.1.57;
出现10.1.1.57机器上的login信息,telnet成功。
2、客户端IP为10.1.1.5(属内部网),欲telnet到防火墙主机(IP为10.1.1.54),则telnet步骤为:
i)输入:telnet 10.1.1.54 3333(必须加端口号);
出现防火墙主机上的login信息,telnet成功。
依以上步骤,同样可以高效地配置好FTP代理(ftp-gw)、邮件代理(smap)、HTTP代理(http-gw)。