12.15号生产系统,通过绿盟的rsas系统扫描到有openssh漏洞,官方解决方案是要升级openssh的版本,我从http://www.openssh.com/下载了最新的版本7.4,然后传至正式机,进行configure ,但最后提示openssl mismatched。我的系统明明有安装了openssl 1.0.1e,考虑是版本不兼容问题,然后下载了1.0.1u和1.1.0c和1.0.2j等3个版本的openssl,然后又使用静态编译的方式configure --with-ssl-dir 指定对应的1.0.1t,但在make时提示错误,查看了一下openssh7.4最新说明,只指出不支持1.1.0版本的openssl,但没有说向下兼容的版本,继续试了1.1.0,果然不行,无法make成功,头上冒汗了,然后试了1.0.2u,编译成功,make install成功,终于有戏了,启动sshd成功。其中sshd是用于openssh的服务器端的监听程序,ssh是客户端连接其它ssh服务器的客户端程序。
在第一步时,使用ldd来查看 ldd /usr/sbin/sshd查看了一下sshd依赖的包:
[ ~]$ which sshd --查看sshd的位置
/usr/sbin/sshd
[~]$ ldd /usr/sbin/sshd --查看sshd依赖的动态库列表
linux-vdso.so.1 => (0x00007fff4c28b000)
libfipscheck.so.1 => /lib64/libfipscheck.so.1 (0x00007f1bbc81e000)
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1bbc613000)
libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f1bbc3f6000)
libpam.so.0 => /lib64/libpam.so.0 (0x00007f1bbc1e8000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f1bbbfe4000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f1bbbdc4000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f1bbb9e0000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f1bbb7dd000)
libz.so.1 => /lib64/libz.so.1 (0x00007f1bbb5c6000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1bbb3ad000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f1bbb176000)
可以看到sshd使用到的动态库及所处目录。 注意:configure时,首先会从环境变量LD_LIBERARY_PATH配置的路径中查找依据的动态库(linux下是.so文件);然后是/lib64,/usr/lib64目录,如果找不到,则通过/etc/ld.so.conf中配置的路径查找动态库文件。
然后使用可以使用strings /usr/sbin/sshd | grep OpenSSL 查看sshd使用的OpenSSL是什么版本的内容。