目前,不少 Linux 发行版本中集成的 SSH 软件版本都比较老,存在一些漏洞和安全隐患,于是升级 SSH 服务成为 Linux 系统安全中很是重要的一个环节。下面就根据近期的一次实例来说述如何升级SSH 服务。linux
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 文件。ssh
1、升级 Zlib
一、下载最新版本 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测试
二、编译安装 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 中了。加密
2、升级 OpenSSL
一、下载最新版本 OpenSSL
OpenSSL 的官方网站:http://www.openssl.org
目前最新版的 OpenSSL 是 openssl-1.0.2c.net
# cd /usr/local/src
# wget -c http://www.openssl.org/source/openssl-1.0.1e.tar.gzrest
二、编译安装 OpenSSL
# tar xzvf openssl-1.0.2c.tar.gzxml
# cd openssl-1.0.2c中间件
# ./config --prefix=/usr/local/openssl
# make
# make test
# make install
make test (这一步很重要哦!是进行 SSL 加密协议的完整测试,若是出现错误就要必定先找出哪里的缘由,不然一味继续,可能最终致使 SSH 不能使用,后果很严重的!)
3、升级 OpenSSH
一、下载最新版本 OpenSSH
OpenSSH 的官方网站:http://www.openssh.com
目前最新版的 OpenSSH 是 openssh-6.8p1
# cd /usr/local/src
# wget -c http://openbsd.org.ar/pub/OpenBSD/OpenSSH/portable/
二、编译安装 OpenSSH
# tar xzvf openssh-6.8p1.tar.gz
# cd openssh-6.8p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --with-md5-passwords
若是configure提示未安装openssl-devel和pam
须要执行如下命令:
rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm
rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm
rpm -ivh libselinux-devel-2.0.94-5.3.el6.x86_64.rpm
rpm -ivh libcom_err-devel-1.41.12-14.el6.x86_64.rpm
rpm -ivh keyutils-libs-devel-1.4-4.el6.x86_64.rpm
rpm -ivh krb5-devel-1.10.3-10.el6.x86_64.rpm
rpm -ivh openssl-devel-1.0.0-27.el6.x86_64.rpm
# 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 /usr/local/src/openssh-6.8p1/contrib/redhat/
#cp sshd.init /etc/init.d/sshd
#chmod +x /etc/init.d/sshd (直接覆盖,权限会继承)
#chkconfig --list |grep sshd 检查ssh服务是否开机启动,若是没有,执行下面命令
#chkconfig --add sshd
退出机器后,使用root用户没法ssh登录,我用普通用户ssh登陆后,
一、修改SSHD服务的配置文件/etc/ssh/sshd_config
将#PermitRootLogin no 改成PermitRootLogin yes
二、重启sshd服务使配置生效
/etc/rc.d/init.d/sshd restart
最后,启动 SSH 服务使修改生效:
# /etc/init.d/sshd restart 或者 service sshd restart
重启后确认一下当前的 OpenSSH 和 OpenSSL 是否为新版:
# ssh -V
其实在我编译安装完成ssh后,执行ssh -V 命令,显示已经是新版本了。