TCPWRAPPER
tcpwrapper又称TCPD, 是网络服务的访问控制工具,也就是能过滤客户端的各种server的一个前台程序。不过有一个不好的地方就是:不适合用于UDP服务!
TCPD有两个访问控制文件:
/etc/hosts.allow
/etc/hosts.deny
/etc/hosts.allow决定谁有资格使用哪些服务。
/etc/hosts.den则决定哪些客户端应该被阻挡在外。
每当有客户端试图访问TCPD所代理的服务,它会优先评估/etc/hosts.allow所设定的条件,如果符合,则开放访问;若客户端不符合/etc/hosts.allow所描述的任何条件,则以/etc/hosts.deny来审核客户端的资格。若客户端符合/etc/hosts.deny所描述的资格,则会被拒绝访问。反之,客户端依然可以访问被保护的网络服务。
/etc/hosts.allow and /ec/hosts.deny的文件格式:
/etc/hosts.allow and /ec/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, 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/hosts.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 \
fi
这样就可将一个shell 脚本作为一个shell commend来输出。
这也表示若有LOACL与.M-gtuiw.com之外的客户端试图访问ftp服务的时候,它们的finger信息将被记录在/var/log/ftp.log日志文件中。tcpd会将%h 与 %d 宏扩展成客户端的主机名称与服务名称。
阅读(1910) | 评论(0) | 转发(0) |