Administrator
发布于 2023-02-16 / 290 阅读
0
0

Centos7-升级OpenSSL和OpenSSH

Centos7-升级OpenSSL和OpenSSH

前言:
升级 SSH 服务修复安全漏洞。
由于yum安装无法升级SSH到最新的版本这里我们使用源码编译安装

一、升级前准备

开启telnet备用远程连接,防止ssh意外中断后可采用备用控制渠道

1.安装编译SSH服务时的相关依赖环境

#主机可联网时可直接yum安装
yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pam-devel libselinux-devel make autconf perl glibc kernel-headers

2.安装并启用telnet服务

#安装telnet服务
yum -y install telnet-server

#启动telnet服务
systemctl start telnet.socket

#检测防火墙状态  
systemctl status firewalld

#开启防火墙23端口(若防火墙禁用的请略过该命令)
firewall-cmd --permanent --add-port=23/tcp --zone=public
firewall-cmd --reload

#默认情况下,linux不允许root用户以telnet方式登录linux主机,移除securetty文件
mv /etc/securetty /etc/securetty.bak

3.离线安装需要提前下载好软件包并上传到服务器

#可以到相关的系统镜像站下载
阿里云镜像下载地址:https://developer.aliyun.com/mirror/
其他Linux软件仓库:https://centos.pkgs.org/

1.选择系统版本查看命令(cat /etc/redhat-release)
2.进入进入 https://developer.aliyun.com/系统版本/os/x86_64/Packages/  
3.下载的时候一定要注意文件后缀里面有32位和64位的(i686 为 32,x86_64为32位)

#离线安装本地rpm软件包
yum localinstall -y *.rpm

rpm -ivh telnet-server-0.17-66.el7.x86_64.rpm --nodeps --force
#--nodeps --force 表示强制安装

二、安装升级OpenSSL

两种安装方式选择一种

1:软链安装

#下载OpenSSL源代码
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz

#解压缩源代码文件并进入源代码目录:
tar -xzvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t

#配置编译选项
./config --prefix=/usr/local/ssl -d shared zlib
#默认没有编译出.so的文件,而openssh编译的时候需要,所以需要手动添加 -d shared的选项

#编译源代码并安装生成的文件
make && make install

#备份系统原有的openssl
mv /usr/bin/openssl /usr/bin/openssl.old

#创建软链
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

#刷新系统动态链接库
ldconfig

#查看链接库信息
ldconfig -v

#【ldconfig】命令查考地址:https://ipcmen.com/ldconfig

2.直接安装

#卸载原有版本的OpenSSL(可选)
yum remove openssl openssl-devel

#下载OpenSSL源代码
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz

#解压缩源代码文件并进入源代码目录:
tar -xzvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1t

#配置编译选项
./config --prefix=/usr --openssldir=/usr shared zlib

#编译源代码并安装生成的文件
make && make install

#以上命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题
echo $?

#查看升级后的openssl版本
openssl version -a

#刷新系统动态链接库
ldconfig

三、安装升级OpenSSH

1.备份原SSH配置

#备份原ssh配置
cp -r /etc/ssh /etc/ssh_bak

2.停止并卸载原有的OpenSSH

#停止当前运行的 OpenSSH 服务
systemctl stop sshd

#查看安装的openssh
rpm -qa | grep openssh

#卸载rpm安装的ssh
yum remove openssh

3.安装OpenSSH

#下载最新版本的 OpenSSH
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.2p1.tar.gz

#解压缩源代码文件并进入源代码目录:
tar -xzvf openssh-9.2p1.tar.gz
cd openssh-9.2p1

#修改版本号(安全扫描低危漏洞)
vim version.h
#找到此行#define SSH_VERSION     "OpenSSH_9.2",将OpenSSH_9.2修改为自定义的

#配置编译选项
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers --with-privsep-path=/var/empty/sshd

#编译源代码并安装生成的文件
make && make install

#以上命令执行完毕,echo $?查看下最后的make install是否有报错,0表示没有问题
echo $?

#启用pam配置文件,该文件在 contrib 目录下
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

#拷贝ssh启动脚本
cp -a contrib/redhat/sshd.init /etc/init.d/sshd

#更改ssh配置文件
vim /etc/ssh/sshd_config

#容许root远程登录
PermitRootLogin yes

#容许秘钥认证
PubkeyAuthentication yes

#添加到系统服务并配置ssh开机自启动
chkconfig --add sshd
chkconfig sshd on

#启动SSH服务
sshd -t
systemctl start sshd

#如遇ssh启动时报错提示权限太大,修改密钥文件权限
chmod 0600 /etc/ssh/ssh_host_rsa_key
chmod 0600 /etc/ssh/ssh_host_ecdsa_key
chmod 0600 /etc/ssh/ssh_host_ed25519_key


#查看升级后的ssh版本
ssh -V

4.关闭备用的telnet服务

#关闭备用的telnet
systemctl stop xinetd.service && systemctl stop telnet.socket

5.OpenSSL编译配置项配置说明:

–prefix:指定 OpenSSH 的安装目录。默认情况下,OpenSSH 将安装到 /usr/local 目录下。如果需要安装到其他目录,可以使用 --prefix 参数指定。例如,–prefix=/usr 将 OpenSSH 安装到 /usr 目录下。

–with-ssl-dir:指定 OpenSSL 库的安装目录。OpenSSH 需要使用 OpenSSL 来进行加密和解密操作。如果 OpenSSL 已经安装在系统上,可以使用 --with-ssl-dir 参数指定其安装目录。例如,–with-ssl-dir=/usr/lib64/openssl 将使用 /usr/lib64/openssl 目录下的 OpenSSL 库。

–with-pam:指定是否启用 PAM 支持。PAM(Pluggable Authentication Modules)是一个用于认证的框架,可以让 OpenSSH 与各种认证方法集成,如 LDAP、Kerberos 等。如果需要使用 PAM 认证,可以使用 --with-pam 参数启用。

–with-kerberos5:指定是否启用 Kerberos 5 支持。Kerberos 5 是一种安全认证协议,可以使用 Kerberos 5 进行 SSH 认证。如果需要使用 Kerberos 5 认证,可以使用 --with-kerberos5 参数启用。

–with-tcp-wrappers:指定是否启用 TCP Wrapper 支持。TCP Wrapper 是一种用于网络访问控制的工具,可以对 SSH 连接进行访问控制。如果需要使用 TCP Wrapper 控制 SSH 连接,可以使用 --with-tcp-wrappers 参数启用。

–without-password-auth:指定是否禁用密码认证。如果需要禁用密码认证,可以使用 --without-password-auth 参数禁用。

–without-openssl-header-check:指定是否禁用 OpenSSL 头文件检查。如果需要禁用 OpenSSL 头文件检查,可以使用 --without-openssl-header-check 参数禁用。

参考连接:

https://blog.csdn.net/qq_41355314/article/details/116495837

https://blog.csdn.net/q735496541/article/details/123173872


评论