centos6系列系统升级openssl和openssh

简介:

目标:升级目前操作系统的openssh到7.6p1版,升级openssl到1.0.2k版,以提升系统安全性。

当前服务器系统环境:操作系统CentOS 6.8 x64,openssl和openssh都是yum源里最新的版本。


参考文章 

1、《linux /centos 中OpenSSL升级方法详解》www.111cn.net/sys/CentOS/61326.htm

2、《升级openssl和openssh》www.cnblogs.com/doomsword/p/3654131.html

3、《OpenSSH平滑升级到6.1操作步骤》www.linuxidc.com/Linux/2014-12/110467.htm

4、《使用最新openssl 1.0.1h 编译安装 openssh 6.6p1》zjwsk.blog.163.com/blog/static/598306132014313112351


较新版本dropbear:https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2

较新版本openssl:https://www.openssl.org/source/openssl-1.0.2k.tar.gz

较新版本openssh:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz

线上服务器可以先用dropbear替代一下ssh以免升级出现错误不能访问,记得防火墙里要放行dropbear所使用的端口。

mkdir /root/tmp && cd /root/tmp && wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2016.74.tar.bz2 && wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz && wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6p1.tar.gz 


简单以5022为dropbear的端口为例,如下操作:

1)下载dropbear源码包,解压

2) ./configure && make && make install

3)生成密钥

mkdir /etc/dropbear && /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key && /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key

4)启动之,dropbear -R -p 5022,这就使用5022端口建立好通道了,iptables里放行一下5022端口就可以测试连接了。推荐先设置成开机自启动,以防openssh升级出现问题连不上了,反正升级成功以后随时都可以去掉并且卸载dropbear。

echo "/usr/local/sbin/dropbear -R -p 5022" >>/etc/rc.local


一些心得:

1、虽然openssl有更新的版本,但是在CentOS 6系列操作系统里,可能有不少相关的软件需要使用源码装高版本的,yum源里的太低,比较麻烦,所以就使用了1.0.2k版本的openssl,在编译前先yum install -y gcc gcc-c++ glibc openssl-devel perl pam pam-devel然后我执行./config --prefix=/usr/local/ssl_102k --openssldir=/usr/local/ssl_102k zlib shared ,其中prefix是库文件存放路径,openssldir是配置文件存放路径,不需要zlib的可以写no-zlib。make后,执行一下make test看到最后停下来,有pass和路径,说明make通过了,再make install。不用考虑卸载旧版的openssl,比如执行rpm -e `rpm -qa |grep openssl` --nodeps定会让你后悔不已!除非你能解决所有的依赖关系(yum等重要工具都是依赖openssl的)不要说我没提醒你哦。

CentOS 5系列甚至4系列,要升级openssl难度会更大。所有依赖的软件都需要源码升级才能正常安装openssl的新版本。比如perl需要新版本,perl-devel需要装的,perl-Test-Simple,还有很多其他的依赖都需要更新,太麻烦了。

make install后,备份旧可执行文件并创建新链接。

要做的动作有重命名原来的openssl执行文件、重命名原来的openssl目录、将新安装的openssl命令创建快捷方式到/usr/bin/openssl、将新安装的openssl目录创建快捷方式到/usr/include/openssl、在/etc/ld.so.conf文件中加入openssl库文件的搜索路径以及修改系统自带的openssl库文件,如/usr/local/lib64/libssl.so(根据机器环境而定,32位系统,就把lib64换成lib)软链到升级后的libssl.so。下面这串儿走起!


mv /usr/bin/openssl /usr/bin/openssl.old && mv /usr/include/openssl /usr/include/openssl.old && ln -s /usr/local/ssl_102k/bin/openssl /usr/bin/openssl && ln -s /usr/local/ssl_102k/include/openssl  /usr/include/openssl && echo "/usr/local/ssl_102k/lib" >> /etc/ld.so.conf && ln -s /usr/local/ssl_102k/lib/libssl.so /usr/local/lib64/libssl.so


加载新ssl库文件并查看之

ldconfig -v |grep ssl

查看新ssl版本

openssl version

2、编译openssh。我这样编译的

./configure --prefix=/usr/local/ssh_76p1 --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-ssl-dir=/usr/local/ssl_102k --without-openssl-header-check,否则在不卸载旧openssl的情况下可能会提示openssl的header和library不匹配或者找不到之类的问题。make以后,走下面这串儿,即先备份再make install。

cd /usr/bin ; rm -fr slogin ; mv ssh ssh.old ; mv scp scp.old ; mv sftp sftp.old ; mv ssh-add ssh-add.old ; mv ssh-agent ssh-agent.old ; mv ssh-keygen ssh-keygen.old ; mv ssh-keyscan ssh-keyscan.old ; mv /etc/ssh /etc/ssh.old ; mv /usr/sbin/sshd /usr/sbin/sshd.old ; mv /etc/init.d/sshd /etc/init.d/sshd.old ; cd - && make install


不要卸载老版本的openssh,那可能导致后面/etc/init.d/sshd restart出问题。如果非要卸载,那就用rpm -e `rpm -qa |grep openssh`吧,但是有可能存在依赖关系,挺麻烦的。


3、可执行文件就位

cp /usr/local/ssh_76p1/bin/* /usr/bin/ && cp /usr/local/ssh_76p1/sbin/sshd /usr/sbin/

4、添加服务并设置开机自启sshd服务

进入openssh安装包解压后的目录,cp contrib/redhat/sshd.init /etc/init.d/sshd && chkconfig --add sshd

5、openssh 7.x默认不支持version 1.x协议,所以vim /etc/init.d/sshd,找到/sbin/restorecon /etc/ssh/ssh_host_key.pub,注释掉吧。这个pub文件是不存在的。否则启动服务时候会出现这个报错,/sbin/restorecon:  lstat(/etc/ssh/ssh_host_key.pub) failed:  No such file or directory。

6、配置文件,7.x跟6.x不同。请vim /etc/ssh/sshd_config,找到#PermitRootLogin prohibit-password,改为PermitRootLogin yes。再找到PasswordAuthentication yes去掉前面的注释。不改就不能用密码登root了。

7、openssh升级完毕了,无论执行/etc/init.d/sshd start|restart|reload,哪个都有风险,可能断开当前连接,然后就连不上了。可以成功连接dropbear的情况下,可以试试service sshd restart

8、sshd服务重启成功了,那恭喜你,已经升级成功;服务起不来了,ssh连接断开了,那就用dropbear连吧,上去再整整。实在不行,确定dropbear已在/etc/rc.local里了,就重启系统试试。



本文转自 朱科强 51CTO博客,原文链接:http://blog.51cto.com/zhukeqiang/1650914,如需转载请自行联系原作者

相关文章
|
关系型数据库 MySQL Linux
Centos7升级openssl,超详细
Centos7升级openssl,超详细
1766 0
CentOS7编译安装openssl1.1.1
centos7默认提供的openssl版本是1.0.2的,想要升级openssl版本则需要手动进行编译
|
8月前
|
Linux
阿里云服务器CentOS升级openssl
阿里云服务器 CentOS6默认openssl版本是2013年发布的1.0.1,这里,我们需要升级到2021发布的openssl 1.1.1k版本。
294 0
|
安全 算法 中间件
CentOS7下rpm包方式升级openssl到安全版本1.1.1n
CentOS7下rpm包方式升级openssl到安全版本1.1.1n
2458 0
CentOS7下rpm包方式升级openssl到安全版本1.1.1n
|
Linux
CentOS7下升级OpenSSL和OpenSSH
CentOS7下升级OpenSSL和OpenSSH
393 0
CentOS7下升级OpenSSL和OpenSSH
|
网络安全 Python Linux
|
Linux
【linux】CentOS编译程序报错 修复 ./Modules/_ssl.c:64:25: 致命错误:openssl/rsa.h:没有那个文件或目录
如果你在编译时遇到这个错误,这可能是下面的原因:你尝试编译的程序使用OpenSSL,但是需要和OpenSSL链接的文件(库和头文件)在你Linux平台上缺少。 所以在CentOS下, 退到根路径,【需要在root用户下】然后输入: yum install openssl-devel 安装完成后,重新编译自己的程序即可。
2635 0

热门文章

最新文章