centos7生产环境下openssh升级

由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞。推荐通过升级ssh版本修复漏洞

因为是生产环境,所以有很多问题需要注意。为了保险起见,在生产环境下做的任何升级之类的操作,最好先在测试环境中先测试一下,如果测试没问题再在生产环境中实施

系统环境:centos7.3

软件环境:

[root@localhost perl-5.28.0]# ssh -V

OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

[root@localhost perl-5.28.0]# rpm -qa|grep zlib
zlib-1.2.7-17.el7.x86_64

有一个问题需要注意一下,那就是版本兼容问题。升级的openssh需要依赖于openssl和zlib,不同的openssh版本

下载地址

http://www.zlib.net/

https://www.openssl.org/source/

http://www.openssh.com/portable.html

在安装过程中可能会提示perl5没安装,所以我们可能还需要安装perl5

http://www.perl.org/get.html#unix_like

先来看一下我的命令行执行历史(多余的命令我已删掉,工作目录为root家目录)

   22  yum install gcc pam-devel zlib-devel -y    #提前安装好依赖
   24  tar -zxvf  zlib-1.2.11.tar.gz   #先安装zlib,解压zlib
   26  cd zlib-1.2.11
   28  cat README         #养成好习惯,在安装软件前查看README
   29  ./configure --prefix=/usr    #检查依赖关系
   30  make        #编译
   31  rpm -qa|grep zlib       #查找安装包,并使用以下命令卸载
   32  rpm -e --nodeps zlib包名
   33  rpm -qa|grep zlib    #是否卸载完全
   35  make install    #开始安装
   37  ln -s /usr/lib/libz.so.1 libz.so.1.2.11 
   38  echo '/usr/lib' >> /etc/ld.so.conf
   39  ldconfig     #使生效
   40  rpm -qa|grep zlib    #查看zlib版本是否升级正常,遗憾的是我的还是旧版本,但是对于openssh的升级没有太大影响
   43  cd
   45  find / -name openssl    #准备安装openssl,对查找的文件进行备份
   46  cp /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old   
   47  cp -r /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old   
48 cp -r /usr/bin/openssl /usr/bin/openssl.old 49 cp -r /usr/lib64/openssl /usr/lib64/openssl.old 50 cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old 51 cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old 52 rpm -qa|grep openssl 53 rpm -e --nodeps openssl-libs-1.0.1e-60.el7.x86_64 54 rpm -e --nodeps openssl-1.0.1e-60.el7.x86_64 55 find / -name openssl 57 tar -zxvf openssl-1.0.2o.tar.gz 59 cd openssl-1.0.2o 61 ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #在执行这里的时候,会提示没有安装perl5,所以还需要安装perl5 62 cd 63 wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz 65 tar -zxvf perl-5.28.0.tar.gz #在安装openssl前,还需要先安装好perl5 67 cd perl-5.28.0 69 echo $HOME 70 ./Configure -des -Dprefix=$HOME/localperl 71 make 72 make test #这里可能提示失败 73 export LD_LIBRARY_PATH=`pwd` #这个命令貌似没事么用处,不执行问题应该也不大 74 make test 75 echo $LD_LIBRARY_PATH 78 cd t 83 ../cpan/File-Path/t/Path_root.t 86 ./perl -I../lib harness op/filetest.t #如果这里提示全部成功了,应该就没什么问题 87 cd .. 88 make install 89 perl -v #检测perl5是否安装成功92 cd .. 94 cd openssl-1.0.2o 96 ./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #继续安装openssl 97 make 98 make test 99 make install 100 openssl version 101 cd 103 mv /usr/lib64/libcrypto.so.10.old /usr/lib64/libcrypto.so.10 #恢复原来的库文件,因为新安装的openssl没包含这两个库文件 104 mv /usr/lib64/libssl.so.10.old /usr/lib64/libssl.so.10 105 openssl version 106 cp -r /etc/ssh /etc/ssh.old #开始准备安装openssh 107 rpm -qa|grep openssh 108 rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
109 rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64 110 rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64 111 rpm -qa|grep openssh 112 install -v -m700 -d /var/lib/sshd 113 chown -v root:sys /var/lib/sshd 114 groupadd -g 50 sshd 115 useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd 116 ls 117 tar -zxvf openssh-7.7p1.tar.gz 120 cd openssh-7.7p1 122 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd 123 make 124 make install #执行好可能会提示WARNING: UNPROTECTED PRIVATE KEY FILE!原因是下面几个文件的权限问题 125 ll /etc/ssh/ssh_host_rsa_key 128 chmod 600 /etc/ssh/ssh_host_rsa_key 130 chmod 600 /etc/ssh/ssh_host_ecdsa_key 132 chmod 600 /etc/ssh/ssh_host_ed25519_key 133 make install 138 ssh -V 139 install -v -m755 contrib/ssh-copy-id /usr/bin 140 install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 141 install -v -m755 -d /usr/share/doc/openssh-7.4p1 142 install -v -m644 INSTALL LICENCE OVERVIEW README* 143 install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.4p1 144 ssh -V 145 echo 'X11Forwarding yes' >> /etc/ssh/sshd_config 146 echo "PermitRootLogin yes" >> /etc/ssh/sshd_config 147 cp -p contrib/redhat/sshd.init /etc/init.d/sshd 148 chmod +x /etc/init.d/sshd 149 chkconfig --add sshd 150 chkconfig sshd on 151 chkconfig --list sshd 152 systemctl restart sshd 153 rpm -qa|grep zlib 154 ssh -V #提示ssh为安装的最新版本,升级成功

猜你喜欢

转载自www.cnblogs.com/biaopei/p/9267262.html