折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >其他技术> OpenSSH 资源管理错误漏洞

OpenSSH 资源管理错误漏洞

实际就是openssh版本过低,需要升级openssh

网上找了一个方法,记录如下,原文地址找不到了,当时没记录,不过代码里面有作者的名字,我只是借用他的代码,非常感谢

1、创建一个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 "33[41;37m当前build的openssh版本为: ${openssh_version}33[0m"
else
    echo "常用版本有:8.0 8.4 8.8"
    echo
    echo -e "   请输入需要build的openssh版本号  示例: 33[36;1m$0 8.433[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 "33[34;1m开始下载软件包:openssh-${openssh_version}p1.tar.gz  33[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 "33[34;1m openssh-${openssh_version}p1.tar.gz下载失败...请检查网络环境或版本是否存在 33[0m"
         exit 2
    else
        echo -e "33[34;1m开始下载软件包:x11-ssh-askpass-1.2.4.1.tar.gz 33[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 "33[34;1m x11-ssh-askpass-1.2.4.1.tar.gz下载失败...请检查网络环境是否正常 33[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 "33[34;1m开始制作 openssh${openssh_version} 相关rpm软件包  33[0m"
    rpmbuild -ba openssh.spec
    if [ $? -eq 0 ]; then
        echo -e "33[34;1mopenssh${openssh_version} 相关rpm软件包制作成功,生成的软件包信息如下:  33[0m"
        echo -e "33[33;1m软件包存放路径:/root/rpmbuild/RPMS/x86_64/ 33[0m" && ls /root/rpmbuild/RPMS/x86_64/
    else
        echo -e "33[33;1mopenssh${openssh_version} 相关rpm软件包制作失败,请根据报错信息进行解决,再重新进行编译 33[0m"
    fi
}
 
# 安装rpm包
function toyum(){
    cd /root/rpmbuild/RPMS/x86_64 && yum update ./openssh* -y
    if [ $? -ne 0 ]; then
        echo -e "33[34;1m yum openssh失败,请检查文件是否存在33[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 "33[34;1m 修改PermitRootLogin失败请手动检查文件 33[0m"
        exit 2
    else
        systemctl restart sshd && ssh -V
    fi
}
 
 
function main() {
    install_dependency
    download_package
    config_and_build
    toyum
    allowroot
}
main

2、修改脚本文件权限,我上面创建的文件名就叫openssh.sh

chmod +x openssh.sh

3、运行脚本,其中9.3是版本号,当你看到这篇文章的时候,可能9.3已经不是最新了,你可以改为最新的

openssh.sh 9.3

问题总结:

1、最新版本号获取

版本号在地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

2、提示:Unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions,可以运行以下命令解决

ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

3、提示:Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.

chmod 0600 /etc/ssh/ssh_host_ed25519_key

4、查看最新版本号

ssh -V0

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《OpenSSH 资源管理错误漏洞

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换