原文参见 http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/
讲了这么几件事:
1:什么是tcp wrappers?
基于主机的网络访问控制系统。上世纪90年代,用来保护unix主机的。
2:哪些程序、服务是用 tcp wrappers 编译的?
先用 whereis 找到sshd
# whereis sshd
sshd: /usr/sbin/sshd /usr/share/man/man8/sshd.8.gz
再用ldd 查看共享库的依赖关系。
# ldd /usr/sbin/sshd|grep libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00f4d000)
可以看出这个sshd 是把libwrap.so.0 链接进去的。
3:优缺点?
缺点:所有的程序必须用libwrap库编译。不支持RFC?
它工作在应用程序层。即使是加密,也能过滤掉这些请求。pop3, ftp, sshd, telnet, r-services 这些服务都可以用tcp wrappers。
优点:会做相应的日志。访问控制。主机名的认证。防止欺骗。
4:怎么用tcp wrappers 保护我们的系统。
几个重要的文件:
tcpd:访问控制的主要程序。
/etc/hosts.allow 允许的主机
/etc/hosts.deny 禁止的主机。
tcpdchk and tcpdmatch 这两个在 cetos的tcp-wrappers中没有找到。
hosts.allow和hosts.deny中的格式:
daemon_list : client_list [ : shell_command ]
- daemon_list – 后台守护进程名称的列表
- client_list – 主机名、ip地址或者是他们的通配符
例子:
DenyHosts 就是利用的tcp wrappers来禁止哪些试图暴力破解sshd密码的ip。它通过寻找 tail /var/log/secure ssh认证失败的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
# 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: 189.152.44.226
sshd: 219.90.93.42
sshd: 202.144.60.186
sshd: 61.184.101.46
sshd: 219.76.75.6
sshd: 221.130.197.204
sshd: 203.161.231.33
sshd: 202.116.98.50
sshd: 189.152.72.197
sshd: 218.1.71.184
ps:自己的英语水平是在太差了,有些地方虽然能看明白,就是翻译不出来。