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

回复 收藏
需求:需要用hosts.deny限制用户通过ssh登录
在/etc/hosts.deny中加入
sshd: all
在/etc/hosts.allow中加入
sshd: 1.2.1.197,2.2.93.58,1.238.29.7,LOCAL,192.168.0.0/255.255.240.0
但从 (1.2.1.197,2.2.93.58,1.238.29.7,LOCAL,192.168.0.0/255.255.240.0) 这些IP以外的其它机器仍可以登录该机器.
我们在服务器上设完后把相应服务重启了:
/etc/init.d/xinetd restart
/etc/init.d/network restart
/etc/init.d/portmap restart
/etc/init.d/sshd restart
仍然不行,看来不是重启服务的问题.
后来网上看到,hosts.allow语法像下面这样写,并且不需要配置hosts.deny
sshd:X.X.X.X:allow
sshd:all:deny
也不起效果.

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

在起效果机器下,执行如下命令:
[root@node002 etc]# 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                           4.3p2-24.el5           installed
openssh-clients.x86_64                   4.3p2-24.el5           installed
openssh-server.x86_64                    4.3p2-24.el5           installed
openssh.x86_64                           4.3p2-41.el5_5.1       updates
openssh-askpass.x86_64                   4.3p2-41.el5_5.1       updates
openssh-clients.x86_64                   4.3p2-41.el5_5.1       updates
openssh-server.x86_64                    4.3p2-41.el5_5.1       updates

于是,执行:
yum update -y openssh
再次执行:
ldd /usr/sbin/sshd | grep libwrap.so

有结果显示了。
至此,大功告成。
2011-01-25 17:15 举报
已邀请:
0

雷老师 管理员

赞同来自:

很仔细的排查问题,多向楼主学习
0

loveyouhyf

赞同来自:

如题解决了不生效原因,但没看明白下面的两种那一种才是正解的呢?
是这样
后来网上看到,hosts.allow语法像下面这样写,并且不需要配置hosts.deny
sshd:X.X.X.X:allow
sshd:all:deny

还是这样:
后来网上看到,hosts.allow语法像下面这样写,并且不需要配置hosts.deny
sshd:X.X.X.X:allow
sshd:all:deny

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: