赞
踩
Centos7.9-升级openssh9.7p1,修复安全漏洞
说明:ssh服务可以说是最重要的服务之一,远程管理基本都是使用这个了。然而如果出现漏洞,就存在很大的风险,需要及时升级ssh版本来修复漏洞。
主要方法:利用ansible批量源码编译安装openssh
思路:
首先在ansible主控端,创建个关于升级openssh的目录,将需要升级的ssh9.7p1tar包下载至该目录;在/etc/ansible/hosts主机清单填写想要升级的那些主机,可写ip地址,域名;在上述目录中编写shell安装openssl3-1.5,openssh-9.7p1一键安装脚本;最后撰写playbook剧本:首先调用yum模块在所有主机通过安装所需要升级的依赖,再调用copy模块将主控端的tar包,脚本分发到目标主机,脚本分发过去时并没有执行权限,再调用file模块授权分发过去的脚本赋予执行权限,最后调用shell模块执行被控端的脚本升级openssh9.7p1版本。 在运行playbook剧本前检查主控端与被控端是否做好ssh免密通信!!!
问:为什么升级openssh时也要同时升级openssl?
答:升级 OpenSSH 时需要升级 OpenSSL,是因为 OpenSSH 使用 OpenSSL 库来实现加密通信功能。OpenSSL 是一个开源的加密库,为许多应用程序提供了加密功能。OpenSSH 作为一个安全的远程登录工具,使用 OpenSSL 提供的加密算法来保护通信数据的安全性。因此,为了确保 OpenSSH 在进行加密通信时能够使用最新的加密算法和安全漏洞修复,升级 OpenSSH 时也需要升级 OpenSSL。这样可以保证系统在进行远程登录和文件传输时的安全性和稳定性。
主控端: 以下操作都在/openssh_upgrade_9.7/目录下
1.下载所需软件包
mkdir -p /openssh_upgrade_9.7/
wget -P /openssh_upgrade_9.7/ https://www.openssl.org/source/openssl-3.1.5.tar.gz --no-check-certificate #下载openssl3.1.5
wget -P /openssh_upgrade_9.7/ https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz --no-check-certificate #下载openssh9.7p1
---------------------------------------------------------------------------
2.撰写一键安装openssl-3.1.5 shell脚本
vim upgrade_openssl.sh
#!/bin/bash
cd /usr/local/src/
mv /usr/lib64/openssl /usr/lib64/openssl.old
yum -y remove openssl
tar xf openssl-3.1.5.tar.gz
cd /usr/local/src/openssl-3.1.5
./config --prefix=/usr
make && make install
---------------------------------------------------------------------------
3.撰写一键安装openssh-9.7p1 shell脚本
vim upgrade_openssh.sh
#!/bin/bash
cd /usr/local/src/
tar xf openssh-9.7p1.tar.gz
mkdir /etc/ssh.bak
mv /etc/ssh/ /etc/ssh.bak
cd /usr/local/src/openssh-9.7p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords
make && make install
cp /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
cp /etc/ssh/sshd_config{,.bak}
sed -i 's/^PermitRootLogin/#&/' /etc/ssh/sshd_config
sed -i '32i PermitRootLogin yes' /etc/ssh/sshd_config
chkconfig --add sshd
systemctl daemon-reload
systemctl restart sshd
---------------------------------------------------------------------------
4.撰写playbook剧本
vim one-click-upgrade.yml
---
- hosts: all
tasks:
- name: yum安装所需升级依赖
yum:
name: "{{ packages }}"
vars:
packages:
- gcc
- gcc-c++
- openssl-devel
- libstdc++*
- libcap*
- pam-devel
- zlib-devel
- perl
- perl-IPC-Cmd
- name: copy所需安装包,脚本到目标主机
copy:
src: /ssh_upgrade_9.7/
dest: /usr/local/src/
- name: 授权copy过去的脚本赋予执行权限
file:
path: /usr/local/src/upgrade_openss*
mode: '0755'
- name: 调用shell脚本升级ssl3.1.5
shell: /usr/local/src/upgrade_openssl.sh
- name: 调用shell脚本升级ssh9.7p1
shell: /usr/local/src/upgrade_openssh.sh
5.主机清单撰写
vim /etc/ansible/hosts
上述playbook中-hosts:all 代表所有主机,如果想升级某个区段可写-host:web
6.运行playbook剧本
上述全绿代表运行成功
7.在主控端调用command模块查看被控端openssl,openssh是否升级成功 例:
上述代表运行成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。