ubuntu18.04离线升级openssh到8.8

该博客详细介绍了如何在Ubuntu系统中进行OpenSSH的安全升级,从8.7版本及之前版本修复漏洞升级到8.8p1,并同时安装telnet服务。首先确保系统已具备必要依赖,然后下载OpenSSH和OpenSSL源码包,解压并编译安装。接着,编译安装openssl,更新ssh版本,最后替换命令并启动新版本的sshd服务,验证升级成功。
摘要由CSDN通过智能技术生成

升级原因:修复8.7版本及之前版本漏洞
参考文章:Ubuntu离线升级openssh8.6脚本

一、前提条件
  1. 之前升级nginx,已经安装了gcc、g++、make等依赖。
  2. 下载openssh-8.8p1.tar.gzopenssl-1.1.1.tar.gz

注意:查看openssh-8.8p1.tar.gz中INTALL可知对openssl的版本要求。
INTALL

二、安装telnet
  1. 在有外网的相同环境下,下载deb安装包。
    sudo apt install telnetd xinetd -y -d
    
  2. 下载的deb包在/var/cache/apt/archives下,拷贝*.deb到所需服务器上。
  3. 创建telnet配置文件
    sudo touch /etc/xinetd.d/telnet
    
  4. 增加如下配置
    sudo vi /etc/xinetd.d/telnet
    
    service telnet
    {
      	  disable = no
       	 flags           = REUSE
       	 socket_type     = stream
      	  wait            = no
       	 user            = root
       	 server          = /usr/sbin/in.telnetd
       	 log_on_failure  += USERID
    
    }
    
  5. 重启服务
    sudo service xinetd restart
    
  6. 查看23端口已经开启
    netstat -anput |grep 23
    
  7. 测试telnet连接
    telnet ip
    
三、升级openssh
1、升级前准备
  1. 拷贝openssh-8.8p1.tar.gz和openssl-1.1.1.tar.gz到/home/freedom/source_package/
  2. 拷贝下载好的*.deb到/home/freedom/dpkgs_package/
  3. 拷贝升级脚本到/home/freedom/,脚本如下:

注意:在自己的环境下,要注意替换路径。

#!/bin/bash

## 数据备份

clear

beifen(){
mv /etc/ssh/sshd_config{,.old}
cp /usr/sbin/sshd{,.old}
mv /etc/ssh{,.old}
cp /etc/init.d/ssh{,.old}

mkdir /opt/ssh.bak
cd /usr/bin/
mv ssh* sftp scp /opt/ssh.bak/
}

## 编译前准备

# 1、安装依赖包

yilai(){
echo "[安装依赖包]"
cd /home/freedom/dpkgs_package/
dpkg -i * &>/dev/null

	if [ $? -eq 0 ];then
		echo "[成功]"
	else
		echo "[失败]"
	fi
}
# 2、解压源码包
targz(){
echo "[解压源码包]"
cd /home/freedom/source_package/

for i in openssh-8.8p1.tar.gz  openssl-1.1.1.tar.gz
do
	tar zxf $i -C /usr/local/src/
done

sleep 1
}

## 编译安装openssl
ssl_t1(){
echo "[编译安装openssl]"
sleep 0.5
echo "[编译安装时间较长 耐心等待...]"

cd /usr/local/src/openssl-1.1.1/
./config --prefix=/usr/local --openssldir=/usr/local/openssl &>/dev/null
make  &>/dev/null
make install &>/dev/null

if [ $? -eq 0 ];then
	echo "[成功]"
else
	echo "[失败]"
	exit
fi

ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1 
#ssl=`openssl version`
#echo $ssl
#sleep 3
sed  -i  '1 a /usr/local' /etc/ld.so.conf.d/libc.conf
ldconfig
}
 

## 编译安装openssh
ssh_t1(){
echo "[编译安装openssh]"
systemctl stop sshd 
cd /usr/local/src/openssh-8.8p1/
./configure --prefix=/usr/local --sysconfdir=/etc/ssh \
	--with-md5-passwords --with-zlib --with-ssl-dir=/usr/local \
	--with-privsep-path=/var/lib/sshd &>/dev/null
make &>/dev/null
make install &>/dev/null

if [ $? -eq 0 ];then
	echo "[成功]"
else
	echo "[失败]"
	exit
fi
}

## 命令替换
ti(){
cd /usr/bin/
mv ssh* sftp scp c_rehash openssl /tmp/ &>/dev/null
ln -s /usr/local/bin/* /usr/bin/ &>/dev/null
}

#####
beifen
yilai
targz
ssl_t1
ssh_t1
ti

systemctl start sshd
2、升级ssh
  1. 给脚本增加可执行权限
    sudo chmod +x ssh_update.sh
    
  2. 执行脚本
    ./ssh_update.sh
    
  3. 脚本执行完成后,查看ssh版本,是否升级成功
    ssh -V
    

仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值