0
点赞
收藏
分享

微信扫一扫

Tencent BlueKing作业平台升级openssh执行方案分享

林肯公园_97cc 04-09 11:45 阅读 2

本文来自腾讯Tencent BlueKing智云社区用户:AK47

Tencent BlueKing的运维系统在我们单位使用已经快四个年头了,从刚开始的5到现在最新的7.1都有部署、测试、验证和使用。在实际的使用过程中,给我们运维提供了非常大的帮助。其中有一个场景分享给大家。这个场景是关于openssh版本升级的一个过程。

安全部门每个月都要进行安全漏洞的扫描,在扫描过程中发现了部分业务系统存在OpenSSH的安全漏洞(CVE-2023-28531)涉及到所有的linux操作系统。分属不同的业务系统,像这种漏洞,如果修复失败,很有可能无法登录。这种升级还是需要慎重。

--b4cd0a54dcf2f05ea6281feb099fdbd3.png

拿到那几份漏扫结果,自然而然想到了Tencent BlueKing的作业平台,批量进行升级。Tencent BlueKing系统在我们这边使用已经快四年了,一直致力于所有的操作系统标准化,从环境配置到应用部署,还有日志路径,通过执行规范进行标准化。操作系统统一都是centos7,安装Tencent BlueKing的agent,为作业平台的执行,铺平了道路。

升级的方案,大概分为四步:1、分发升级的安装包。2、执行升级。3、关闭telnet。4、发送升级成功通知。执行过程时间为19分3秒。

执行方案

--604cfe3e6de165374e751aa6cde340c9.png

分发升级安装包,如果大家的服务器可以访问外网的话,可以直接通过脚本把升级包下载回来,这步就可以省略

--962468135ec4ea0cd3ee1476573c7cd4.png

执行升级的脚本

--9d718876474c3baaabd477e2ad363603.png

代码分享给大家,大家可以根据自己的需求进行修改。

#!/bin/bash
##SSH升级
#执行之前请开放公网

HOST="www.baidu.com"
ping -c 1 $HOST > /dev/null
if [ "$?" -eq "0" ]
then
    echo "公网访问已开通,程序继续执行。"
else
    echo "公网访问未开通,请联系网络管理员开通!"
    exit 1
fi

## 安装启动并配置telnet服务 | 防止ssh升级失败无法访问服务器
yum install -y telnet-server* telnet xinetd
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd.service
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
echo 'pts/2' >>/etc/securetty

echo "************************************备份开始************************************"
cp /usr/bin/ssh /usr/bin/ssh.bak || echo "已备份"
cp /usr/sbin/sshd /usr/sbin/sshd.bak || echo "已备份"
mv /usr/bin/openssl /usr/bin/openssl.bak || echo "已备份"
mv /etc/ssh /etc/ssh.bak || echo "已备份"
echo "************************************备份结束****************************************"

yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
yum install -y pam* zlib*
#ls /root | grep openssh-8.5p1 || wget -c https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.5p1.tar.gz
#ls /root | grep openssl-1.1.1g || wget -c https://ftp.openssl.org/source/openssl-1.1.1g.tar.gz
cd /root
tar -zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config shared && make && make install
\cp -rvf include/openssl /usr/include/
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -snf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so
ln -snf /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -snf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so
ln -snf /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ldconfig
openssl version
echo $?

cd /root
tar -zxvf openssh-9.3p1.tar.gz
cd openssh-9.3p1
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords  --without-openssl-header-check
make && make install

# 修改启动文件和pam
cp ./contrib/redhat/sshd.init /etc/init.d/sshd || echo "已执行"
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam || echo "已执行"
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bak || echo "已执行"

cat >> /etc/ssh/sshd_config <<EOF
#启用允许root远程登录
PermitRootLogin yes
#启用公钥身份验证
PubkeyAuthentication yes
#启用隧道明文密码
PasswordAuthentication yes
EOF

systemctl daemon-reload
systemctl restart sshd
systemctl status sshd

ssh -V

rm -rf /root/.ssh/known_hosts

echo -e "\033[33m升级成功 测试如果没有问题 记得关闭telnet服务\033[0m"

关闭telnet服务。这步是防止升级失败,无法登录到服务器。

--10ee4530fe7c4a5d66b4c123a0bd3367.png

升级完后,发送邮件通知相关负责人。

--110faf16d37964d52f6904215173de66.png

以下是执行历史,方便大家查看。

--6330ae13561faed3eebf299fe9a315f7.png

执行过的每台服务器的执行日志都很清晰明白,方便相关人员查看。

--469df1f1890ef13c22cd5ac36051be13.png

这种操作在实际的工作中,使用场景还是比较多,比如MySQL数据库的升级,root的密码更新,还有一些系统配置的修改。这些操作完全可以通过作业平台去完成,从而大大提升工作效率,也可以由于机器过多执行中出现的纰漏。这个作业平台我还是很喜欢的。感谢Tencent BlueKing!

举报

相关推荐

0 条评论