本文介绍 inux下tcp_wrappers的配置过程,供大家学习参考。
Linux访问控制的流程:
本文介绍第二层防火墙tcp_wrappers。
现在我们来了解一下tcp_wrappers的访问控制判断顺序。 是可以的,在allow里面定义了允许192.168.1.0/24,这个网段里面就包含了192.168.1.1。它已经明确了指定了允许192.168.1.0/24的网络,那么192.168.1.1匹配到这个条目,就不在往下面读。
关于tcp_wrappers的语法
还可以这样写,指定在那台主机上面的服务,
关于客户机的说明
试验,
下面开始做策略,在192.168.0.254这台主机上面拒绝192.168.0.10来ssh。
复制代码代码如下:
#
# hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # 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: 192.168.0.10
/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 # by the '/usr/sbin/tcpd' server. # # 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: 192.168.0.0/255.255.255.0 EXCEPT 192.168.0.10 /etc/hosts.deny文件定义完成了,来测试下。
现在我们在192.168.0.10上面去ssh到192.168.0.254上,看下能否成功。
现在我们在来利用192.168.0.20来ssh到192.168.0.254,看下能否成功。 为什么192.168.0.10可以ssh到192.168.0.254上面,而192.168.0.20不可以ssh到192.168.0.254上面去呢,这个就是刚才EXCEPT的作用。我们在/etc/hosts.deny文件里面定义了拒绝192.168.0.0/255.255.255.0这个网络中的所有主机,但是,除了192.168.0.10以外。就是这个原因。 我们刚才是将EXCEPT写在了/etc/hosts.deny文件中,如果写在/etc/hosts.allow里面呢,那么就和写在deny里面就又不一样了。 现在将hosts.deny给清空掉,然后编辑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: 192.168.0.0/255.255.255.0 EXCEPT 192.168.0.10
/etc/hosts.allow文件就编辑完成了,这个时候,192.168.0.10可以ssh到192.168.0.254吗,测试下。
查询哪些服务是支持tcp_wrappers
再使用ldd命令来查询
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ldd /usr/sbin/sshd |grep libwrap libwrap.so.0 => /lib/libwrap.so.0 (0x00b92000) [root@localhost ~]# 如果服务调用了libwrap.so这个动态链接库文件就代表这个服务支持tcp_wrappers。 也可以直接查询,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ldd `which vsftpd` |grep libwrap libwrap.so.0 => /lib/libwrap.so.0 (0x00825000) [root@localhost ~]# 可以看到,vsftpd也是可以支持tcp_wrappers的。 还有一种方式也可以来查询那些服务可以支持tcp_wrappers。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# strings `which portmap` |grep hosts hosts_access_verbose hosts_allow_table hosts_deny_table /etc/hosts.allow /etc/hosts.deny [root@localhost ~]# 只要查询出来有/etc/hosts.allow和/etc/hosts.deny这两个文件就代表这个服务支持tcp_wrappers。 那么我们的xinetd服务是否支持tcp_wrappers呢?
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ldd `which xinetd` |grep libwrap libwrap.so.0 => /lib/libwrap.so.0 (0x0035a000) [root@localhost ~]# 可以看到,xinetd服务是支持tcp_wrappers的,也就是说由xinetd管理的所有服务都是支持tcp_wrapers的。
使用ldd和strings工具来查询,只要满足其中一种方式就可以支持tcp_wrappers。 |