惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Help Net Security
Help Net Security
P
Privacy International News Feed
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
AWS News Blog
AWS News Blog
K
Kaspersky official blog
A
Arctic Wolf
Latest news
Latest news
T
Threat Research - Cisco Blogs
L
LINUX DO - 最新话题
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
月光博客
月光博客
N
News and Events Feed by Topic
Jina AI
Jina AI
博客园 - 司徒正美
WordPress大学
WordPress大学
罗磊的独立博客
雷峰网
雷峰网
AI
AI
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Security @ Cisco Blogs
博客园 - 三生石上(FineUI控件)
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Cisco Blogs
博客园 - 【当耐特】
The Hacker News
The Hacker News
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Schneier on Security
Schneier on Security
博客园 - Franky
S
SegmentFault 最新的问题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Cloudbric
Cloudbric
爱范儿
爱范儿
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
Last Week in AI
Last Week in AI
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Know Your Adversary
Know Your Adversary
Google DeepMind News
Google DeepMind News

博客园 - 一起走过的路

Nginx GeoIP2 模块编译安装与配置指南(附防国外访问实战) MySQL查询当前连接数的语句 Apollo批量给新创建的用户授可编辑权限 物理机Jenkins接入K8s环境 ingress配置https报错certificate.lua:259: call(): failed to set DER private key: d2i_PrivateKey_bio() failed, context: ssl_certificate_by_lua* elk收集分析nginx日志,并绘制图形 Zabbix Scheduled reports中文乱码 kubernetes mysql-StatefulSet报错处理 Jenkins合并代码Git报错处理过程 nginx集群同步方案 zabbix密码复杂度有效期安全增强,符合三级等保要求。 archery关闭导出功能 自动同步bing壁纸 elk监听Java日志发送微信报警 OPENVPN 同时连接多个VPN - 一起走过的路 nginx拒绝国外IP访问 keepalived健康检查及双主MySQL健康检查脚本 执迷不悟 splunk设置索引周期和索引大小
CentOS7更新OpenSSH8
一起走过的路 · 2021-12-01 · via 博客园 - 一起走过的路

今天使用漏洞扫描工具扫描了一下系统漏洞,发现有一个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