当前位置: 代码网 > it编程>编程语言>Java > Ubuntu20.04与22.04 OpenSSL与OpenSSH编译安装

Ubuntu20.04与22.04 OpenSSL与OpenSSH编译安装

2024年08月03日 Java 我要评论
OpenSSL与OpenSSH需要经常修复漏洞,编译安装步骤供参考,适用ubuntu版本,其他版本类似,若升级主机较多,建议先在测试环境验证,如OpenSSL大版本升级且OpenSSH有新稳定版本,建议升级OpenSSL同时也升级OpenSSH

openssl与openssh需要经常修复漏洞,编译安装步骤供参考,适用ubuntu版本,其他版本类似,若升级主机较多,建议先在测试环境验证,如openssl大版本升级且openssh有新稳定版本,建议升级openssl同时也升级openssh

建议: 文末已带编译好的附件,推荐下载最新版本或者根据官方脚本自行安装

deb包根据二进制编译后提取部分文件覆盖方式安装

安装编译依赖包

apt update
apt install gcc make  zlib1g-dev  libpam0g-dev libkrb5-dev libedit-dev -y

操作系统openssl版本查看:

ubuntu20.04 openssl版本:openssl 1.1.1f
ubuntu22.04 openssl版本:openssl 3.0.2

在这里插入图片描述在这里插入图片描述

安装 openssl

首先,使用 wget 命令下载 openssl 的源代码压缩包。从 openssl 官方网站上找到最新版本的源代码。
注意:由于openssl 1.1.x版本已停止维护,ubuntu20.04.x系统建议都使用目前长期支持版
在这里插入图片描述

下载 openssl包

wget https://www.openssl.org/source/openssl-3.0.14.tar.gz

如下以ubuntu20.04示例:

解压源代码
使用 tar 命令解压源代码压缩包。

tar -zxf openssl-3.0.14.tar.gz

切换到解压后的源代码目录。

cd openssl-3.0.14/

配置编译选项:
运行以下命令配置编译选项。(是否加shared 、zlib参数都可以进行后面的openssh安装)
将 openssl 安装到 /usr/local/openssl 目录下,并设置 openssldir 为同样的路径。

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib

在这里插入图片描述
编译和安装:

运行 make 命令进行编译,然后使用 make install 命令进行安装。请确保您具有足够的权限来执行此操作, make 可替换为 make -j4 并行处理(其中的数字 4 表示允许并行运行的任务数,按cpu核数适当调整)

make -j4 && make install

在这里插入图片描述

备份原来的openssl

mv /usr/bin/openssl /usr/bin/openssl.bak

创建软链接到系统位置

ln -s /usr/local/openssl/bin/openssl  /usr/bin/openssl

将openssl 的lib 库添加到系统(‘/usr/local/openssl/lib64’ 单引号)

#openssl 1.x.x版本是: /usr/local/openssl/lib/ 路径
#echo '/usr/local/openssl/lib' > /etc/ld.so.conf.d/openssl.conf
echo '/usr/local/openssl/lib64' > /etc/ld.so.conf.d/openssl.conf   

加载lib库 (可加 -v 参数查看详细显示)

ldconfig

看看openssl版本

openssl  version

在这里插入图片描述

现在,您已经成功在 ubuntu 20.04 上编译安装了 openssl。 如果您在安装其他软件时需要使用 openssl,请确保相应的软件能够找到新安装的 openssl 路径。

openssh安装

注意: 操作前需备份好已安全加固的配置文件 (新环境可忽略)

若网络不稳定进行升级,建议临时安装telnetd服务,避免终端中断无法远程操作,由于telnet服务存在不安全因素,升级验证完后进行卸载 (apt install telnetd -y)

备份文件,防止现有配置丢失

cp -a /etc/pam.d/sshd  /mnt/sshd-bak-`date +%f`
cp -a /etc/ssh/sshd_config  /mnt/sshd_config-bak-`date +%f`

下载openssh
采用国内阿里云镜像站下载,也可从openssh官网下载
在这里插入图片描述
按支持的协议选择性下载
在这里插入图片描述

#清华大学镜像站(备用)
#wget https://mirrors.tuna.tsinghua.edu.cn/openbsd/openssh/portable/openssh-9.8p1.tar.gz
wget https://mirrors.aliyun.com/pub/openbsd/openssh/portable/openssh-9.8p1.tar.gz

若下载认证提示未通过可添加--no-check-certificate 参数跳过认证

wget https://mirrors.aliyun.com/pub/openbsd/openssh/portable/openssh-9.8p1.tar.gz --no-check-certificate

解压openssh

tar -zxf openssh-9.8p1.tar.gz

进入解压目录

cd openssh-9.8p1/

配置参数

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-kerberos5 --with-libedit --with-pam --with-gssapi --with-zlib --with-ssl-dir=/usr/local/openssl --with-privsep-path=/run/sshd

编译与安装

make && make install

重启sshd生效

systemctl restart sshd

查看openssh 版本

ssh -v

在这里插入图片描述
现在,您已经成功在 ubuntu 20.04 上编译安装了 openssh。

openssh升级后root用户无法远程登录 (可选操作,根据实际环境要求选择是否开启)

编辑sshd_config配置文件permitrootlogin参数为yes,保存并重启sshd

permitrootlogin yes

隐藏版本号: (9.8p1及后续版本影藏失效,待处理)
本地执行’ssh -v"任可见,根据实际版本号进行替换,x.x 可为任意字母或数字

根据ssh-v 和 strings /usr/sbin/sshd|grep 'openssh_' 确定要修改的版本(ssh远程时版本号后一般不带字母)
在这里插入图片描述

备份文件

cp -a /usr/sbin/sshd /usr/sbin/sshd-bak-`date +%f`

修改版本号

sed -i 's/openssh_9.8/openssh_x.x/g'  /usr/sbin/sshd

重启sshd服务

systemctl restart sshd

验证隐藏版本号
使用nmap工具进行验证或新建连接方式查看,版本号变为openssh x.x (nmap安装:apt install nmap)

nmap -p 22 -sv -v -n  主机ip
port   state service version
22/tcp open  ssh     openssh x.x (protocol 2.0)

安全加固
修复diffie-hellman 漏洞,去掉diffie-hellman开头的参数

sshd -t|grep -w kexalgorithms

在这里插入图片描述
sntrup761x25519-sha512@openssh.com 参数在openssh 8.5版本引入,9.0版本中默认添加

openssh升级后rke 启动集群报ssh认证错误:(非安全加固,统一添加sshd配置)

pubkeyacceptedkeytypes=+ssh-rsa

在这里插入图片描述

sshd_config 配置最后添加

vim /etc/ssh/sshd_config
ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
kexalgorithms sntrup761x25519-sha512@openssh.com,ecdh-sha2-nistp384,ecdh-sha2-nistp521
macs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com
pubkeyacceptedkeytypes=+ssh-rsa

重启sshd

systemctl  restart sshd

faq:

openssl与openssh编译后是否可删除原系统默认安装的opensl与openssh

答:建议都保留

针对openssl
若狠心删除,openssl软链接的是原系统的openssl执行文件,删除原系统默认安装的opensl后会将openssl执行文件一并删除,重新创建一次软连接即可

apt remove openssl
ln -s /usr/local/openssl/bin/openssl  /usr/bin/openssl

针对openssh
openssh编译时已指定/etc/ssh路径,删除不仅把原系统安装的openssh卸载,编译安装的也会卸载,建议保留,若已删除,请重新按openssh编译安装步骤执行

openssl有新版本怎么升级

答:下载新版本,解压并进入目录,再次运行编译与安装、加载lib库、查看版本号是否更新即可,无需其他操作

若普通用户执行openssl version还是之前安装的版本,但是root用户显示却是已升级的版本

openssl安装目录权限添加普通用户可读设置(正常编译安装应该不存在需要再次设置权限问题)

find /usr/local/openssl/ -type d |xargs chmod  o+r

远程登录ssh连接慢,需要等待好一会儿才能连接成功

编辑配置文件:/etc/ssh/sshd_config,取消 #usedns no前注释,保存后重启sshd服务
在这里插入图片描述
2024年7月27日

ubuntu20.04系统openssl3.0.14与openssh9.8p1版本

2024年7月27日

ubuntu22.04系统openssl3.0.14与openssh9.8p1版本

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com