天天看点

linux hosts的allow和deny

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服务

继续阅读