说明:本文转自 http://www.yesky.com/493/197493.shtml
TCP_Wrapper软件包是一种基于TCP/IP协议之上的、运行于UNIX/Linux系统、基于访问控制技术的一种网络防火墙软件。它使用C语言编写。软件功能是提供访问控制机制和记录网络服务。需要特别指出的是,它是一种提供源代码的软件,用户仅需在自己的系统上编译并简单配置即可。它不仅支持Linux,而且还支持AIX,SunOSSolaris,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(拒绝访问)文件。文件格式为每行两个域,用冒号分隔开,如:service-list host-list。这两个文件的格式是相同的。关键字ALL用在service-list域表示匹配所有的服务,用在host-list域表示匹配所有的IP地址。关键字LOCAL只能放在host-list域,表示匹配本地所有主机名。在hosts.deny文件中写入:
ALL ALL
第一个ALL表示所有网络服务,第二个ALL表示所有主机。例如,在hosts.allow文件中写入:
ftpdtelnetdrlogind 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
clientaddress 192.168.0.10
serverprocess ftpd
matched/etc/hosts.allow line 1(匹配:/etc/hosts.allow文件第一行)
accessgranted (访问:允许)
检查192.168.0.200是否允许用telnet访问本机:
# ./tcpdmatch telnetd 192.168.0.200
clientaddress 192.168.0.200
serverprocess telnetd
matched/etc/hosts.deny line 1(匹配:/etc/hosts.deny文件第一行)
accessdenied(访问:拒绝)
同时,将网络访问记录到syslog文件中。syslog文件的位置,请查阅/etc/syslog.conf文件。在SCO OpenServer中为/usr/adm/syslog。打开这个文件,记录了网络服务连接。通过经常查看syslog文件,可以掌握本机的网络安全状况。下面是一个syslog文件的示例:
Mar 18 112555 myhost fingerd1511 refused connect from 192.168.0.10(拒绝finger连接)
Mar 18 112635 myhost fptd1512 connect from 192.168.0.10(允许ftp连接)
Mar 18 112811 myhost rlogind1513 connect from 192.168.0.10(允许rlogin连接)
Mar 18 160612 myhost telnetd1850 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下载。