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/ #这个下哪个版本一定要看openssh的要求,太高或者太低的版本都不行
http://www.openssh.com/portable.html
在安装过程中可能会提示perl5没安装,所以我们可能还需要安装perl5
http://www.perl.org/get.html#unix_like
注意一定要安装telnet并开启,否则ssh在升级过程中一旦出现什么问题,你就等着去机房操作吧。我就在升级过程中遇到过ssh服务重启失败的情况,导致无法ssh连接,还好有telnet-server,telnet安装好之后也要测试能连接成功
下面正式开始操作
#OS:centos6.5
#注意事项:其中第一、二、四部分在需要升级ssh版本的服务器上执行,第三步在其他机器上通过telnet连接执行,第三步之后才能执行第四步
#第一部分:要求,telnet测试成功
#第二部分:要求,ssh -V显示版本已更新,可以另开一个窗口ssh连接上去,yum list等也都可以正常使用
#第三部分:要求,通过telnet连接,重启ssh服务
#第四部分:要求,撤销开放的telnet连接,升级工作完成
#以下代码区域的命令可以直接复制到脚本内执行,按照以下步骤来
#!/bin/bash
#第一部分:这一部分需要根据实际情况修改,版本不同要修改对应的文件名
#下载压缩包
#注意查看新版openssh的zlib和openssl版本要求 http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/INSTALL
yum install wget -y #安装wget才能下载压缩包啊,如果一下地址失效,可以直接访问主页寻找下载的地方
wget http://www.zlib.net/zlib-1.2.11.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz #注意最新版openssh不支持最新版本openssh
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz
wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
#解压
tar -zxvf zlib* #输入zlib后直接按tab键回车即可
tar -zxvf openssl*
tar -zxvf perl* #在安装openssl前,还需要先安装好perl5
tar -zxvf openssh*
#删除压缩包,否则我们后面不好针对文件操作
rm -rf *.tar.gz
#telnet服务
yum -y install telnet-server* #以下内容为新增完善的,将xinetd里的telnet服务启用
cat > /etc/xinetd.d/telnet <<EOF
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no #启用telnet
}
<<EOF mv /etc/securetty /etc/securetty.old #允许root用户通过telnet登录
service xinetd start #启动telnet服务
chkconfig xinetd on #使telnet服务开机启动,避免升级过程中服务器意外重启后无法远程登录系统
service iptables stop
chkconfig --del iptables
setenforce
sed -i 's/=enforcing/=disabled/' /etc/selinux/config
echo "telnet设置完毕,请开启一个终端测试"
echo "opensshversion=解压后的openssh文件夹名,因为我们后面要用到openssh+版本这一文件名,所以在这里先赋值留给后面,例如opensshversion=openssh-7.9p1"
接着新开一个ssh连接窗口(一定要能通过telnet成功连接上去才可以):
#测试telnet功能,新开一个连接终端
telnet [ip]
#!/bin/bash
#第二部分:
#正式开始安装
#zlib的更新
yum install gcc pam-devel zlib-devel -y #提前安装好依赖
#tar -zxvf zlib-1.2..tar.gz #输入zlib后直接按tab键回车即可
#cd zlib-1.2.
cd zlib*
./configure --prefix=/usr #检查依赖关系
make #编译
rpm -e --nodeps zlib #卸载zlib
make install #开始安装
echo '/usr/lib' >> /etc/ld.so.conf
ldconfig #执行完成后,看yum list是否可以正常使用,如果可以说明正常了 #准备安装openssl
find / -name openssl #不同版本会有不同的文件,对这些文件夹进行备份,如下
cp -r /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old
cp -r /usr/bin/openssl /usr/bin/openssl.old
cp -r /usr/lib64/openssl /usr/lib64/openssl.old cp /usr/lib64/libcrypto.so. /usr/lib64/libcrypto.so..old #注意这两个是库文件,也需要先备份一下
cp /usr/lib64/libssl.so. /usr/lib64/libssl.so..old
#rpm -qa|grep openssl #对返回的结果进行卸载,如下,不同版本也会是不同的文件
#rpm -e --nodeps openssl-1.0.1e-.el7.x86_6457
rpm -qa |grep openssl|xargs -i rpm -e --nodeps {} #该命令相当于直接执行以上两条命令
cd
#tar -zxvf openssl-1.0.2o.tar.gz
#cd openssl*
#./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #在执行这里的时候,会提示没有安装perl5,所以还需要安装perl5
#cd
#wget https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
#tar -zxvf perl-5.28..tar.gz #在安装openssl前,还需要先安装好perl5
cd perl*
./Configure -des -Dprefix=$HOME/localperl
make #这几步操作都很耗时
make test #这里可能提示失败
cd t
chmod +x ../cpan/File-Path/t/Path_root.t
../cpan/File-Path/t/Path_root.t
./perl -I../lib harness op/filetest.t #如果这里提示全部成功了,应该就没什么问题
cd ..
make install
perl -v #检测perl5是否安装成功
cd ..
cd openssl*
./config --prefix=/usr --openssldir=/etc/ssl --shared zlib #继续安装openssl
make
make test
make install
openssl version
cd
mv -f /usr/lib64/libcrypto.so..old /usr/lib64/libcrypto.so. #恢复原来的库文件,因为新安装的openssl没包含这两个库文件
mv -f /usr/lib64/libssl.so..old /usr/lib64/libssl.so.
openssl version #安装openssh
mv /etc/ssh /etc/ssh.old #开始准备安装openssh
#rpm -qa|grep openssh
#rpm -e --nodeps openssh-.3p1-.el6.x86_64
#rpm -e --nodeps openssh-server-.3p1-.el6.x86_64
rpm -qa |grep openssh|xargs -i rpm -e --nodeps {}
install -v -m700 -d /var/lib/sshd
chown -v root:sys /var/lib/sshd
groupadd -g sshd
useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u sshd
#tar -zxvf openssh-.9p1.tar.gz
cd openssh*
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-openssl-includes=/usr --with-privsep-path=/var/lib/sshd
make
make install 执行可能会提示WARNING: UNPROTECTED PRIVATE KEY FILE!原因是下面几个文件的权限问题,所以先执行以下命令
chmod /etc/ssh/ssh_host_rsa_key
chmod /etc/ssh/ssh_host_ecdsa_key
chmod /etc/ssh/ssh_host_ed25519_key
ssh -V
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id. /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-.9p1
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-.9p1
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
echo "PermitRootLogin yes" >>/etc/ssh/sshd_config #openssh7.9需要执行这个,默认配置文件禁止使用密码登录,不执行你就无法通过ssh登录
然后
#第三部分:
#通过telnet连接,重启ssh服务
service sshd restart
ssh -V #提示ssh为安装的最新版本,升级成功
#!/bin/bash
#第四部分:
#善后工作,取消telnet
mv /etc/securetty.old /etc/securetty
chkconfig xinetd off
service xinetd stop
附加知识:
#版本回退,如需还原之前的ssh配置信息,可直接删除升级后的配置信息,恢复备份。
rm -rf /etc/ssh
mv /etc/ssh.old /etc/ssh
有时候我们还会遇到openssh已经升过级的情况,而且安装方式还是编译安装的,很明显上面的方式就不合适了
所以我们的的rpm -qa|grep ssh卸载方式那里需要换一下
find / -name ssh 一般会返回旧版本的安装路径,里面包含旧版本号的就是旧openssh的安装路径
进入该路径执行cp -r /etc/ssh /etc/ssh.old 先做一个备份,再执行make uninstall就可以卸载了,其他步骤跟上面相似
备注:第二次修改(应该没有什么特别大的问题了)
centos7生产环境下openssh升级的更多相关文章
- Mysql迁移工具在生产环境下的使用
在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...
- centos7.6环境下编译安装tengine-2.2.2的编译安装
centos7.6环境下编译安装tengine-2.2.2的编译安装 .获取tengine2..2的源码包 http://tengine.taobao.org/download/tengine-2.2 ...
- CentOS7.3环境下源码安装httpd
CentOS7.3环境下源码安装httpd 本文在CentOS7.3下,源码安装apache服务httpd2.4. 1.下载好源码安装包 [root@localhost ~]#ll total 625 ...
- Python开发程序:生产环境下实时统计网站访问日志信息
日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...
- 生产环境下一定要开启mysqlbinlog
在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...
- mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...
- [原]生产环境下的nginx.conf配置文件(多虚拟主机)
[原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...
- 生产环境下JAVA进程高CPU占用故障排查
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...
- 一次生产环境下MongoDB备份还原数据
最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...
随机推荐
- 《HTTP 权威指南》笔记:第十六章&第十七章 国际化、内容协商与转码
<HTTP 权威指南>笔记:第十六章 国际化 客户端通过在请求报文中的 Accept-Language 首部和 Accept-Charset 首部来告知服务器:“我理解这些语言.”服务器通 ...
- Cookiecutter 使用
1.需求 ①make ②gcc 4.7以上 ③python2.7 应用于Linux/Unix 或者OS X 系统 2.安装 ①减压缩 ②git clone http://github.com/ad30 ...
- javascript里文字选中/选中文字
一.获取/清除选中的文字 //获取选中的文字 document.getElementById("get").onclick = function () { var txt = wi ...
- FTP:500 OOPS: failed to open vsftpd log file:/var/log/vsftpd.log
如下:从10.12.8.165 FTP 到 10.1.3.34,报failed to open vsftpd log[a4_csbdc@localhost ~]$ ftp 10.1.3.34Conn ...
- Web 安全漏洞之 XSS 攻击
什么是 XSS 攻击 XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.XSS是一种经常出现在 Web 应用程序中的计算机安全漏洞,是由于 ...
- Hive介绍及安装
Hive介绍及安装 介绍: Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性. 简单来说 ...
- 全面了解TCP/IP到HTTP
一.OSI参考模型 OSI(Open System Interconnect),即开放式系统互联.一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系结构标准定 ...
- numpy delete
手动安装 sudo rm -rf /usr/local/lib/python2.7/site-packages/numpy/ sudo rm -rf /usr/local/lib/python2.7/ ...
- ES5和ES6那些你必须知道的事儿(一)
ES5和ES6那些你必须知道的事儿 ES5新增的东西 一.数组方法 1.forEach 用途:遍历,循环 对于空数组不会执行回调函数 //用法 array.forEach( function( ...
- <airsim文档学习> Street View Image, Pose, and 3D Cities Dataset
原文地址: https://github.com/amir32002/3D_Street_View 说明:个人学习笔记,翻译整理自github/airsim. 简介 该存储库共享包含6DOF相机姿态 ...