使用tcpwrapper,hosts.deny,hosts.allow

2013-02-05

使用tcpwrapper

tcpwrapper又称TCPD, 是网络服务的访问控制工具,也就是能过滤客户端的各种server的一个前台程序。不过有一个不好的地方就是:不适合用于UDP服务!    TCPD有两个访问控制文件:    /etc/hosts.allow决定谁有资格使用哪些服务。    /etc/hosts.deny则决定哪些客户端应该被阻挡在外。    每当有客户端试图访问TCPD所代理的服务,它会优先评估/etc/hosts.allow所设定的条件,如果符合,则开放访问;若客户端不符合/etc/hosts.allow所描述的任何条件,则

以/etc/hosts.deny来审核客户端的资格。若客户端符合/etc/hosts.deny所描述的资格,则会被拒绝访问。反之,客户端依然可以访问被保护的网络服务。       /etc/hosts.allow and /etc/hosts.deny有着相同的文件格式:

servicelist : hostlist [:shellcmd]

其中,servicelist是/etc/service文件里的一栏服务名称或关键字ALL。hostlist是一系列的主机名称。IP address或关键字ALL。 LOCAL代表主机名称中不包含 . 符号的任何客户端。

UNKNOW代表任何查不出其主机名称的客户端。PAEANOID代表任何主机名称不能被反解为IP address的客户端。第一个字母为 . 的名称 (exmaple : .M-gtuiw.com)表示该域下的任何子域与主

机都不符合条件 (example: OS.M-gtuiw.com, www.M-gtuiw.com, bbs.M-gtuiw.com ...). 末端为 . 的不完整 IP address 代表一段范围内的所有IP address。如 172.16.代表172.16.0.0到

172.16.255.255的这一段范围。或172.16.0.0/255.255.0.0也可表示同样的范围。最后,任何以/字符开始的模式,一律解释为含有名称列表或IP address列表的文件的绝对路径。example:

/var/access/trustedhosts将使得tcpd daemon读取该文件,检查客户端的主机名称或IP address是否列在文件中。 ...   用 telnet 为例:    假设局域网的地址为192.168.10.0/24,则/etc/nosts.allow应该有以下内容:

telnet : 192.168.10.    这样做可让192.168.10网段的所有IP要用telnet访问本机。

而/etc/hosts.deny的内容又该如下:

telnet : ALL           or               ALL : ALL

这样的话除了上面的192.168.10网段的IP可telnet本机外,再也不会让其它服务进入本机。    访问控制文件的第三个字段shellcmd,顾名思义,它可包含有一个shell命令,当遇到符合该行所描述的客户端时,则执行shellcmd.  example:                   ftp : ALL EXCEPT LOCAL, .M-gtuiw.com \                     echo "request from %d@%h:" >> /var/log/ftp.log;  \ ...                    if [ %h != "OS.M-gtuiw.com:" ] ; then  \                        finge -l @%h >> /var/log/ftp.log  \

实例1: 只允许指定IP访问ssh

/etc/hosts.deny

sshd: all except 192.168.100.110

/etc/hosts.allow不用写就可以

或者

/etc/hosts.deny

sshd:all:deny

/etc/hosts.allow

sshd:172.16.10.7 172.16.10.9:allow

分类:Linux安全网络 | 标签: |

相关日志

评论被关闭!