为什么TCP包装会停止为sshd工作?

在几台CentOS 5服务器上,sshd似乎已经变成“unwrapped”了 – 以前我用的是TCP wrappers和hosts.allow / hosts.deny来控制访问,但是现在还没有被使用。 如果我执行

$ldd /usr/sbin/sshd | grep libwrap $ 

它什么都不输出,而在TCP封装器仍在工作的服务器上我看到了

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

有没有人知道是什么原因造成的,或者如何纠正?

根据要求更新

 $ rpm -qV openssh-server S.5....T c /etc/pam.d/sshd S.?....T c /etc/ssh/sshd_config S.5..... /usr/sbin/sshd 

ldd / usr / sbin / sshd的输出是:

  libpam.so.0 => /lib64/libpam.so.0 (0x00002af906b89000) libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002af906d94000) libdl.so.2 => /lib64/libdl.so.2 (0x00002af9070e5000) libutil.so.1 => /lib64/libutil.so.1 (0x00002af9072ea000) libz.so.1 => /lib64/libz.so.1 (0x00002af9074ed000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00002af907701000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002af90791a000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002af907b52000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002af907d67000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002af907f96000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002af90822b000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002af908450000) libc.so.6 => /lib64/libc.so.6 (0x00002af908653000) libaudit.so.0 => /lib64/libaudit.so.0 (0x00002af9089ac000) /lib64/ld-linux-x86-64.so.2 (0x00002af90696b000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002af908bc4000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002af908dcd000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00002af908fcf000) libsepol.so.1 => /lib64/libsepol.so.1 (0x00002af9091e8000) $ rpm -qa|grep openssh-server openssh-server-4.3p2-82.el5 $ sudo /usr/sbin/sshd -p 22222 -d -d debug2: load_server_config: filename /etc/ssh/sshd_config debug2: load_server_config: done config len = 655 debug2: parse_server_config: config /etc/ssh/sshd_config len 655 debug1: sshd version OpenSSH_4.3, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 debug1: private host key: #0 type 0 RSA1 debug1: read PEM private key done: type RSA debug1: private host key: #1 type 1 RSA debug1: read PEM private key done: type DSA debug1: private host key: #2 type 2 DSA debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-p' debug1: rexec_argv[2]='22222' debug1: rexec_argv[3]='-d' debug1: rexec_argv[4]='-d' Set /proc/self/oom_adj from 0 to -17 debug2: fd 3 setting O_NONBLOCK debug1: Bind to port 22222 on ::. Server listening on :: port 22222. 

目前有证据表明你的sshd已被重新编译。 根据rpm -qV输出,MD5校验和和文件大小是错误的。

sshd似乎没有什么帮助,比如openssh告诉你它运行的是什么版本,什么时候编译,但是rpm -qa|grep openssh-server的输出和/usr/sbin/sshd -p 22222 -d -d的前十行/usr/sbin/sshd -p 22222 -d -d (你可以用任何未使用的端口替代22222,这个命令将需要特权,并且一旦它启动,你就可以用^C来杀死它 – 这只是我们想要的版本号)在这里最有帮助。

编辑 :它看起来更像你的sshd不是发行版本。 我刚刚完成了相同的testing( sshd -p 22222 -d -d在C5.10框中的股票sshd ,我得到一行说:

 debug1: sshd version OpenSSH_4.3p2 

而你有

 debug1: sshd version OpenSSH_4.3, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 

目前,我看不出有什么理由认为你正在运行股票sshd ,这将解释为什么它不尊重TCP包装。 除此之外,这可能会使您面临任何数量的攻击,这些攻击对于在发行版本中打补丁的sshd版本是很好的。 您可以通过删除并重新安装openssh-server RPM,并检查TCP包装器兼容性是否已恢复来获得明确的答案。 您可能需要在控制台上安全地进行操作。

根据rpm -qV输出,你的sshd二进制文件已被修改,但是修改时间戳被设置回原来的值。

通常发生这种情况是因为您的计算机已被黑客入侵,攻击者拥有root权限。 这将解释你的sshd二进制文件的exception运行。

请注意,您的ssh服务器几乎可以肯定地在您login时将您的密码发送给黑客,因此请考虑现在所有的密码都已被盗用。

它被编译为正确的头文件(configure –with-libwrap [= path]) – 所以它使用它。

正如我记得这是故意的行为 – 如http://www.akadia.com/services/ssh_tcp_wrapper.html所述。