当前位置: 首页 > Linux

升级OpenSSH7.9

时间:2023-04-06 11:51:46 Linux

背景企业信息安全管理日趋完善。部分软件项目须经过系统定级、备案、第三方等级保护评估,出具《信息安全等级保护测评报告》才能满足验收条件。一般称为“网络安全评估”。评估中肯定会发现漏洞和隐患,软件厂商或企业运维团队需要对发现的问题清单一一进行整改和加强。一般来说,第三方安全厂商会通过漏洞扫描和入侵检测,发布一份详细的问题清单,每份清单也会有相应的整改措施或加固建议。那么,我们就按照清单一一解决。都是套路,一点惊喜都没有——昨天,我因为OpenSSH弄的满头大汗。列表中有一项:危险级别:中等风险漏洞名称:OpenSSH用户枚举漏洞(CVE-2018-15919)详细描述:OpenSSH7.8及更早版本中,auth-gss2.c文件存在安全漏洞.远程攻击者可以利用此漏洞检测指定用户的存在。解决方法:厂商升级:新版本OpenSSH-7.9已修复此安全问题,请到厂商主页下载。链接:http://www.openssh.com/http://www.openssh.com/portable.html目标服务器为CentOS7.4。一开始我以为万能的RPM包加上yuminstall--downloadonly--downloaddir=和yumlocalinstall就可以轻松搞定了……但是……最新的RPM是7.4p1,确实不符合要求[root@localhost~]#cat/etc/centos-releaseCentOSLinuxrelease7.4.1708(Core)[root@localhost~]#yuminfoopensshLoadedplugins:fastestmirror,langpacksLoadingmirrorspeedsfromcachedhostfile*base:mirrors.aliyun.com*extras:mirrors.cqu.edu.cn*updates:mirrors.aliyun.comAvailablePackagesName:opensshArch:x86_64Version:7.4p1目标机器与互联网隔离。如果没有RPM包,只能从源码编译。如果编译遇到文件丢失等问题,就会很麻烦。多方查找7.9p1+CentOS7的RPM资源,均无果,只好自己编译。试试源码编译#卸载7.4yumuninstallopenssh#安装编译需要的头文件和库yuminstallzlib-develyuminstallopenssl-develyuminstallpam-devel#下载源码包wgethttps://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz#解压tarzxvfopenssh-7.9p1.tar.gz#切目录cdopenssh-7.9p1#配置./configure--prefix=/usr--sysconfdir=/etc/ssh--with-pam#compilemake#installmakeinstall#copyssh-copy-idinstall-v-m755contrib/ssh-copy-id/usr/bin#复制帮助文件install-v-m644contrib/ssh-copy-id.1/usr/share/man/man1#创建文档目录install-v-m755-d/usr/share/doc/openssh-7.9p1#复制文档install-v-m644INSTALLLICENSEOVERVIEWREADME*/usr/share/doc/openssh-7.9p1#允许root登录(7.9更改了PermitRootLogin的默认值)echo"PermitRootLoginyes">>/etc/ssh/sshd_config#UsePAMecho"UserPAMyes">>/etc/ssh/sshd_config#注册服务cp-pcontrib/redhat/sshd.init/etc/init.d/sshdchmod+x/etc/init.d/sshd#将sshd加入chkconfig管理chkconfig--addsshd#setstartupchkconfigsshdon#检查启动itemschkconfig--listsshd#验证版本信息ssh-V#重启sshserviceservicesshdrestart如果一切顺利,客户端可以通过ssh登录到服务器可能出现的错误及解决方法在安装过程中遇到了很多不同的错误。总结这篇短文的时候才发现原来那些都是弯路。ssh连接时出现错误:errorCouldnotgetshadowinformationforservicestartedsuccessfully,andtheuserpasswordiscorrect,buttheconnectioncannotestablished,可能是UsePAM和SELinux的问题。客户端登录时,即使输入了正确的密码,仍然提示:[user@localhost~]#sshuser@192.168.171.128user@192.168.171.128'spassword:Permissiondenied,请重试。查看服务器日志(/var/log/messages),发现:error:CouldnotgetshadowinformationforFailedpasswordforfromportssh2这可能是因为没有启用UsePAM,check/etc/ssh/sshd_config:#勾选UsePAM确认PAM是否开启#UseAPMnoUsePAMyes修改配置后重启sshd服务,服务就会恢复。如果编译时缺少--with-pam参数,UsePAMyes会导致服务报错。如果不想修改PAM选项,也可以关闭Selinux:#暂时关闭setenforce0#永久关闭vi/etc/selinux/config#然后把SELINUX=enforcing改成SELINUX=disabledUsePAMyes,不管selinux是不是启用或禁用,都不会触发Couldnotgetshadowinformation错误。sshdstartuperror:BadSSH2cipherspec'...'可能是升级了openssl但是没有更新sshd_config配置,或者配置错误导致不一致。可以查询目前支持的加密方式:[user@localhost~]#ssh-Qcipher3des-cbcaes128-cbcaes192-cbcaes256-cbcrijndael-cbc@lysator.liu.seaes128-ctraes192-ctraes256-ctraes128-gcm@openssh.comaes256-gcm@openssh.comchacha20-poly1305@openssh.com也可以使用paste-s-d直接拼接查询结果写入配置文件:echo'Ciphers'`ssh-Qcipher|粘贴-d,-s`>>/etc/ssh/sshd_configsshd启动错误:BadSSH2macspec'...'querysupportedmessagedigestalgorithm:[user@localhost~]#ssh-Qmachmac-sha1hmac-sha1-96hmac-sha2-256hmac-sha2-512hmac-md5hmac-md5-96umac-64@openssh.comumac-128@openssh.comhmac-sha1-etm@openssh.comhmac-sha1-96-etm@openssh.comhmac-sha2-256-etm@openssh.comhmac-sha2-也可以使用paste-s-d,直接将查询结果拼接起来写入配置文件:echo'MACs'`ssh-Qmac|粘贴-d,-s`>>/etc/ssh/sshd_configsshd启动错误:BadSSH2KexAlgorithms'...'querysupportAlgorithm:[user@localhost~]#ssh-Qkexdiffie-hellman-group1-sha1diffie-hellman-group14-sha1diffie-hellman-group14-sha256diffie-hellman-group16-sha512diffie-hellman-group18-sha512diffie-hellman-group-exchange-sha1diffie-hellman-group-exchange-sha256ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521curve25519-sha2566curve.org也可以使用paste-s-d直接拼接查询结果写入配置文件:echo'KexAlgorithms'`ssh-Qkex|paste-d,-s`>>/etc/ssh/sshd_config错误,服务器日志必须是首选检查点您可以使用sshd-d启用调试模式来解决问题。您可以使用ssh-vvv更快地发现问题。参考https://help.aliyun.com/knowl...