linux hosts的allow和deny
/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。
网络防火墙是阻挡非授权主机访问网络的第一道防护,但是它们不应该仅有一道屏障。
Linux使用了两个文件/etc/host.allow和/etc/hosts.deny,根据网络请求的来源限制对服务的访问。
host.allow文件列出了允许连接到一个特定服务的主机,而hosts.deny文件则负责限制访问。
不过,这两个文件只控制对有hosts_access功能的服务(如xinetd所管理的那些服务、sshd和某些配置的sendmail)的访问。
在大多数情况下,明智的做法是先做限制,然后只允许从指定主机访问关键服务。
我们建议,默认在hosts.deny文件中加上下面这一行配置,拒绝所有的访问:
ALL:ALL
接下来,您可以在hosts.allow文件中逐个开放访问许可。下面的配置允许从网络192.168/16访问SSH,而从任何地方访问sendmail。
sshd: 192.168.0.0/255.255.0.0
sendmail: ALL
两个文件每行配置的格式都是service: host或者service: network。失败的连接企图被记录到syslog中。从没有得到允许访问该服务的主机来的连接会被立即关闭。
大多数Linux发行版本默认都带host.allow和hosts.deny,但是它们通常为空。
修改/etc/hosts.allow文件
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
sshd:210.13.218.*:allow
sshd:222.77.15.*:allow
以上写法表示允许210和222两个ip段连接sshd服务(这必然需要hosts.deny这个文件配合使用),当然:allow完全可以省略的。
当然如果管理员集中在一个IP那么这样写是比较省事的
all:218.24.129.110 //他表示接受110这个ip的所有请求!
/etc/hosts.deny文件,此文件是拒绝服务列表,文件内容如下:
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd:all:deny
注意看:sshd:all:deny表示拒绝了所有sshd远程连接。:deny可以省略。
所以:当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准。
注意修改完后:
service xinetd restart
才能让刚才的更改生效。
/etc/hosts.allow(允许)和/etc/hosts.deny(禁止)这两个文件是tcpd服务器的配置文件
tcpd服务器可以控制外部IP对本机服务的访问
linux 系统会先检查/etc/hosts.deny规则,再检查/etc/hosts.allow规则,如果有冲突 按/etc/hosts.allow规则处理
比如:
1.禁止所有ip访问linux 的ssh功能
可以在/etc/hosts.deny添加一行 sshd:all:deny
2.禁止某一个ip(192.168.11.112)访问ssh功能
可以在/etc/hosts.deny添加一行sshd:192.168.11.112
3.如果在/etc/hosts.deny和/etc/hosts.allow同时 有sshd:192.168.11.112 规则,则192.168.11.112可以访问主机的ssh服务