一、Tcp_wrapper简介
Tcp_wrapper是Wietse Venema开发的一个免费软件。Tcp_wrapper的诞生有个小小的故事,大约1990年,作者所在大学的服务器屡屡受到一个外来黑客侵入,因为受害主机的硬盘数据屡次被rm -rf/命令整个抹掉,所以找寻线索极为困难,直到有一天晚上作者在工作的过程中无意中发现这个黑客在不断的finger 受害主机、偷窥受害者的工作。于是,一个想法诞生了:设计一个软件,使它可以截获发起finger请求的IP,用户名等资料。Venema很快投入了工作,而Tcp_wrapper也由此诞生!此后,Tcp_wrapper随着广泛的应用逐渐成为一种标准的安全工具。通过它,管理员实现了对inetd提供的各种服务进行监控和过滤。
Tcp_wrapper编译安装成功后,会生成一个tcpd程序,它可以在inetd.conf这个控制文件中取代in.telnetd的位置,这样,inetd.conf/usr/sbin/tcpd 值得一提的是/usr/sbin/tcpd程序,它是一个TCP连接过滤程序,通常大部分需要做连接验证的服务都应该通过tcpd程序启动,这个程序能够自动对客户机器的IP地址进行验证并且进行某些安全性过滤,其中最主要的功能是禁止某些地址来的连接。例如,按照
上面的形式,in.telnetd程序就是通过/usr/sbin/tcpd程序启动的,因此可以对telnet请求进行地址检验。
tcpd的地址检验是通过/etc/hosts.deny和/etc/hosts.allow文件完成的,如果不存在这样的文件,你可以自己建立一个,两者的语法几乎是一样的,只是hosts.allow是允许某个地址来的连接,而hosts.deny是禁止某个地方来的连接。基本的语法是:服务程序:客户地址(域名或主机名)
客户地址是相关地址的一个列表,例如,/etc/hosts.allow文件中加入这样一行:in.telnetd:10.0.0.2 。将允许10.0.0.2处的机器使用本地的telnet服务,如果这一行加入到/etc/hosts.deny重将禁止10.0.0.2处的机器登录上来。
地址可以使用集合形式,常用的<span color:="" blue;="" font-family:="" 宋体;="" mso-font-kerning:="" 0pt;="" mso-bidi-font-family:="" mso-highlight:="" silver"="" style="padding: 0px; margin: 0px;
font-size: 9pt;">集合形式主要有下列几种:
以逗点开头的字符串定义一个域,例如.edu.cn表示所有域名后缀是.edu.cn的机器。
以逗点结束的字符串定义一串IP地址,如202.199.248.代表202.199.248.0到202.199.248.255。
以/分开的字符串解释为网络地址/子网掩码的形式,例如172.13.0.0/255.255.0.0代表172.13.0.0到172.13.255.255。
另外,地址和服务程序都可以使用通配符,通配符有下列几种:
ALL 代表所有,所有的服务程序或者所有的地址。经常和EXCEPT子句连用,EXCEPT代表“除了”。例如,在hosts.deny中写上ALL:ALL EXCEPT 202.199.248.将禁止除了202.199.248.*的机器之外的所有客户机器使用任何基于tcpd的服务。写上ALL
EXPECT in.telnetd:ALL将使得除了telnet以外的所有基于tcpd的服务都被禁止。
LOCAL 指代所有没有名字后缀的机器。
KNOWN 所有IP地址和域名都知道的机器
UNKNOWN IP地址或者域名无法确定的机器
PARANOID IP地址和从域名服务返回的名字不匹配的机器。