TCP_Wrapper软件包是一种基于TCP/IP协议之上的、运行于UNIX/Linux系统,基于访问控制技术的一种网络防火墙软件。他使用C语言编写。软件功能是提供访问控制机制和记录网络服务。需要特别指出的是,他是一种提供源代码的软件。用户仅需在自己的系统上编译并简单配置即可。他不但支持Linux,而且还支持AIX,SunOS,,Solaris,BSD UNIX,HP-UX,IRIX,NCR UNIX,SCO OpenServer,UnixWare,SVR4,FreeBSD,Ultrix,UNICOS等系统。
一、工作原理
当系统收到服务请求时,启动tcpd进程,由tcpd进程检查客户机IP地址是否和/etc/hosts.allow文档和/etc/hosts.deny文档中的IP地址匹配,从而判断对服务请求是否拒绝。
同时还记录到syslog文档中。
二、安 装
本文以SCO OpenServer为例安装TCP_Wrapper。将TCP_Wrapper软件包解压缩到任一目录中,例如/tmp/tcp_wrapper,输入:
tar xvf tcp_wrappers_7.6.tar
用vi打开Makefile文档,修改#REAL_DAEMON_DIR=/etc行,将前面的注释符#去掉,然后输入:
make SYS-type
SYS-type是系统类型。如make sco-os5。其他系统类型参阅Makefile文档。等编译完成后,会有tcpd等可执行文档。首先用tcpdchk检查tcpd是否有问题,若有,则列出警告信息,需要重新编译,直到无任何警告为止。Tcpdmatch在本文后面介绍。
三、配 置
在/etc目录下创建hosts.allow(允许访问)和hosts.deny(拒绝访问)文档。文档格式为每行2个域,用冒号分隔开。格式为service-list: host-list。这两个文档的格式是相同的。关键字ALL用在service-list域表示匹配任何的服务,用在host-list域表示匹配任何的IP地址。关键字LOCAL只能放在host-list域,表示匹配本地任何主机名。在hosts.deny文档中写入:
ALL : ALL
第一个ALL表示任何网络服务,第二个ALL表示任何主机。例如,在hosts.allow文档中写入:
ftpd,telnetd,rlogind : 192.168.0.10
第一个域也可用ALL关键字代表任何服务。这两个文档表示除192.168.0.10能够使用ftp、telnet及rlogin外,其他主机的网络服务请求均被拒绝。
将安装过程中编译好的ftpd移动到/etc目录中,编辑/etc/inetd.conf文档,将相应服务的第六个域改为/etc/tcpd。例如:
ftp stream tcp nowait root /etc/ftpd ftpd 修改为
ftp stream tcp nowait root /etc/tcpd ftpd
第七个域表示网络服务进程名称。其他更有telnetd,fingerd,rlogind等等,只需将第六个域都改为/etc/tcpd即可。
四、使 用
配置完成后,重新启动tcp协议或重启系统,使配置生效。例如:
#tcp stop
#tcp start
使用tcpdmatch,能够检查某个IP是否允许某些服务。例如,本机IP为192.168.0.1,检查192.168.0.10是否允许用ftp访问本机,输入:
#./tcpdmatch ftpd 192.168.0.10
client: address 192.168.0.10
server: process ftpd
matched: /etc/hosts.allow line 1(匹配:/etc/hosts.allow文档第1行)
access: granted (访问:允许)
检查192.168.0.200是否允许用telnet访问本机:
# ./tcpdmatch telnetd 192.168.0.200
client: address 192.168.0.200
server: process telnetd
matched: /etc/hosts.deny line 1(匹配:/etc/hosts.deny文档第1行)
access: denied (访问:拒绝)
同时,将网络访问记录到syslog文档中。Syslog文档的位置,请查阅/etc/syslog.conf文档。在SCO OpenServer中为/usr/adm/syslog。打开这个文档,记录了网络服务连接。通过经常查看syslog文档,能够掌控本机的网络安全状况。下面是个syslog文档的示例:
Mar 18 11:25:55 myhost fingerd[1511]: refused connect from 192.168.0.10(拒绝finger连接)
Mar 18 11:26:35 myhost fptd[1512]: connect from 192.168.0.10 (允许ftp连接)
Mar 18 11:28:11 myhost rlogind[1513]: connect from 192.168.0.10 (允许rlogin连接)
Mar 18 16:06:12 myhost telnetd[1850]: connect from 192.168.0.10 (允许telnet连接)
五、后 记
在不同的系统中,某些地方可能会有些差异。比如,在SCO OpenServer中ftp守护进程名是ftpd,在UnixWare中的名称却是in.ftpd;更有就是syslog文档的位置可能也不尽相同,这些都是需要注意的地方。虽然使用TCP_Wrapper能够提高网络安全性,但是这种仅仅靠配置IP地址的访问控制技术,也不是绝对可靠的,千万不可因此而感到高枕无忧。对此软件感兴趣的朋友能够到http://www.kl.gz.cn/~wtn/tcp_wrappers_7.6.tar下载。
:P

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

rengongpu 回复于:2003-02-07 19:51:48
各们版主以后请您们多发一些这样文章,这样更能增加一些本论坛的内含吗。

htldm 回复于:2003-02-07 21:04:06
欢迎大家多发表一些技术性的帖子!

htldm 回复于:2003-02-07 22:44:01
有了这个东东,可任意控制对不同的机器开放不同的服务。真的是很方便!

zyr2288 回复于:2003-02-08 09:17:11
请教哪里有这个东东,包中有源代码吗?

htldm 回复于:2003-02-08 09:26:43
http://www.kl.gz.cn/~wtn/tcp_wrappers_7.6.tar

zyr2288 回复于:2003-02-08 09:27:16
感谢!

zyr2288 回复于:2003-02-08 09:30:19
噢,是源码包,三块肉喂了猫吃(Thank you very much!)

1000g.net 回复于:2003-04-27 21:54:30
我们在北京,请打电话找我 13301096081 或给我来信 sunet@xinhuanet.com 或在QQ谈 76842750 我们就是想搞廉价的防火墙,基于PC架构的那种,使用一个unix模块就行,我们打算批量生产!

金石开 回复于:2003-04-29 18:13:47
Google