作者:魏文弟

目前,很多 Linux 发行版本中集成的 SSH 软件版本都比较老,存在一些漏洞和安全隐患,因而升级 SSH 服务成为 Linux 系统安全中非常重要的一个环节。下面就根据近期的一次实例来讲述如何升级SSH 服务。测试于:Red Hat Enterprise 5.6


目前,很多 Linux 发行版本中集成的 SSH 软件版本都比较老,存在一些漏洞和安全隐患,因而升级 SSH 服务成为 Linux 系统安全中非常重要的一个环节。下面就根据近期的一次实例来讲述如何升级SSH 服务。


SSH 有许多标准,通常 Linux 中(Redhat, CentOS, SuSE 等)使用的是开源的OpenSSH,所以我这里也是对OpenSHH 进行升级。在升级 OpenSSH 之前,需要升级系统中的 OpenSSL (OpenSSL 可以为 OpenSSH 提供加密传输支持,是 OpenSSH 的一个中间件)版本和 Zlib (提供压缩传输支持)版本,以达到更好的安全性。


在开始升级前一定要确认系统中安装了GCC 编译器!rpm -qa |grep gcc ,如果没有显示gcc的包,就yum -y install gcc ,注意: redhat6的yum源在redhat5系统里是不能用的,不过可以用redhat6的repodata生成redhat5的repodata.xml 文件。


一、升级 Zlib
1、下载最新版本 Zlib
Zlib 官方网站:http://www.zlib.net/
目前最新版本的 Zlib 是 zlib-1.2.8.tar.gz


# cd /usr/local/src
# wget -c http://www.zlib.net/zlib-1.2.8.tar.gz
2、编译安装 Zlib


# tar xzvf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure --prefix=/usr/local/zlib
# make
# make install
这样,就把 zlib 编译安装在 /usr/local/zilib 中了。


二、升级 OpenSSL
1、下载最新版本 OpenSSL
OpenSSL 的官方网站:http://www.openssl.org
目前最新版的 OpenSSL 是 openssl-1.0.1e


# cd /usr/local/src
# wget -c http://www.openssl.org/source/openssl-1.0.1e.tar.gz
2、编译安装 OpenSSL


# tar xzvf openssl-1.0.1e.tar.gz
# cd openssl-1.0.1e
# ./config --prefix=/usr/local/openssl
# make
# make test 
# make install
make test (这一步很重要哦!是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续,可能最终导致 SSH 不能使用,后果很严重的!)


三、升级 OpenSSH
1、下载最新版本 OpenSSH
OpenSSH 的官方网站:http://www.openssh.com
目前最新版的 OpenSSH 是 openssh-6.3p1


# cd /usr/local/src
# wget -c http://openbsd.org.ar/pub/OpenBSD/OpenSSH/portable/
2、编译安装 OpenSSH


# tar xzvf openssh-6.3p1.tar.gz
# cd openssh-6.3p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords
(注意,如果 configure 时提示 PAM 有错误,一般是因为系统中没有安装 pam-devel RPM 包,找到安装光盘,安装 pam-devel 就可以解决了,rpm -ivh pam-devel版本号)


# make
# make install
 这样就完成了升级 SSH 的工作,在升级完成后,我们还需要修改一下 OpenSSH 的配置文件来进一步提升安全性。通过以上步骤完成的升级工作,OpenSSH 的配置文件在 /etc/ssh 下,其中 SSH Server 的配置文件是 sshd_config。


# vi /etc/ssh/sshd_config
找到:
#Protocol 2,1修改为:
Protocol 2这样就禁用了 ssh v1 协议,只使用更安全的 ssh v2 协议。
找到:
X11Forwarding yes 修改为:
X11Forwarding no  (禁用 X11 转发。)
修改后保存退出。
生成ssh服务管理脚本:
  进入ssh解压目录
# cd openssh-6.3p1
#cd contrib/redhat 
#cp sshd.init /etc/init.d/sshd
#chmod +x /etc/init.d/sshd (直接覆盖,权限会继承)
#chkconfig --list |grep sshd  检查ssh服务是否开机启动,如果没有,执行下面命令
#chkconfig --add sshd


最后,启动 SSH 服务使修改生效:


# /etc/init.d/sshd restart 或者 service sshd restart
重启后确认一下当前的 OpenSSH 和 OpenSSL 是否为新版:


# ssh -V
其实在我编译安装完成ssh后,执行ssh -V 命令,显示已是新版本了。