Linux升级openssl、openssh
在项目中,我们经常会发现Linux系统中Open SSH、Open SSL存在高危漏洞,如OpenSSL“心脏出血”漏洞,利用该漏洞,黑客可以获取约30%的https开头网址的用户登录账号密码,其中包括购物、网银、社交、门户等类型的知名网站等。 以及OpenSSH漏洞,如“OpenSSH远程代码执行漏洞CVE-2016-10009”, sshd服务可以利用转发的agent-socket文件,欺骗本机的ssh-agent来加载一个恶意的PKCS#11模块,从而可以远程执行代码,黑客利用漏洞实现远程命令执行,严重情况下可能会导致数据泄露。 我们一般通过升级openssh和openssl来解决系统中存在的相关高危漏洞。
升级说明
openSSL升级至openssl 1.1.1k版本 openssl version -a #当前查看版本 openssl下载地址:https://ftp.openssl.org/source/
openSSH升级至openssh 8.6版本 ssh -V #当前查看版本 openssh下载地址:https://ftp.riken.jp/pub/OpenBSD/OpenSSH/portable/ ,以 p1.tar.gz结尾的即可,选择自己想要的版本
一、安装telnet (以防升级失败,连不上服务器,建议弄)
# 查看是否安装telnet服务
rpm -qa | grep telnet
rpm -qa | grep xinetd
# 若无安装,yum安装
yum -y install telnet*
yum -y install xinetd
#将服务开机自启(此处根据自身情况考虑)
systemctl enable xinetd.service
systemctl enable telnet.socket
#开启服务
systemctl start telnet.socket
systemctl start xinetd
#安装好后,更改配置文件,允许telnet远程连接,Linux7中可能不需要:
vi /etc/xinetd.d/telnet
将disable = yes改为 disable = no,退出保存。
vi /etc/securetty
#在最后添加两行
pts/0
pts/1
systemctl restart xinetd
netstat -plnt |grep 23 # 确认下是否启动成功
二、升级OpenSSl
1、查看原版本
openssl version -a
2、安装依赖包
#安装openssl 依赖包
yum -y install perl gcc gcc-c++ glibc make zlib
3、解压安装
#我们将ssl安装在/usr/local/openssl目录下
tar -zxvf openssl-1.1.1k.tar
cd openssl-1.1.1k
./config --prefix=/usr/local/openssl
#检查环境
./config -t
make #编译
make install #编译安装
4、修改配置
#更新函数库
cd /usr/local
ldd /usr/local/openssl/bin/openssl #检查函数库
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf #添加所缺函数库
ldconfig -v #更新函数库
openssl/bin/openssl version #查看新安装的版本
#移出旧版本
which openssl #查看旧版本openssl命令在哪里
mv /usr/bin/openssl /usr/bin/openssl.old #将旧版本openssl移除
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl #新版本制作软链接
openssl version 最后查看版本,更新完毕
在确保Openssl版本为1.0.1后,可以升级Openssh了,升级方法如下。
三、升级openssh
1、解压,安装依赖包
ssh -V #查看ssh版本
#解压:
tar -zxvf openssh-8.6p1.tar
#安装依赖包
yum -y install openssl-devel pam-devel
2、移除旧版本
#可以提前备份一下:
cp /usr/sbin/sshd /usr/sbin/sshd.bak
cp /etc/ssh/ssh_config /etc/ssh/ssh_config.bak
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /etc/ssh/moduli /etc/ssh/moduli.bak
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
mv /etc/ssh /etc/ssh.old
### 需要注意,移除之后,不能退出当前终端,若退出就无法ssh连接了,只能通过telnet连了。
3、编译安装
cd openssh-8.6p1/
# 配置安装目录为/usr/local/openssh
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening
或者
--without-openssl-header-check
报错1:
在安装的过程中如遇到以下错误,请安装:yum -y install openssl-devel
报错2:configure: error: PAM headers not found
请安装 yum -y install pam-devel
我升级的时候只遇到这两个错,如遇到别的错,请自行解决。
然后编译安装
make && make install
4、修改启动脚本
# 拷贝启动脚本
cd openssh-8.6p1/
cp ./contrib/redhat/sshd.init /etc/init.d/sshd
# 修改启动脚本
vi /etc/init.d/sshd
# 按如下图修改,需要注意,此路径是你安装新版本的openssh路径,根据你的实际情况修改
SSHD=/usr/local/openssh/sbin/sshd
### 注意根据自身情况修改路径
/usr/local/openssh/bin/ssh-keygen –A
/sbin/restorecon /etc/ssh/ssh_host_key.pub
/sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
/sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub
/sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
start()
{
#Create keys if necessary
/usr/local/openssl/bin/ssh-keygen -A
if [ -x /sbin/restorecon ]; then
/sbin/restorecon /etc/ssh/ssh_host_key.pub
/sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
/sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub
/sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
fi
5、修改sshd配置文件/etc/ssh/sshd_config
chkconfig --add sshd
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config #直接用root登录终端(此处根据自身情况考虑)
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config #是否允许密码验证
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config #允许pubKey(id_rsa.pub)登录
echo 'X11Forwarding yes' >> /etc/ssh/sshd_config #设置是否允许X11转发
或者:vi /etc/sshd_config
# 在末尾加入账号远程配置, 输入 :wq 保存退出
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
X11Forwarding yes
6、卸载原有ssh(先安装后卸载,也是怕升级失败,如果有把握,可先卸载)
for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done
提示警告:
将警告中被修改的文件名字再改回来
mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config
mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config
mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli
7、替换相关命令,并重启sshd服务
cp -arp /usr/local/openssh/bin/* /usr/bin/ #替换相关命令
service sshd restart #重启sshd服务
chkconfig --add sshd
chkconfig sshd on
# 验证升级、让其他人测试连接后再退出
ssh -V 和 telnet 验证
8、设置开机自启
chkconfig --add sshd
chkconfig --level 2345 sshd on
chkconfig --list
升级完成后,为了安全起见,建议关闭telnet
#关闭服务(此处根据自身情况考虑)
systemctl stop telnet.socket
systemctl stop xinetd
#关闭服务开机自启(此处根据自身情况考虑)
systemctl disable xinetd.service
systemctl disable telnet.socket
Linux升级openssl、openssh的更多相关文章
- 实战redhat6.5离线升级openssl&openssh
记录一次RedHat6.5升级openssl&openssh踩坑填坑.由于机房信息安全员用绿盟扫描出服务器openssh有8个重要的安全漏洞,最好的解决方式就是升级版本. 注意事项: 先升级o ...
- linux升级openssl和php_openssl模块
一.OpenSSL源码升级 2014年4月8日,XP宣布正式停止服务的日子,也是OpenSSL爆出大漏洞的日子. OpenSSL主要是负责在一些敏感的数据提交上面被广泛使用,不乏大家经常访问的一些网站 ...
- Centos6.5 升级Openssl + Openssh
xu言: 平时很懒,都不想写blog.今天(2018.05.15)开始尝试每天写一篇吧,看我自己能坚持多久! 准备工作: 为了防止在操作过程中导致ssh远程中断,首先安装一个telnet-server ...
- linux升级安装openssh时出现依赖冲突
通过如下方式下载到openssh安装包 https://www.cnblogs.com/qq931399960/p/11120429.html -rwxrwxrwx. root root Jul : ...
- linux升级openssl
wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz ./config shared zlib-dynamicconfig完成后执行 ma ...
- MAC(Linux)升级Openssl
系统上一般默认安装的是0.9.8版本的Openssl,不能满足需要.这时候就要重新安装Openssl. 上官网下载新版openssl:https://www.openssl.org/source/ 解 ...
- Linux升级OpenSSL版本
安装nginx的时候,出现了这样的问题: nginx : Depends: libssl1.0.0 (>= 1.0.2~beta3) but 1.0.1f-1ubuntu2.11 is to b ...
- 升级openssl和openssh版本
一.安装telnet-server服务(建议安装) 1. 查看系统是否已安装telnet-server,linux系统上默认已经安装telnet-client(或telnet),而telnet-ser ...
- CentOS7源码升级OpenSSL和OpenSSH
一.CentOS7升级OpenSSL 1.查看ssl版本及下载相关依赖包 openssl version -a yum install -y gcc openssl-devel pam-devel r ...
- Linux下升级openssl
公司由于使用第三方漏洞扫描,检测出openssh存在漏洞,升级openssh后仍无效果,于是升级openssl 系统信息: 依赖软件:make.gcc.zlib1g-dev 升级步骤: 1.去官网下载 ...
随机推荐
- IM跨平台技术学习(十二):万字长文详解QQ Linux端实时音视频背后的跨平台实践
本文由QQ音视频团队贺坤分享原题"Linux QQ能打语音视频了!一文详解背后技术实现!",下文进行了排版和内容优化等. 1.引言 2024年6月6日,QQ For Linux 3 ...
- 开源即时通讯IM框架 MobileIMSDK v6.5 发布
一.更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes.Github Release Notes). MobileIMSDK 可能是市面上 ...
- 【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南
在 windows 上安装 spark 遇到的一些坑 | 避坑指南 最近有个活:给了我一个阿里云桌面(windows 10系统),让我在上面用 scala + spark 写一些东西. 总是报错不断, ...
- 【狂神说Java】Java零基础学习笔记-面向对象
[狂神说Java]Java零基础学习笔记-面向对象 面向对象01:什么是面向对象 面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么.... 面对过程适合处理一些较为简 ...
- Docker Desktop 使用笔记
一.Docker Desktop是什么? Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行.它是一个本地 Windows 应用程 ...
- 使用R语言可视化地图数据
在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用R语言可视化地图数据 # 先安装和导入R包,这里使用了本地地图数据,所以只导入maps包即可 # install.package ...
- Xrm.Internal.openDialog打开对话框自定义页面
在Dynamics CRM平台中使用自定义页面拓展功能实现有多种方式,比如嵌套iframe,比如直接打开一个新页面,再就是打开对话框了,对话框里为自定义页面. 调用方式很简单,先把自定义页面上传好后, ...
- ClustrixDB-new数据库
ClustrixDB是一种集群式RDBMS,可确保事务处理符合ACID特性,同时可轻松的提供可扩展性和容错能力. ClustrixDB集群由三个或更多节点(联网的同构服务器)组成.ClustrixDB ...
- 「CF1101F」Trucks and Cities
题意描述 有 \(N\) 座城市,第 \(i\) 座坐标为 \(a_i\) ,有 \(M\) 辆卡车,第 \(i\) 辆卡车要从城市 \(s_i\) 前往城市 \(e_i\) ,每单位长度耗油量为 \ ...
- el-table当前行的获取和设置,用于表格行操作
1.在vue的data区声明当前行变量对象,如果当前行的信息用于了按钮的状态则需要赋予默认值,否则会报找不到属性的错误,比如下面会用到当前记录的status属性值控制按钮是否可用. //表格选中的行 ...