hosts allow |deny

2015-10-20 0 By admin

/etc/hosts.allow 和 /etc/hosts.deny
Linux提供了一个叫TCPwrapper的程序,可以灵活有效地实现对服务请求用户的限制。
通过配置/etc/hosts.allow 和 /etc/hosts.deny这两个文件,
就可以指定哪些客户端可以使用哪些服务,而哪些客户端不可以使用哪些服务。

当服务请求到达服务器时,TCPwrapper按照下列顺序查询这两个文件,直到遇到一个匹配为止:
1.当在/etc/hosts.allow里面有一项与客户端地址匹配,那么就允许该主机获取指定的服务;
2.否则,如果在/etc/hosts.deny里面有一项与客户端地址匹配,就禁止该主机使用指定的服务;
3.如果没有与客户端地址相匹配的语句,则默认可以获取所有服务;
4.如果这两个配置文件均为空,则表示没有任何限制。

=========================
配置方法:
配置这两个文件是通过一种简单的访问控制语言来实现的,基本格式为:
程序名列表:主机名/IP地址列表

如:若在 hosts.deny 中有语句
sshd:192.168.10.10
则表示禁止用户从 192.168.10.10 远程 ssh 登录

*) 程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割。
*) 主机名/IP地址列表指定允许或者禁止的一个或者多个主机的标识,用逗号或空格分隔,可以使用通配符。
*) Linux提供了下面灵活的方式指定进程或者主机列表:
(1) 以”.”起始的域名串,如 .abc.def.gh 那么 www.abc.def.gh 就和这一项匹配;
(2) 以”.”结尾的IP串,如 192.168.10. 则IP地址以 192.168.10 开头的主机都与这一项匹配;
(3) 用 n.n.n.n/m.m.m.m 表示 网络/掩码;
(4) ALL表示匹配所有可能性;
(5) EXPECT 表示除去后面所定义的主机,如 list1 EXCEPT list2 表示list1列表中除去list2所列出的主机;
(6) LOCAL 表示匹配所有主机名中不包含”.”的主机。

=========================
举例:只希望 192.168.11.* 的客户端可以通过 ssh 远程登录服务器,具体配置方法如下:
1) 在 hosts.deny 中,禁止所有机器请求所有服务:
all:all
2) 在 hosts.allow 文件中,允许 192.168.11.* 的客户端 ssh 远程登录:
sshd:192.168.11.