CentOS7更新OpenSSH8


今天使用漏洞掃描工具掃描了一下系統漏洞,發現有一個openssh版本的漏洞。所以本着安全的原則修復一下。

第一時間打開百度搜索相關內容,大多數是編譯安裝的。每個人的環境和版本也不一樣。有一定連不上去的風險。

打算自己根據自己系統把tar包編譯成rpm包安裝一下。順便記錄一下過程

 

 

信息系統安全加固記錄表

IP地址

聯通雲所有服務器

操作系統

CentOS Linux release 7.6.1810

主機數量

50台

操作人

郭亞彬

漏洞信息

漏洞編號

漏洞名稱

風險等級

CVECVE-2018-15473

ssh用戶枚舉漏洞

安全加固計划

加固日期

2021-12-01

預計中斷時間

5分鍾

風險評估

OpenSSH缺少安全更新。詳情請參閱https://lists.debian.org/debian-lts-announce/2018/08/msg00022.html

https://packages.debian.org/source/jessie/openssh描述發現OpenSSH中存在用戶枚舉漏洞。遠程攻擊者可以測試目標服務器上是否存在某個用戶。

實施方案

1. 查看系統openssh包rpm -qa|grep openssh

2. 查看版本ssh -V  gcc -v  openssl version

3. 使用腳本一鍵編譯安裝包並升級openssh版本 rpmbuild_openssh.sh 8.8

4. 驗證版本ssh -V

回退方案

1. 在遠程控制台執行刪除openssh新版本yum remove openssh* -y

2. 在遠程控制台執行安裝openssh老版本yum install openssh openssh-server openssh-clients -y

3. 啟動openssh  systemctl start sshd.services

加固結果

加固成功,版本已升級到最新版8.8p1

驗證相關軟件包rpm -qa |grep openssh

openssh-clients-8.8p1-1.el7.x86_64

openssh-8.8p1-1.el7.x86_64

openssh-debuginfo-8.8p1-1.el7.x86_64

openssh-server-8.8p1-1.el7.x86_64

驗證相關ssh版本ssh -V0

OpenSSH_8.8p1, OpenSSL 1.0.2k-fips  26 Jan 2017

 

 

 

下面是rpmbuild_openssh.sh內容

#!/usr/bin/env bash
# @Date   :2021/12/1 15:13
# @Author :GuoYaBin
# @Email  :458606473@qq.com
# @File   :rpmbuild_openssh.sh
# @Desc   :制作openssh rpm軟件包,通過tar包build

openssh_version=$1
#判斷是否傳入正確的軟件包
if [ "${openssh_version}" ] ;then
    echo -e "\033[41;37m當前build的openssh版本為: ${openssh_version}\033[0m"
else
    echo "常用版本有:8.0 8.4 8.8"
    echo
    echo -e "   請輸入需要build的openssh版本號  示例: \033[36;1m$0 8.4\033[0m"
    exit 1
fi

# 安裝依賴
function install_dependency() {
    yum install -y wget rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip libXt-devel imake gtk2-devel openssl-libs >> /dev/null && sleep 3
}

# 下載軟件包
function download_package() {
    mkdir -p /root/rpmbuild/{SOURCES,SPECS}
    cd /root/rpmbuild/SOURCES
    echo -e "\033[34;1m開始下載軟件包:openssh-${openssh_version}p1.tar.gz  \033[0m"
    wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${openssh_version}p1.tar.gz >> /dev/null && echo "openssh-${version}p1.tar.gz下載成功..."
    if [ $? -ne 0 ]; then
        echo -e "\033[34;1m openssh-${openssh_version}p1.tar.gz下載失敗...請檢查網絡環境或版本是否存在 \033[0m"
         exit 2
    else
        echo -e "\033[34;1m開始下載軟件包:x11-ssh-askpass-1.2.4.1.tar.gz \033[0m"
        wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz >> /dev/null && echo "x11-ssh-askpass-1.2.4.1.tar.gz下載成功..." && sleep 3
        if [ $? -ne 0 ]; then
            echo -e "\033[34;1m x11-ssh-askpass-1.2.4.1.tar.gz下載失敗...請檢查網絡環境是否正常 \033[0m"
            exit 2
        else
            tar -xf openssh-${openssh_version}p1.tar.gz && tar -xf x11-ssh-askpass-1.2.4.1.tar.gz
        fi
    fi
}

# 修改配置文件和build
function config_and_build() {
    cp openssh-${openssh_version}p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
    sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
    sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /root/rpmbuild/SPECS/openssh.spec
    sed -i 's/BuildRequires: openssl-devel < 1.1/#&/' /root/rpmbuild/SPECS/openssh.spec
    cd /root/rpmbuild/SPECS
    echo -e "\033[34;1m開始制作 openssh${openssh_version} 相關rpm軟件包  \033[0m"
    rpmbuild -ba openssh.spec
    if [ $? -eq 0 ]; then
        echo -e "\033[34;1mopenssh${openssh_version} 相關rpm軟件包制作成功,生成的軟件包信息如下:  \033[0m"
        echo -e "\033[33;1m軟件包存放路徑:/root/rpmbuild/RPMS/x86_64/ \033[0m" && ls /root/rpmbuild/RPMS/x86_64/
    else
        echo -e "\033[33;1mopenssh${openssh_version} 相關rpm軟件包制作失敗,請根據報錯信息進行解決,再重新進行編譯 \033[0m"
    fi
}

# 安裝rpm包
function toyum(){
    cd /root/rpmbuild/RPMS/x86_64 && yum update ./openssh* -y
    if [ $? -ne 0 ]; then
        echo -e "\033[34;1m yum openssh失敗,請檢查文件是否存在\033[0m"
        exit 2
    fi
}

# 允許root登錄
function allowroot(){
    sed -i '/.*PermitRootLogin.*/d' /etc/ssh/sshd_config && sed -i '32i PermitRootLogin yes' /etc/ssh/sshd_config
    if [ $? -ne 0 ]; then
        echo -e "\033[34;1m 修改PermitRootLogin失敗請手動檢查文件 \033[0m"
        exit 2
    else
        systemctl restart sshd && ssh -V
    fi
}


function main() {
    install_dependency
    download_package
    config_and_build
    toyum
    allowroot
}
main

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM