【OpenSSH、OpenSSL安装编译升级-保姆级教程】详细讲解每条执行命令以及openssl库文件

常见Openssh漏洞问题描述
OpenSSH安全漏洞:
它影响了 OpenSSH 7.9 到 8.4p1 版本。该漏洞是由于 OpenSSH 服务在处理用户认证时未能正确限制可接收的数据格式,导致攻击者可以发送特制的数据包,可能会造成服务端拒绝服务或者远程代码执行等严重后果。
OpenSSH输入验证错误漏洞:
通常指的是在使用OpenSSH软件进行远程连接时,由于输入了非法或者不正确的数据导致的验证失败问题。这种问题通常涉及到SSH客户端和SSH服务器之间的密钥交换过程。
OpenSSH 命令注入漏洞:
由于OpenSSH在处理某些功能时未正确处理用户输入,攻击者可以通过SSH连接发送特制的命令,可能导致在服务器上执行未授权的恶意命令。
OpenSSH信息泄露漏洞:
由于OpenSSH在处理SSH连接时未能正确处理特定的SSH密钥格式,导致可能泄露用户的私钥信息。
安全处理建议:
官方已发布修复方案,受影响的用户建议更新至安全版本,官方下载链:
ssh -V 可查看当前Openssh和Openssl版本
# ssh -V
# OpenSSH_8.0p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021
说明:
1、安装OpenSSH需要安装OpenSSL
OpenSSH依赖于OpenSSL,没有安装OpenSSL,OpenSSH将无法编译和运行。OpenSSH使用OpenSSL提供的库来实现加密通讯会话,因此OpenSSL是必需的‌。

2、OpenSSL的作用

OpenSSL是一种加密方式,实现了SSL/TLS协议,而OpenSSH则利用OpenSSL提供的库来实现会话中的SSL过程。具体来说,OpenSSH在编译和运行过程中需要依赖OpenSSL提供的加密功能‌。
这里我们选择安装Openssh9.8p1的版本, 安装openssh-9.8p1需要升级到OpenSSL1.1.1 以上,查看当前OpenSSL版本是否符合
重要提示!
如果原来的Openssl是1.1.1w,只需要升级OpenSSH即可  , 升级OpenSSL会造成yum、rpm、python、ssh、scp相关功能不可用 ,后面附带解决方法,解决后会存在 OpenSSL heard(头文件)和库文件不匹配 的问题,虽然未发现不匹配后有什么影响,但如非必要,不建议升级OpenSSL 。
升级后报错如图示,解决方法在安装OpenSSL中有说明:
59ee938bc6de4165be890b5c957a60ff.png

                                             执行rpm和yum提示找不到 EVP_md2

安装包连接:
OpenSSL1.1.1k:网上搜索不好找,可在在本人CSDN资源列表中下载
重要提示!
安装前检查当前SSH配置文件/etc/ssh/sshd_config的正确性,检查完成后,建议开两个窗口,窗口1重启SSH服务,重启后验证SSH是否可以登陆,如不能SSH登陆,窗口2可进行配置文件修改,保证重启完SSH服务后可正常请求访问!
建议取消对ROOT的SSH登陆访问限制   PermitRootLogin no  改为  yes
接下来,进入正题:


一、安装OpenSSL(可根据当前版本选择安装或不安装)
1、进入安装目录
#  cd /usr/local/
2、本地上传安装包(openssl-1.1.1w.tar.gz)
#  rz -be  
3、解压OpenSSL安装包
#  tar -zxvf openssl-1.1.1w.tar.gz
4、卸载原来的OpenSSL
#  yum remove openssl
5、编译安装新的OpenSSL
#  cd /usr/local/openssl-1.1.1w
#  ./config --prefix=/usr                  指定安装目录为/usr
#  make && make install              这一条命令安装时间较长,耐心等待
以上三步可用 echo $? 来检查结果,输出为0表示正常,输出其他请重新检查编译安装
6、安装完成后可查看当前OpenSSL版本
#  openssl version
OpenSSL 1.1.1w  11 Sep 2023
以上为Centos8以下系统全部步骤-,Centos8以上及其他(包括BClinux)系统还需进行如下步骤
Centos8以上和BClinux系统执行到上述第6个步骤时,可验证yum、rpm、ssh服务是否可用,如不可用,按下面步骤操作
#   vim /etc/ld.so.conf 
  include ld.so.conf.d/*.conf
  /lib64
  /usr/local/openssl-1.1.1w/
#   ldconfig (加载openssl库文件动态连接)
如果上面这条指令提示如下:
ldconfig ldconfig: /lib64/libcrypto.so.1.1 不是符号链接 
ldconfig: /lib64/libssl.so.1.1 不是符号链接
则依次执行如下命令:
#  rm /lib64/libcrypto.so.1.1 
#  rm /lib64/libssl.so.1.1
#  ln -sf /usr/local/openssl-1.1.1w/libcrypto.so.1.1 /lib64/libcrypto.so.1.1           
重新指向软连接,将新安装的库文件链接到系统默认的库路径下
#  ln -sf /usr/local/openssl-1.1.1w/libssl.so.1.1 /lib64/libssl.so.1.1                        
重新指向软连接,将新安装的库文件链接到系统默认的库路径下
执行完成后测试yum、rpm等命令是否可用


二、 安装OpenSSH
1、进入安装目录
#  cd /usr/local/
2、本地上传安装包(openssh-9.8p1.tar.gz)
#  rz -be  
3、解压OpenSSH安装包
#  tar -zxvf openssh-9.8p1.tar.gz
4、备份原来的SSH配置文件
#  mkdir /home/sshbackup
#  cp /etc/ssh/sshd_config /home/sshbackup/sshd_config.bak
#  cp /etc/pam.d/sshd /home/sshbackup/sshd.bak
5、卸载原来的OpenSSH
#  rpm -e --nodeps `rpm -qa | grep openssh`    
            
-这一步可能会有如下告警提示,可以忽略它的存在:
warning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config.rpmsave 
warning: /etc/pam.d/sshd saved as /etc/pam.d/sshd.rpmsave
这条卸载 OpenSSH 的命令表示卸载与 OpenSSH 相关的所有包,并且选择了不检查依赖关系(--nodeps 选项),在卸载过程中,/etc/ssh/sshd_config 和 /etc/pam.d/sshd 这两个配置文件被保存为了 .rpmsave 后缀的备份文件。这意味着原始的配置文件在卸载过程中被替换或删除了,但系统为您保留了备份。
#  rpm -qa openssh (检查是否还有openssh的安装包 )
6、编译安装新的OpenSSH
#  cd /usr/local/openssh-9.8p1
#   yum install pam-devel.x86_64 (安装pam,编译的时候会用到 )
注意编译最后一个指令 (--without-openssl-header-check  )如果升级了openssl,在编译时则需要加上这条
#  ./configure --prefix=/usr/local/openssh9.8p1 --exec-prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-selinux --with-tcp-wrappers --with-ssl-dir=/usr/ssl --without-hardening  --without-openssl-header-check  (该条表示忽略openssl头文件和库文件不匹配问题,如果升级了openssl,在编译时则需要加上这条,否则编译会报错)
#  make && make install 
编译参数说明
‌--prefix=/usr/local/openssh9.8p1‌:
这指定了 OpenSSH 安装的根目录。所有文件(除非另有指定)都会安装在这个目录下。
‌--exec-prefix=/usr‌:
这指定了可执行文件(如 sshd, ssh 等)的安装目录。
‌--sysconfdir=/etc/ssh‌:
这指定了配置文件(如 sshd_config)的安装目录。
‌--with-md5-passwords‌:
启用对 MD5 密码的支持。
‌--with-pam‌:
启用 PAM (Pluggable Authentication Modules) 支持,这对于大多数 Linux 系统来说是必需的,以处理用户认证。
‌--with-zlib‌:
启用 zlib 压缩库的支持,这可以用于压缩 SSH 会话数据,提高传输效率。
‌--with-selinux‌:
启用 SELinux 支持,这对于运行在使用 SELinux 的系统上的 OpenSSH 来说是重要的安全特性。
‌--with-tcp-wrappers‌:
启用 tcp_wrappers 支持,这允许通过 /etc/hosts.allow 和 /etc/hosts.deny 文件来控制对 SSH 服务的访问。
‌--with-ssl-dir=/usr/ssl‌:
指定 SSL 库的位置
--without-openssl-header-check
表示忽略openssl文件和库文件不匹配问题
7、编译完成后
如果报错如下,请执行下面的命令来修改所有相关私钥文件的权限
如果无报错,请直接进行第8个步骤
WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored.  
WARNING: UNPROTECTED PRIVATE KEY FILE! @ Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. 
WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. sshd: no hostkeys available -- exiting. make: [Makefile:396:check-config] 错误 1 (已忽略)
表示SSH私钥文件权限错误导致的问题‌
‌问题描述‌:SSH私钥文件权限设置不当,导致SSH服务无法启动。
#  chmod 600 /etc/ssh/ssh_host_*_key
8、拷贝生成新的sshd
#  cp -a /usr/local/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
9、给当前用户设置访问权限(root)
#  chmod u+x /etc/init.d/sshd 
10、回拷备份配置文件
#  cp /home/ssh/sshd_config.bak /etc/ssh/sshd_config
#  cp /home/ssh/sshd.bak /etc/pam.d/sshd
11、设置SSH服务为开机自启动‌
# systemctl enable sshd  或者 chkconfig sshd on
12、重启SSH服务‌
#  systemctl restart sshd
13、验证版本,验证SSH登陆
# ssh -V
# OpenSSH_8.9p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021
# OpenSSH_8.9p1  25 Mar 2021

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值