在几台 CentOS 5 服务器上,sshd 似乎已“解包”——以前我使用 TCP 包装器和 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.
答案1
目前,有证据表明你的文件sshd
已被重新编译。根据输出,MD5 校验和和文件大小都是错误的rpm -qV
。
sshd
似乎不如 openssh 那样有用,它能告诉您它正在运行什么版本以及何时编译,但是 的输出rpm -qa|grep openssh-server
和前十行左右/usr/sbin/sshd -p 22222 -d -d
(您可以将任何未使用的端口替换为 22222,该命令将需要特权,并且您可以在启动后使用它来终止它^C
- 这只是我们想要的版本号)在这里最有帮助。
编辑:看起来您的 sshd 更像是非发行版。我刚刚做了同样的测试(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
版本的大量攻击的风险,这些攻击已在发行版中得到修补。您可以通过删除并重新安装 RPM 并检查 TCP 包装器兼容性是否已恢复来获得明确的答案openssh-server
。您可能需要在控制台上安全地执行此操作。
答案2
根据 rpm -qV 输出,您的 sshd 二进制文件已被修改,但修改时间戳被设置回其原始值。
通常,发生这种情况是因为您的计算机已被黑客入侵,并且攻击者拥有 root 访问权限。这也可以解释您的 sshd 二进制文件功能异常。
请注意,当您登录时,您的 ssh 服务器几乎肯定会将您的密码发送给黑客,因此现在所有密码都已被泄露。
答案3
它是用适当的标题(configure --with-libwrap[=path])编译的 - 所以它使用它。
我记得这是有意的行为——就像描述的那样http://www.akadia.com/services/ssh_tcp_wrapper.html。