首页 > 代码库 > CentOS 5.8 升级openssh至6.7
CentOS 5.8 升级openssh至6.7
一、简介
最近公司一些生产系统服务器被机房扫描出openssh工具有漏洞,于是对线上的一些服务器中的openssh进行的升级,现将具体的过程写成博文,希望对大家有所帮助……
由于CentOS 5 官方所提供的yum源中最新版本的openssh也相对很老了,所以就只有两种办法了:
1、自制RPM包进行升级;
本来我最先考虑的是使用这种方法,因为在生产环境中缺乏一些编译所需要的软件包,如果都一一安装的话又会产生未知的安全隐患,但是当把RPM制作完成后,在测试机上测试的时候发现最新版本的openssh安装是对系统环境中glibc,openssl等的依赖关系过于复杂,所以最终还是放弃了。
2、源码编译安装
经过我在测试环境中实验,其实编译过程中需要安装的软件包也不是很多,而且过程简化了好多,本着“偷懒”的心理,就果断采取这种简便的方法了。
博文的实验过程是在办公区的内网测试机上进行的,公司生产系统中的一些东西不方便透漏,不过具体做法都是一样的。
二、实验环境及所使用到的软件包的版本号:
操作系统: CentOS 5.8 (x86_64)
使用到的软件包的版本
dropbear-2014.66.tar.bz2
https://matt.ucc.asn.au/dropbear/releases/dropbear-2014.66.tar.bz2
openssl-1.0.1j.tar.gz
https://www.openssl.org/source/openssl-1.0.1j.tar.gz
openssh-6.7p1.tar.gz
http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz
三、实验过程:
1、安装Dropbear代替OpenSSH
安装dropbear只是为了在升级过程中sshd启动不起来时,依然可以登录系统。当然可以用其他工具代替。
首先安装这次编译全过程中所需要的软件包:
[root@vm_102 ~]# yum -y install gcc zlib zlib-devel make pam pam-devel [root@vm_102 ~]# tar xf dropbear-2014.66.tar.bz2 [root@vm_102 ~]# cd dropbear-2014.66 [root@vm_102 dropbear-2014.66]# mkdir /opt/dropbear [root@vm_102 dropbear-2014.66]# ./configure --prefix=/opt/dropbear/ [root@vm_102 dropbear-2014.66]# make && make install [root@vm_102 dropbear-2014.66]# mkdir /etc/dropbear [root@vm_102 dropbear-2014.66]# cd [root@vm_102 ~]# /opt/dropbear/bin/dropbearkey -t rsa -s 2048 -f /etc/dropbear/dropbear_rsa_host_key Generating key, this may take a while... Public key portion is: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgK0lMSpdfF7DGBwn0LehoTcpMX8D1zGPKvxJHkeFpE8cRNYC67q9v1q12wqRvir7sHwp7YlNOeTTqx45cOCiykeDV1IzhBvBGOj0TW8N8hU6/z66S0QQdDTWhsgLqhcH5Gvtc79YaxM/il6l8KHmgFEKWaC+vcomuuKt1UqTdSZUxyUygEhrjT7s20UGqgHDcJg/C0YTPwIvPfbDiHfG8WczvsAfrXB41Q8U9vTVBZI72KzVVDcOKOBhXZQY0n0zzQOZ7JKCayeIipOKwZ0k26udn6L2ljoefhEeBVPo8SAvWBr2dW6JtimSROqRqyV1S3Wwc+xDsH+YrpYgbFqv9 root@vm_102 Fingerprint: md5 0a:61:e8:61:0c:4d:56:8b:74:29:06:b7:c4:37:b6:d3 [root@vm_102 ~]# /opt/dropbear/sbin/dropbear -p 1213 [root@vm_102 ~]# netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1900/portmap tcp 0 0 0.0.0.0:848 0.0.0.0:* LISTEN 1938/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2546/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2231/sendmail tcp 0 0 0.0.0.0:1213 0.0.0.0:* LISTEN 6712/dropbear tcp 0 0 :::22 :::* LISTEN 2546/sshd tcp 0 0 :::1213 :::* LISTEN 6712/dropbear udp 0 0 0.0.0.0:36031 0.0.0.0:* 2311/avahi-daemon udp 0 0 0.0.0.0:842 0.0.0.0:* 1938/rpc.statd udp 0 0 0.0.0.0:845 0.0.0.0:* 1938/rpc.statd udp 0 0 0.0.0.0:5353 0.0.0.0:* 2311/avahi-daemon udp 0 0 0.0.0.0:111 0.0.0.0:* 1900/portmap udp 0 0 :::59807 :::* 2311/avahi-daemon udp 0 0 :::5353 :::* 2311/avahi-daemon
这里可以看的出,dropbear已经侦听在TCP的1213端口了,需要注意的是:如果你的Linux主机定义了iptables的话,在更新openssh之前一定要先在防火墙中开放该端口。
然后我们可以在其它主机上通过ssh的方式连接1213端口实验一下。
[root@KVM_253 ~]# ssh -p1213 192.168.0.102 root@192.168.0.102‘s password: [root@vm_102 ~]#
剩下的工作就可以全部使用这个会话中完成了。
3、升级openssl至1.0.1j
首先查看一下当前的opensl的版本信息
[root@vm_102 ~]# openssl version OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
这里跟大家解释一个事情,之前在网上看到有很多博客说直接使用rpm或者yum的方式强制卸载掉openssl,但是这种做法是万万不可取的,因为Linux环境下很多很多的软件包对openssl有依赖关系,我第一次试验的时候就出现这种情况,当时手欠执行了一条命令:
rpm -e `rpm -qa | grep openssl` --allmatches --nodeps
然后悄无声息的被卸载掉几百个软件包,然后就没有然后了。
如果大家想看的话可以试下下面的操作:
[root@vm_102 ~]# yum remove openssl #切记这里不要加-y选项 Transaction Summary ========================================================================================= Remove 263 Package(s) Reinstall 0 Package(s) Downgrade 0 Package(s) Is this ok [y/N]: n Exiting on user Command Complete!
最后一定要选择n
那现在既然不能直接卸载,那我们就强制将openssl的程序文件覆盖掉就好了,如果你不清楚openssl的安装位置的话,我们使用whereis查看一下:
[root@vm_102 ~]# whereis openssl openssl: /usr/bin/openssl /usr/lib/openssl /usr/share/man/man1/openssl.1ssl.gz ### 这里可以看的出openssl安装在/usr目录下,下面我们可以开始编译安装了: [root@vm_102 ~]# tar xf openssl-1.0.1j.tar.gz [root@vm_102 ~]# cd openssl-1.0.1j [root@vm_102 openssl-1.0.1j]# ./config --prefix=/usr/ shared ### 与其他程序的源码包不同的是,openssl生成makefile的shell脚本是config这个文件 [root@vm_102 openssl-1.0.1j]# make [root@vm_102 openssl-1.0.1j]# make test [root@vm_102 openssl-1.0.1j]# make install ### 编译完成,我们再看下openssl的版本号: [root@vm_102 openssl-1.0.1j]# openssl version OpenSSL 1.0.1j 15 Oct 2014
4、升级openssh至6.7
首先先备份一下原本openssh的配置文件:
[root@vm_102 ~]# mv /etc/ssh/ /etc/ssh.bak [root@vm_102 ~]# rpm -qa | grep openssh openssh-clients-4.3p2-82.el5 openssh-4.3p2-82.el5 openssh-server-4.3p2-82.el5 [root@vm_102 ~]# rpm -e --nodeps `rpm -qa | grep openssh` ### 卸载原本的openssh [root@vm_102 ~]# rpm -qa | grep openssh [root@vm_102 ~]# [root@vm_102 ~]# tar xf openssh-6.7p1.tar.gz [root@vm_102 ~]# cd openssh-6.7p1 [root@vm_102 openssh-6.7p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords [root@vm_102 openssh-6.7p1]# make && make install /usr/sbin/sshd -t -f /etc/ssh/sshd_config [root@vm_102 openssh-6.7p1]# ssh -V OpenSSH_6.7p1, OpenSSL 1.0.1j 15 Oct 2014 ### 这里可以看的出来我们已经完成了openssh版本更新 [root@vm_102 openssh-6.7p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd ### 为openssh提供启动脚本 [root@vm_102 openssh-6.7p1]# /etc/init.d/sshd restart Stopping sshd: [FAILED] Starting sshd: [ OK ] [root@vm_102 openssh-6.7p1]# chkconfig --add sshd ### 将sshd添加进服务列表 [root@vm_102 openssh-6.7p1]# chkconfig --list sshd sshd 0:off1:off2:on3:on4:on5:on6:off ### 设置sshd为开机自启
这时我们可以从别的主机通过22端口连接到升级openssh后的主机了:
[root@KVM_253 ~]# ssh 192.168.0.102 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is f2:a7:d4:9d:5b:fb:d9:e7:f0:a5:84:95:65:97:21:c5. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:20 RSA host key for 192.168.0.102 has changed and you have requested strict checking. Host key verification failed. [root@KVM_253 ~]# vi /root/.ssh/known_hosts ### 在这个文件中将包含“192.168.0.102”这个IP地址的一行删除掉,保存。 [root@KVM_253 ~]# ssh 192.168.0.102 The authenticity of host ‘192.168.0.102 (192.168.0.102)‘ can‘t be established. RSA key fingerprint is f2:a7:d4:9d:5b:fb:d9:e7:f0:a5:84:95:65:97:21:c5. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘192.168.0.102‘ (RSA) to the list of known hosts. root@192.168.0.102‘s password: Last login: Fri Jan 9 21:46:03 2015 from 192.168.0.253 [root@vm_102 ~]#
之前安装的dropbear到此已经完成了她的使命,可以将该进程kill掉,然后将程序删除了:
[root@vm_102 ~]# killall dropbear [root@vm_102 ~]# rm -rf /etc/dropbear/ /opt/dropbear/ [root@vm_102 ~]# netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1900/portmap tcp 0 0 0.0.0.0:848 0.0.0.0:* LISTEN 1938/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 21792/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2231/sendmail tcp 0 0 :::22 :::* LISTEN 21792/sshd udp 0 0 0.0.0.0:36031 0.0.0.0:* 2311/avahi-daemon udp 0 0 0.0.0.0:842 0.0.0.0:* 1938/rpc.statd udp 0 0 0.0.0.0:845 0.0.0.0:* 1938/rpc.statd udp 0 0 0.0.0.0:5353 0.0.0.0:* 2311/avahi-daemon udp 0 0 0.0.0.0:111 0.0.0.0:* 1900/portmap udp 0 0 :::59807 :::* 2311/avahi-daemon udp 0 0 :::5353 :::* 2311/avahi-daemon
本文出自 “红楼遗梦” 博客,请务必保留此出处http://leidongya.blog.51cto.com/7375845/1601441
CentOS 5.8 升级openssh至6.7