Red Hat 6.2 升级openSSH(GCC和openSSL)
的有关信息介绍如下:公司的SFTP实体机(RedHat 6.2 x86_64)被绿盟扫描出openssh工具有漏洞,需要进行升级,以下是升级过程
首先安装GCC编译器
把RHEL6.2镜像的光盘或U盘挂载到某个目录,如:/mnt
在镜像光盘Packages文件夹中,按顺序安装如下文件(#rpm -ivh
kernel-headers-2.6.32-220.el6.x86_64.rpm
compat-glibc-headers-2.5-46.2.x86_64.rpm
compat-glibc-2.5-46.2.x86_64.rpm
compat-libstdc++-33-3.2.3-69-el6.x86_64.rpm
compat-libf2c-34-3.4.6-19.el6.x86_64.rpm
libgcc-4.4.6-3.el6.x86_64.rpm
cpp-4.4.6-3.el6.x86_64.rpm
glibc-headers-2.12-1.47.el6.x86_64.rpm
glibc-devel-2.12-1.47.el6.x86_64.rpm
libgomp-4.4.6-3.el6.x86_64.rpm
libstdc++-devel-4.4.6-3.el6.x86_64.rpm
cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
ppl-0.10.2-11.el6.x86_64.rpm
gcc-4.4.6-3.el6.x86_64.rpm
然后运行命令:rpm -qa |grep gcc
出现:
gcc-4.4.6-3.el6.x86_64
libgcc-4.4.6-3.el6.x86_64
compat-libgcc-296-2.96-138
说明已经安装成功!
最后要卸载iso镜像文件
#unmount /mnt
查看当前的ssh服务版本并检测旧的安装包
#ssh -V
#rpm -qa|grep openssl(openssh)
查看目前ssh服务状态
#service sshd status
关闭ssh服务
#service sshd stop
备份ssh配置文件
#cp -a/etc/ssh /etc/ssh.bak
卸载openssh的rpm安装包。此处未卸载ssl安装包,因为openSSL只是一个协议,可以升级后修改配置文件完成。#rpm -e openssh****
卸载注意因为某些服务的依赖性可能系统会拒绝卸载,此时需要在后面加上—nodeps命令,即忽略依赖性。这里顺序是先卸载clients-server-askpass-openssh
此时再查ssh版本和安装包
#ssh -V
# rpm -qa|grep openssh
说明已卸载完毕
开始安装openssh
安装顺序是zlib库→openssl→openssh
Zlib库安装
解压缩安装包
#tar -xzvf zlib-1.2.8.tar.gz
#cd zlib-1.2.8
#./configure --prefix=/usr/local配置安装路径检测环境
无报错,开始安装
#make && make install无报错,安装完毕
openSSL升级
卸载旧版本 OpenSSL,所谓卸载其实是移除旧的协议,注意:操作之前应做好备份。
#cp -a /etc/ssl /etc/ssl.bak
#rm -rf /etc/ssl
编译与安装 OpenSSL
prefix 是安装目录,openssldir 是配置文件目录,另外安装两次,shared 作用是生成动态连接库。
#tar -xzvf openssl-1.0.2j.tar.gz
#cd openssl-1.0.2j/
#./config --prefix=/usr/local --openssldir=/usr/local/ssl
安装完毕,无报错。
#make && make install
生成链接库
#./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
#make clean(清除上一次编译缓存)
#make && make install
无报错安装完毕
移除并备份旧的配置文件
#mv /usr/bin/openssl /usr/bin/openssl.OFF
移除并备份旧的头文件*
mv /usr/include/openssl /usr/include/openssl.OFF
*部分redhat系统不存在这个文件夹,可以忽略
重新链接新的openSSL文件和头文件
ln –s /usr/local/bin/openssl /usr/bin/openssl
ln –s /usr/local/include/openssl /usr/include/openssl
配置库文件搜索路径,也就是告诉系统访问的路径。
#echo “/usr/local/lib” >> /etc/ld.so.conf
#echo “/usr/local/lib64” >> /etc/ld.so.conf
#ldconfig –v 刷新一下系统所有的配置文件
无报错
再验证一下openSSL的版本号,确认升级成功
源码安装openSSH
#tar xzvf openssh-6.9p1.tar.gz
#cd openssh-6.9p1
#./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --mandir=/usr/share/man --with-zlib=/usr/local/zlib
无报错,下一步安装
# make && make install
修改相关配置文件
# cp -p /root/openssh-6.9p1/contrib/redhat/sshd.init /etc/init.d/sshd (拷贝redhat版本的配置文件)
# chmod u+x /etc/init.d/sshd
# chkconfig --add sshd 开启sshd服务
#cp /etc/ssh/sshd_config /etc/ssh/sshd_config(bak) -a
#cp /root/openssh-6.9p1/sshd_config /etc/ssh/sshd_config 提示是否覆盖,复制后选择覆盖
编辑sshd_config文件,将subsystem sftp 路径变更为实际路径。(i=插入,:wq=保存退出)
# cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
#cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
# service sshd restart 重启服务
再次查看sshd服务的版本