目前,不少 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 命令,顯示已經是新版本了。