hosts.deny 和hosts.allow 配置不生效

需求:需要用hosts.deny限制用户通过ssh登录

在/etc/hosts.deny中加入

sshd: all

在/etc/hosts.allow中加入

sshd:all #拒绝所有的ip链接ssh服务

在其他服务器上尝试链接该服务器,却发现还是正常链接

 

继续找问题,又从网上得知, /etc/hosts.allow 与 /etc/hosts.deny 只对调用了 tcp_wrappers  的才起作用。若是源代码编译的,看看编译时是否寻找了 libwrap.so

在起效果机器下,执行如下命令:

[root@zt ~]# ldd /usr/sbin/sshd | grep libwrap.so

        libwrap.so.0 => /lib64/libwrap.so.0 (0x00002ba28edcc000)

在不起效果机器下,却找不到libwrap.so

在生效的机器上执行:

 

rpm -qf /lib64/libwrap.so.0  结果如下:

 

tcp_wrappers-7.6-40.7.el5

在不生效的机器上

yum install -y tcp_wrappers

安装后,用ldd /usr/sbin/sshd | grep libwrap.so   还是没有内容

 

在不生效机器上,继续

yum list |grep openssh   结果:

openssh.x86_64                          5.3p2-24.el5           installed

openssh-clients.x86_64                   5.3p2-24.el5           installed

openssh-server.x86_64                    5.3p2-24.el5           installed

openssh.x86_64                           5.3p2-41.el5_5.1       updates

openssh-askpass.x86_64                   5.3p2-41.el5_5.1       updates

openssh-clients.x86_64                   5.3p2-41.el5_5.1       updates

openssh-server.x86_64                    5.3p2-41.el5_5.1       updates

 

于是,执行:

 

yum update -y openssh 

再次执行:

ldd /usr/sbin/sshd | grep libwrap.so

 

有结果显示了。

别的服务器链接该服务器,也会报下面的错误

 

ssh_exchange_identification: Connection closed by remote host

还有一种情况就是,你的服务器被入侵,sshd 被替换,用ldd 命令看看sshd 的libwrap.so还有嘛