赞
踩
本文来自腾讯蓝鲸智云社区用户:AK47
蓝鲸的运维系统在我们单位使用已经快四个年头了,从刚开始的5到现在最新的7.1都有部署、测试、验证和使用。在实际的使用过程中,给我们运维提供了非常大的帮助。其中有一个场景分享给大家。这个场景是关于openssh版本升级的一个过程。
安全部门每个月都要进行安全漏洞的扫描,在扫描过程中发现了部分业务系统存在OpenSSH的安全漏洞(CVE-2023-28531)涉及到所有的linux操作系统。分属不同的业务系统,像这种漏洞,如果修复失败,很有可能无法登录。这种升级还是需要慎重。
拿到那几份漏扫结果,自然而然想到了蓝鲸的作业平台,批量进行升级。蓝鲸系统在我们这边使用已经快四年了,一直致力于所有的操作系统标准化,从环境配置到应用部署,还有日志路径,通过执行规范进行标准化。操作系统统一都是centos7,安装蓝鲸的agent,为作业平台的执行,铺平了道路。
升级的方案,大概分为四步:1、分发升级的安装包。2、执行升级。3、关闭telnet。4、发送升级成功通知。执行过程时间为19分3秒。
执行方案
分发升级安装包,如果大家的服务器可以访问外网的话,可以直接通过脚本把升级包下载回来,这步就可以省略
执行升级的脚本
代码分享给大家,大家可以根据自己的需求进行修改。
#!/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服务。这步是防止升级失败,无法登录到服务器。
升级完后,发送邮件通知相关负责人。
以下是执行历史,方便大家查看。
执行过的每台服务器的执行日志都很清晰明白,方便相关人员查看。
这种操作在实际的工作中,使用场景还是比较多,比如MySQL数据库的升级,root的密码更新,还有一些系统配置的修改。这些操作完全可以通过作业平台去完成,从而大大提升工作效率,也可以由于机器过多执行中出现的纰漏。这个作业平台我还是很喜欢的。感谢蓝鲸!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。