/etc/hosts.allow /etc/hosts.deny
(Linux , 或使用了 tcpd, 参考 inetd.conf)
但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。Linux提供另外一种更为灵活和有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上,使可信任用户使用各种服务。Linux提供了一个叫TCPwrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCPwrapper你可以限制访问前面提到的某些服务。而且TCPwrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接你的系统。
 在/etc目录下,有两个文件:hosts.denyhosts.allow通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。
 
/etc/hosts.allow 设置允许使用 inetd 服务的机器,如 : All:202.118 即允许所有来自 202.118.x.x 的请求 
/etc/hosts.deny 设置不允许使用 inetd 的机器
 
这两个文件的设定顺序请参考在线文档:
man tcpd
man hosts.allow
man hosts.deny
Internet 网络服务访问控制文件 , 对于安全性要求较高的服务器建议采用 xinetd 替代 inetd, xinetd debian 自带 , 其他的可以用源代码进行编译安装
 
当服务请求到达服务器时,TCPwrapper就按照下列顺序查询这两个文件,直到遇到一个匹配为止:
 1.当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务
 2.否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务。
 3.如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文件实现对清除所有设置。在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加#实现注释功能。
 配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:
 程序名列表:主机名/IP地址列表。
 程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所需的程序名:in.telnetd。
 主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。
 Linux提供了下面灵活的方式指定进程或者主机列表:
 1.一个以"."起始的域名串,如.amms.ac.cn那么www.amms.ac.cn就和这一项匹配
 2.以"."结尾的IP串如202.37.152.那么IP地址包括202.37.152.的主机都与这一项匹配。
 3.格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n那么该主机与该项匹配。
 4.ALL表示匹配所有可能性
 5.EXPECT表示除去后面所定义的主机。如:list_1EXCEPTlist_2表示list_1主机列表中除去List_2所列出的主机
 6.LOCAL表示匹配所有主机名中不包含"."的主机
 上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。我们通过举几个例子来说明这个问题:
 例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止广域网上面的ftp服务请求,本地局域网由202.39.154.、202.39.153.和202.39.152.三个网段组成。
 在hosts.deny文件中,我们定义禁止所有机器请求所有服务:
 ALL:ALL
 在hosts.allow文件中,我们定义只允许局域网访问ftp功能:
 in.ftpd-l–a:202.39.154202.39.153.202.39.152.
 这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。此外,应该定期检查/var/log目录下的纪录文件,发现对系统安全有威胁的登录事件。last命令可以有效的查看系统登录事件,发现问题所在。
 最后tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:
 [root@deep]#tcpdchk