放在最前面:鑒於網上爬蟲猖獗,博客被盜時有發生,這里需要來個鏈接,大家請認准來自博客園的Scoter:http://www.cnblogs.com/scoter2008,本文將持續更新
最近綠盟給掃描出了幾個漏洞,都是關於openssh的,於是仔細看了一下,即使是最新版的CentOS 7.2也還在用openssh 6.6.1p1,yum update更新無濟於事,那么只有我們自己動手了
CentOS 7.2更新過程
1、查看一下openssh的版本信息
[root@localhost ~]# ssh -V OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、備份文件,備份一下/etc/ssh/sshd_config文件,安裝完成后可以參考
[root@localhost ssh]# mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
3、升級的思路是將新版openssh制作成rpm包,然后安裝更新(這是嘗試了幾種方法后,感覺最好的一種),這里先安裝編譯所需工具
yum groupinstall -y Development tools yum install -y pam-devel rpm-build rpmdevtools zlib-devel krb5-devel tcp_wrappers tcp_wrappers-devel tcp_wrappers-libs libX11-devel xmkmf libXt-devel wget openssl openssl-devel
4、配置RPM編譯環境
cd ~ mkdir rpmbuild cd rpmbuild mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
5、生成openssh的RPM安裝包
5.1、下載源碼包
cd ~/rpmbuild/SOURCES/ wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz wget http://ftp.riken.jp/Linux/momonga/6/Everything/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz
5.2、配置SPEC文件
cd ~/rpmbuild/SPECS/ tar zxf ../SOURCES/openssh-7.3p1.tar.gz openssh-7.3p1/contrib/redhat/openssh.spec mv openssh-7.3p1/contrib/redhat/openssh.spec openssh-7.3p1.spec rm -fr openssh-7.3p1 sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh-7.3p1.spec sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh-7.3p1.spec sed -i -e "s/BuildPreReq/BuildRequires/g" openssh-7.3p1.spec
5.3、編譯生成RPM
cd ~/rpmbuild/SPECS/ rpmbuild -bb openssh-7.3p1.spec
5.4、查看生成包
cd ~/rpmbuild/RPMS/x86_64 ls
5.5、安裝生成的RPM包
yum install openssh-7.3p1-1.x86_64.rpm openssh-clients-7.3p1-1.x86_64.rpm openssh-server-7.3p1-1.x86_64.rpm
6、修改配置文件,可以和先前備份的文件對比,按順序來,不然行號會對不上(這個修改按你的需求來,這里是參照舊的sshd_config.bak進行的設定)
cp /etc/ssh/sshd_config.rpmnew /etc/ssh/sshd_config 上面這步不是必須,安裝RPM包的時候會有提示,如果沒有生成這個sshd_config.rpmnew文件,可以跳過上面這步 sed -i "37a\SyslogFacility AUTHPRIV" /etc/ssh/sshd_config sed -i "44a\PermitRootLogin yes" /etc/ssh/sshd_config sed -i "77a\ChallengeResponseAuthentication no" /etc/ssh/sshd_config sed -i "88a\GSSAPICleanupCredentials no" /etc/ssh/sshd_config sed -i "112a\UsePrivilegeSeparation sandbox" /etc/ssh/sshd_config
7、更改密鑰權限,所有密鑰權限必須為600,密鑰格式為ssh_host_XXX_key,全部在/etc/ssh目錄下
cd /etc/ssh chmod 600 ssh_host_XXX_key
8、重啟sshd服務
/etc/init.d/sshd restart
9、嘗試用CRT或Xshell連接,能連上就沒問題了
10、最后檢查一下開機自啟,因為沒有動過sshd.service自啟腳本,所有應該沒有問題
11、看一下更新后的成果
[root@localhost ~]# ssh -V OpenSSH_7.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Ubuntu 14.04更新過程
因為覺得sudo用着麻煩,直接修改了sshd_config文件,直接用root用戶登錄了系統,以下操作都是在root用戶下進行的
因為Ubuntu剛接觸不久,玩的不怎么6,這里采用編譯安裝,如果有更簡單的方法,敬請大神告知
1、查看openssh的版本
root@ubuntu:~# ssh -V OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7, OpenSSL 1.0.1f 6 Jan 2014
2、安裝基礎編譯環境
apt-get install build-essential
3、更新openssl,這個需要更新,不更新在openssh的configure階段會提示找不到頭文件
apt-get install openssl
4、卸掉舊的openssh
apt-get remove openssh-* 他會列一堆東西出來,但實際只會移除4個包 openssh-server openssh-client openssh-sftp openssh-import-id
5、編譯安裝zlib庫,安裝包建議用瀏覽器下載好再rz到服務器,wget很慢
wget http://zlib.net/zlib-1.2.8.tar.gz tar zxf zlib-1.2.8.tar.gz cd zlib-1.2.8 ./configure make make install
6、更新ssl庫
apt-get install libssl-dev
7、編譯安裝openssh(主角登場,此處應該有掌聲)
wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz tar zxf openssh-7.3p1.tar.gz cd openssh-7.3p1 ./configure make make install
8、安裝完成后會提示你用他給你的命令啟動服務,但是請先不要啟動,我們需要改一下配置
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 上面是創建了新的host key,下面是服務的測試啟動命令 /usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config
9、更改配置,新安裝的openssh需要指定sshd_config路徑,這個新路徑和舊路徑不一樣,所以你可以對比兩個配置文件,按你的需要修改一下配置(其實不用更改什么,默認也可以)
vimdiff /etc/ssh/sshd_config /usr/local/etc/sshd_config
10、啟動sshd服務,覺得麻煩,自己做軟鏈接
/usr/local/sbin/sshd -f /usr/local/etc/sshd_config
11、嘗試登錄並檢查自啟情況
vim /etc/rc.local 在exit 0之前加入以下內容 /usr/local/sbin/sshd -f /usr/local/etc/sshd_config
服務就能自啟,再來看看更新后的openssh版本吧
ccyy@ubuntu:~$ ssh -V OpenSSH_7.3p1, OpenSSL 1.0.1f 6 Jan 2014
其他的Linux系統參考着做吧