1. 程式人生 > >CentOS下升級默認的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)

CentOS下升級默認的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)

cred exists nic 攻擊 刪除 登錄 configure int fin

近期對IDC機房服務器做了一次安全漏洞掃描,漏掃結果顯示服務器的OpenSSH版本太低(CentOS6默認是OpenSSH_5.3p1),存在漏洞隱患,安全部門建議升級到OpenSSH_7.6p1。升級OpenSSH的操作並不復雜,但由於是線上環境,故需要謹慎操作。特別需要註意的是:如果是通過ssh遠程連接服務器後進行的版本升級操作,萬一升級失敗了,則ssh就遠程登錄不上去了。當然,如果服務器安裝了iDRAC遠程管理卡就好說了,如果沒有iDRAC遠程管理卡,則需要提前開啟telnet遠程登錄(允許root賬號登錄)或是到機房現場進行升級操作比較妥當!

一、漏洞描述
漏洞描述:OpenSSH 6.9及之前版本的sshd中的auth2-chall.c文件中的lsquokbdint_next_devicersquo函數存在安全漏洞,該漏洞源於程序沒有正確限制處理單鏈接中的keyboard-interactive設備。
影響範圍:OpenSSHthrough 6.9
涉及資產:xxxxxx  
漏洞影響:遠程攻擊者可借助ssh -oKbdInteractiveDevices選項中較長且重復的列表利用該漏洞實施暴力破解攻擊,或造成拒絕服務(CPU消耗)。
漏洞加固建議:登錄被影響主機查看OPENSSH版本號,如在影響範圍內,則對OPENSSH進行版本升級或更新。

下面分別介紹下Centos6和Centos7下針對OpenSSH版本升級的操作記錄

二、Centos6.9升級默認OpenSSH版本的操作記錄

查看操作系統版本
[root@Centos6 ~]# cat /etc/redhat-release       #或者執行"cat /etc/issue"
CentOS release 6.9 (Final)

查看默認的OpenSSH版本
[root@Centos6 ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

備份ssh目錄(此步非常重要,一定要記得提前做備份)
[root@Centos6 ~]# cp -rf /etc/ssh /etc/ssh.bak

安裝telnet,提前部署telnet遠程登錄環境(root用戶登錄),避免ssh升級出現問題,導致無法遠程管理!
[root@Centos6 ~]# yum install telnet-server
[root@Centos6 ~]# vim /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses #       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream        
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no                     #將默認的yes修改為no。telnet默認是不允許使用root賬號登錄,在此修改為允許root賬號登錄!
}

重啟telnet服務
[root@Centos6 ~]# /etc/init.d/xinetd start  
Starting xinetd:                                           [  OK  ]
[root@Centos6 ~]# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

telnet默認用於遠程登錄的端口是23(21是默認的ftp端口、22是默認的ssh端口、23是默認的telnet端口)
[root@Centos6 ~]# lsof -i:23
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
xinetd    2489 root    5u  IPv6 22131982      0t0  TCP *:telnet (LISTEN)

關閉iptables防火墻和selinux。如果開啟了iptables防火墻,則需要開啟23端口。
[root@Centos6 ~]# /etc/init.d/iptables stop
[root@Centos6 ~]# vim /etc/sysconfig/selinux 
.......
SELINUX=disabled

[root@Centos6 ~]# setenforce 0
setenforce: SELinux is disabled

=====================================================================================================================
默認情況下,linux不允許root用戶以telnet方式登錄linux主機,若要允許root用戶登錄,可采取以下3種方法中的任何一種方法:

1)第一種方法:修改securetty文件
增加pts配置。如果登錄用戶較多,需要更多的pts/*。
[root@Centos6 ~]# vim /etc/securetty
......
pts/0
pts/1
pts/2

2)第二種方法:移除securetty文件
驗證規則設置在/etc/security文件中,該文件定義root用戶只能在tty1-tty6的終端上記錄,刪除該文件或者將其改名即可避開驗證規則實現root用戶遠程登錄。
[root@Centos6 ~]# rm -rf /etc/securetty

3)第三種方法:修改login文件
Linux中對於遠程登錄的限制體現在/etc/pam.d/login 文件中,如果把限制的內容註銷掉,那麽限制將不起作用。
[root@Centos6 ~]# vim /etc/pam.d/login
.......
#account    required     pam_nologin.so            //註釋掉改行內容

以上三種方法中的任意一種設置後,在客戶端使用telnet遠程登錄目標服務器(使用root用戶)都是可以的!
192.168.10.206是telnet目標服務器,192.168.10.202是客戶端機器。
[root@client ~]# telnet 192.168.10.206 23               
Trying 192.168.10.206...
Connected to 192.168.10.206.
Escape character is ‘^]‘.
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
Centos6.9-OS login: root
Password: 
Last login: Tue Aug 14 14:28:02 from 192.168.10.202        

------------------------溫馨提示-------------------------
一般不建議直接用root用戶遠程通過telnet登陸系統,因為telnet在數據傳輸過程采用明文方式,如果,數據包被人截獲,將會很容易獲取root用戶的登陸口令;
還是建議以普通用戶通過telnet遠程登陸,然後su到root,這樣相對比較安全。如果非要用root用戶遠程連接,建議采用SSH.
如上操作後,就可以使用root賬號進行telnet登錄服務器了!OpenSSH升級後建議再修改回還原設置(即禁止root用戶進行telnet登錄)。

==========================================================================================================================

安裝高版本的OpenSSH
升級前需要先安裝幾個組件
[root@Centos6 ~]# yum install -y gcc openssl-devel pam-devel rpm-build

本案例升級openssh選擇的是openssh-7.6p1.tar.gz
百度下載地址是:https://pan.baidu.com/s/1C5B5ZZh_PRBNicvdzTxS2g
提取密碼:dssh

[root@Centos6 ~]# cd /usr/local/src/
[root@Centos6 src]# ll openssh-7.6p1.tar.gz 
-rw-rw-r-- 1 root root 1489788 Aug 14  2018 openssh-7.6p1.tar.gz
[root@Centos6 src]# tar -zvxf openssh-7.6p1.tar.gz 
[root@Centos6 src]# cd openssh-7.6p1
[root@Centos6 openssh-7.6p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
[root@Centos6 ~]# make && make install

安裝後提示:
/etc/ssh/ssh_config already exists, install will not overwrite
/etc/ssh/sshd_config already exists, install will not overwrite
/etc/ssh/moduli already exists, install will not overwrite
ssh-keygen: generating new host keys: ECDSA ED25519 
/usr/sbin/sshd -t -f /etc/ssh/sshd_config
/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials

修改配置文件,允許root登錄
[root@Centos6 openssh-7.6p1]# sed -i ‘/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/‘ /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# cat /etc/ssh/sshd_config|grep RootLogin                                                     
PermitRootLogin yes

重啟OpenSSH
[root@Centos6 openssh-7.6p1]# service sshd restart                   
Stopping sshd:                                             [  OK  ]
Starting sshd: /etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
/etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
                                                           [  OK  ]
如上重啟OpenSSH出現的告警錯誤,解決辦法如下:
將/etc/ssh/sshd_config文件中以上行數內容註釋下即可
[root@Centos6 openssh-7.6p1]# sed -i ‘/^GSSAPICleanupCredentials/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/‘ /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# sed -i ‘/^GSSAPIAuthentication/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/‘ /etc/ssh/sshd_config
[root@Centos6 openssh-7.6p1]# sed -i ‘/^GSSAPIAuthentication/s/GSSAPIAuthentication no/#GSSAPIAuthentication no/‘ /etc/ssh/sshd_config

再次重啟OpenSSH服務,則不會出現錯誤了
[root@Centos6 openssh-7.6p1]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

升級後版本
[root@Centos6 openssh-7.6p1]# ssh -V
OpenSSH_7.6p1, OpenSSL 1.0.1e-fips 11 Feb 2013

----------------------------------------------------------------------------------------------------
溫馨提示:
1)由於之前將原ssh目錄修改名字了("mv /etc/ssh /etc/ssh_bak"),修改後,需要立即需要修改下配置:

修改配置文件,禁止root登錄
[root@Centos6 ~]# sed -i ‘/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin no/‘ /etc/ssh/sshd_config

可以不操作,禁止dns解析
[root@Centos6 ~]# sed -i ‘/^#UseDNS yes/s/#UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config

可以不操作默認是22,修改ssh端口至6022
[root@Centos6 ~]# echo "Port 6022" >> /etc/ssh/sshd_config

註意:
- 在升級SSH時你的SSH是不會因為升級或重啟服務而斷掉的。
- 但是記得OpenSSH升級後,要修改/etc/ssh/sshd_config,將"PermitRootLogin no" 改為 "/etc/ssh/sshd_config",然後再重啟OpenSSH服務,
  否則,再另開一個終端窗口,使用root用戶ssh登錄該機器就會失敗了,因為此時ssh已經禁止root用戶登錄了!

2)更新後ssh有如下提示,但不影響使用:
[root@Centos6 ~]# ssh -p22 192.168.10.206
/etc/ssh/ssh_config line 50: Unsupported option "gssapiauthentication"                                           

解決措施:
註釋/etc/ssh/ssh_config的gssapiauthentication內容
----------------------------------------------------------------------------------------------------

三、Centos7.5升級默認OpenSSH版本的操作記錄

CentOS下升級默認的OpenSSH(OpenSSH_5.3p1到OpenSSH_7.6p1)