什么是防火墙——不知道;)

  什么是TIS?——这是一组由(TrustedInformationSystems)写的一组构造防火墙的工具包,又叫firewalltoolkit,这个工具箱里的软件适当的安装并配置以一定的安全策略就可以构成基本的防火墙了,而且它是免费的;)花点心思看一看,说不定可以省下一笔不菲的防火墙购置资金哦……

  一、编译运行

  1、下载
  可以到TIS的web站点下载http://www.tis.com,但它有一些很麻烦的认证过程,建议直接到国内的安全站点转转,或者到http://packetstorm.securify.com/去下载,我得到的版本是fwtk2.1.tar.Z的版本,此后的说明均以此版本为例,且在solaris7x86上通过,gcc版本为2.95.2。

  2、编译
#gunzipfwtk2.1.tar.Z
#tarvfxfwtk2.1.tar
#cdfwtk
  将fwtk2.1.tar.Z解压后,可以在./fwtk目录下发现有很多Makefile.config.*文件,比如你使用的操作系统是solaris2.7,那么就直接将Makefile.config更名后,把Makefile.config.solaris更名为Makefile.config就行了。

#mvMakefile.configMakefile.config.old
#mvMakefile.config.solarisMakefile.config

在solaris下的编译相当容易——至少solaris7与solaris8下面不用修改任何东西就可以编译通过了。

#make&&makeinstall

  如果你使用的是linux,仅仅把Makefile.config.linux当成当前Makefile.config还不够,因为如果你要使用X的gw.那么你必须有AthenaWidget的设置。否则编译会出问题。因此,可以修改Makefile让系统不编译x-gw。

  所以可以

#viMakefile

  查找下面这行:

#directoriestobuildexecutablesin
DIRS=smapsmapdnetaclplug-gwftp-gwtn-gwrlogin-gwhttp-gwx-gw

  把后面的x-gw去掉就可以了。

  如果是在bsd下,特别要注意,bsd的make不认识象:.include"Makefile.config"
这种格式,因此,在bsd下要用TIS提供的fixmake来处理。或者用指定

CC=gcc
COPT=-g-traditional-DBSDI

来适应bsd系统——比如我的FreeBSD3.4。

  如果在编译过程中有出现sys_errlist的定义声明出错,那么要修改原程序,比如:
exterchar*sys_errlist[];把该行注释掉。

  如果出现"Undefinedsymbol`_cryptreferencedfromtextsegment"错误,则看在你的Makefile.config中AUX 设置是否有"-lcrypt"。

  如果还有问题……我懒得翻译那么多东西了,你可以到下面的URL看看:

http://fwtk.netimages.com/fwtk/faq/

  这里列出了人们在编译及使用tis时遇到的一些常见问题。

  二、配置前的准备工作

  1、理解一些概念

  a、wrapper

  我的理解,wrapper应该是一个包装程序,说白了和那些login什么的后门没本质区别;)比如说tcpd吧,我们用它来守护一些网络服务守护进程,比如,在超级服务守护进程inetd的配置文件中,我们可以将

fingerstreamtcpnowaitnobody/usr/etc/in.fingerin.fingerd

  这一句替换掉,用tcpd来包装

fingerstreamtcpnowaitnobody/usr/etc/tcpdin.fingerd

  发送一个HUP信号给inetd让它重启后,tcpd就发生作用了,如果此时收到一个对主机的finger请求,tcpd便启动,先检查访问控制的配置文件,也就是/etc/hosts.allow和/etc/hosts.deny,如果允许访问,再启动真正的finger守护进程去处理该请求。
  怎么样,和login的后门相比原理是不是相同的?比如ulogin.c吧,是将真正的login改名备份到另一个地方,用假的login包装起来,收到login请求时,先判断访问者是不是有设置DISPLAY的环境变量,如果该变量和password相同的话,则启动/bin/sh,如果没有,则以正常的login来响应该请求……哎,这是题外话,不说了……

  b、gateway

  应用级网关(ApplicationLevelGateways)是在网络应用层上建立协议过滤和转发功能。它针对特定的网络应用服务协议使用指定的数据过滤逻辑,并在过滤的同时,对数据包进行必要的分析、登记和统计,形成报告。
  呵,这种教材似的东西看着是不是觉得难理解,看了半天不知所云?其实在TIS下面,它的各种gw比如tn-gw,是控制telnet的,当你连接到tn-gw运行的端口时,它会出现一个自己的提示符……如下:


C:\$#@62;telnet192.168.0.2
然后telnet窗口将出现
hi,imquack,welcometomy3cr19TkI7swebsite!$#@60;------------这是我的tn-welcome.txt
tn-gw-$#@62;它会在在连接时显示……
当我键入问号寻求帮助时,会有如下的提示信息……
tn-gw-$#@62;?
Validcommandsare:(uniqueabbreviationsmaybeused)
connecthostname[serv/port]
telnethostname[serv/port]
x-gw[hostname/display]
help/?
password
timeoutseconds
quit/exit
tn-gw-$#@62;
  看明白了吗,唔,没错,它提供的是穿越这台防火墙主机对其它机器的telnet访问;)
tn-gw-$#@62;telnet192.168.0.255555
Trying192.168.0.2port-9981...
Connectedto192.168.0.2.

SunOS5.7

login:quack
Password:
Lastlogin:FriJun900:27:48from192.168.0.1
SunMicrosystemsInc.SunOS5.7GenericOctober1998
Cracker%

  这下清楚了吧……稍安勿燥,后面我将说明这是如何配置的。

  c、proxy

  代理服务(ProxyService)也称链路级网关或TCP通道(CircuitLevelGatewaysorTCPTunnels),也有人将它归于应用级网关一类。它是针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术,其特点是将所有跨越防火墙的网络通信链路分为两段。防火墙内外计算机系统间应用层的"链接",由两个终止代理服务器上的"链接"来实现,外部计算机的网络链路只能到达代理服务器,从而起到了隔离防火墙内外计算机系统的作用。此外,代理服务也对过往的数据包进行分析、注册登记,形成报告,同时当发现被攻击迹象时会向网络管理员发出警报,并保留攻击痕迹。

  2、文件介绍

  默认的安装,TIS是安装在/usr/local/etc目录下的,现在我们来看看里面都有些什么吧

#cd/usr/local/etc
#ls-la
总数1092
drwxr-xr-x2rootother5126月617:05.
drwxr-xr-x11rootother5126月617:02..
-rwxr-xr-x1rootother170126月617:05authdump
-rwxr-xr-x1rootother187526月617:05authload
-rwxr-xr-x1rootother231326月617:05authmgr
-rwxr-xr-x1rootother475006月617:05authsrv
-rwxr-xr-x1rootother509526月617:05ftp-gw
-rwxr-xr-x1rootother1177126月617:05http-gw
-rwxr-x---1rootother3626月617:05mqueue
-rwxr-xr-x1rootother268206月617:05netacl
-rw-r--r--1rootother31016月617:05netperm-table
-rwxr-xr-x1rootother303086月617:05plug-gw
-rwxr-xr-x1rootother458926月617:05rlogin-gw
-rwxr-xr-x1rootother314366月617:05smap
-rwxr-xr-x1rootother287726月617:05smapd
-rwxr-xr-x1rootother499406月617:05tn-gw
-rwxr-xr-x1rootother447926月617:05x-gw

  一个一个来解释吧……

  a.authdump:这是对TIS认证数据库进行管理的工具,它可以在数据库中建立信息的ASCII文本形式的备份。其中的密码是加密后输出的。

  b.authload:也是认证数据库管理工具,它对数据库中的单个记录进行处理,这个命令在你需要向数据库中添加一组条目或者需要在两个站点之间共享数据库时特别有用。

  c.authmgr:网络认证的客户程序,它是与认证方authsrv的接口。是用来访问网络上的认证服务器或者加密连接时用的。

  d.authsrv:第三方网络认证守护程序,它提供了多种谁形式的综合接口,比如口令、一次性口令或者令牌认证系统,它里面有一个包含用户和组记录的数据库,并且还有一个管理接口,允许一个获得认证的管理员管理本地或网络上的用户记录。后面会说它的配置的。

  e.ftp-gw:
  它是带有日志记录和访问控制的可以穿越的FTP代理服务。

  f.http-gw:
  带有日志记录和访问控制的gopher和http代理服务。

  g.mqueue:
  不知是不是messagequeue?不太懂……:(

  h.netacl:
  TCP网络访问控制,由inetd调用,对各种服务提供包装。

  i.netperm-table:
  所有各种服务的配置文件。

  j.plug-gw:
通用的一个tcp连接代理服务程序。

  k.rlogin-gw:
  这是提供穿过rlogin的代理服务——r系统服务的危险大家是都知道的了,如果非要不可,用它来提供包装吧

  l.smap:
  sendmail包装程序——客户端,它实现了smtp的最小版本,接受来自网络的消息,并发给smapd由它作进一步传送,它一般是运行在chroot下的。

  m.smapd:
  sendmail包装程序——守护程序,它通过定期扫描由smap维护的邮件缓冲池区域并转发搜集和保存在那里的任意消息。

  n.tn-gw:
  telnet的代理服务器。

  o.x-gw:
  X网关服务器。

  3、系统准备

  a.去除IP转发
  你的机器有两块网卡么?

  如果你不想你的防火墙轻易被人穿越,就得老老实实把IP转发功能干掉,因为IP转发会导致从一个接口接收到的报文重新转发到所有其它适用的接口——一般去除IP转发可能要重新配置内核。默认情况下,如果Solaris机器有超过一块的网卡的话,它将会在不同网卡间转发数据包,这一行为可在/etc/init.d/inetinit中得到控制。要在Solaris 2.4或者更低版本机器下关闭它,可以将
ndd-set/dev/ipip_forwarding0添加于/etc/init.d/inetinit的未尾。在Solaris2.5中,只要
touch/etc/notrouter.如果是SunOS4.1x,则在内核运行adb,在核心配置文件中加入
options"IPFORWARDING=-1"并重新编译生成新的内核。至于linux,你试着makemenuconfig,找到IP:forwarding/gatewaying,将CONFIG_IP_FORWARD关掉,重新编译即可。其它的类似吧,自己琢磨琢磨,我也不会;)

  b.移除/etc/inetd.conf及/etc/rc2.d/内不必要的服务

  首先可以用
#ps-elf
  看看系统启动时启动的服务
  你可以暂时先把/etc/inetd.conf内的所有服务都屏蔽掉——在每一项前面加上#号使其失效——因为稍后我们将用netacl或者各种*-gw来包装这些服务——启动的inetd.conf总是要改的;)并非所有的进程都是由inetd这一超级服务器守护进程来启动的,有一些直接在rc2.d里
  定义,直接在系统启动时就运行,如果你有运行下列服务的话,最好也关掉:

pcnfsd
rwhod
mountd
protmap
sendmail
named
printer
timed
nfsd
rstatd
xntpd
nfsiod
  有些服务的关闭可能会影响系统服务,需要你自行分析了……。