Linux本身有两层防火墙,通过IP实行过滤机制的iptables是第一道防护,如果通过了iptables的防护,那么下一层防护就是tcp_wrappers了。tcp_wrappers的配置比较简单, 主要是通过/etc/hosts.allow和/etc/hosts.deny两个文件来完成。这里以centos 6.5为例讲一下配置过程: 1. 首先我们先来检查系统中是否安装了tcp_wrappers 如果有上述截图中的输出就表示已经安装了,如果没有的话可以用yum的方式安装。 2. tcp_wrappers规则设定的格式: service:host (s) [:action] 主要参数含义如下: l service:系统中的服务名称,因为tcp_wrappers配置的简单性必然自身会带有一些局限性:只有应用了libwrapped库文件的服务才 能使用tcp_wrappers防火墙,例如:sshd, portmap, sendmail, xinetd, vsftpd, tcpd等都是可以使用的。 l host(s):主机名或者IP地址,可以有多个,例如 10.0.0.0,www.itnetcn.com。 l action:在符合前述条件后采取的动作,一般常用的关键字有: ALL:所有服务或者所有IP,主机名。 ALL EXCEPT:从所有服务或者IP中去除指定的。 例如: ALL:ALL EXCEPT 10.0.0.1 表示除了10.0.0.1这个IP,其他的机器都可以执行(或者禁止执行)所有服务(取决于这条规则放在哪个文件中),一般系统会首先去匹配/etc/hosts.allow(如果没有请手动新建一个)中的规则,如果不匹配则去执行/etc/hosts.deny中的规则,如果依然不匹配,则是默认允许访问主机的。因此,在设定好/etc/hosts.allow文件的访问规则之后,只需设置hosts.deny文件的规则为所有都不能访问的状态即可,例如: sshd:ALL l 在了解上述规则后我们就可以配置一个简单的tcp_wrappers防火墙应用了,例如只允许10.0.0.1访问该台主机. 1. vim /etc/hosts.allow 2. 写入sshd: 10.0.0.1 3. Vim /etc/hosts.deny 4. 写入sshd:ALL 设置好之后再用ssh访问这台机器,就会访问失败了(除了设定的10.0.0.1这个IP) |