升级openssh与openssl

升级openssh-9.6与openssl-1.1.1(升级openssh-9.8亲测可用)


#注:本文档更新openssl为1.1.1w版本,openssh为9.6版本,其他版本可参考此文档

其他版本下载链接:http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

发行版说明地址:OpenSSH: Release Notes

主要升级原因:

增强的安全性:
新版本的OpenSSH通常包含安全漏洞的修复,这些漏洞可能被黑客利用来入侵系统或窃取数据。升级可以显著减少此类风险。
可能引入新的加密算法和身份验证方法,提高远程登录和文件传输的安全性。

新版本的OpenSSH与OpenSSL通常会修复旧版本中发现的安全漏洞,包括远程代码执行、信息泄露等严重问题,从而有效抵御潜在的安全威胁。

1.环境准备

1.1 下载包

下载OpenSSL(1.1.1w版本): www.openssl.org/source/open…

下载OpenSSH(9.6版本): mirrors.sonic.net/pub/OpenBSD…

1.2 备份

# 1. 备份openssl
cp /usr/local/openssl/bin/openssl  /usr/local/openssl/bin/openss_bak
# 或者根据命令所在路径进行备份,例如:
#find / -name openssl     -->/usr/bin/openssl
cp /usr/bin/openssl /usr/bin/openssl_bak

# 2. 备份ssh
cp /etc/init.d/sshd /etc/init.d/sshd_bak
# 或者根据命令所在路径进行备份,例如:
#find / -name sshd     -->/usr/sbin/sshd
cp /usr/sbin/sshd /usr/sbin/sshd_bak

# 3. 备份PAM模块SSH登录配置文件,一定要备份到其它目录,因为编译安装的时候会覆盖并且不会新建!
cp /etc/pam.d/sshd /root/sshd

# 4. 备份配置ssh配置文件所在目录
cp -rp /etc/ssh /etc/ssh_bak

1.3 安装依赖:

这些依赖CentOS7版本的镜像就自带,所以挂载系统镜像然后配置内网Yum源就可以安装

yum install gcc make perl zlib-devel pam pam-devel openssl-devel -y

1.4 安装telnet

升级过程需要卸载SSH,所以我们打开的窗口超时退出了就无法连接了,所以一定要安装 telnet 使用 telnet 登录安装。

(注意创建普通用户)

# 1. 安装
yum install telnet* xinetd* -y 

# 2. 启动
systemctl start telnet.socket
systemctl start xinetd

# 3. 默认telnet是无法使用root进行登录的,为了方便这里就将 securetty 移动走,安装完成后再移动回来
mv /etc/securetty /etc/securetty.bak

2. 安装OpenSSL

# 1. 解压
tar zxf openssl-1.1.1w.tar.gz

# 2. 运行配置脚本
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl

# 3. 编译, 给最大的CPU核心数
make -j 8

# 4. 安装
make install

# 5. 软链接新的SSL
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

# 6. 查看openssl版本
openssl version

3. 安装OpenSSH

# 1. 卸载旧的ssh
yum remove openssh-7.4p1 -y

# 2. 解压
tar zxf openssh-9.6p1.tar.gz

# 3. 运行配置脚本
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam

# 4. 编译
make -j 8

# 5. 安装
make install

#注意:可能提示权限太高报错如下:

#	@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#	@         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.

#需要修改三个文件的权限为0600解决
chmod 0600 /etc/ssh/ssh_host_rsa_key
chmod 0600 /etc/ssh/ssh_host_ecdsa_key
chmod 0600 /etc/ssh/ssh_host_ed25519_key
#权限修改完毕再次执行:
make install

# 6. 复制新的配置到相关目录以及更改sftp-server所在位置
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
cp /etc/ssh_bak/sshd_config  /etc/ssh/sshd_config
cp /root/sshd /etc/pam.d/
sed -i 's|/usr/libexec/openssh/sftp-server|/usr/libexec/sftp-server|' /etc/ssh/sshd_config

# 7. 开启启动
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd

# 8. 使用其它主机测试一下
	#查看ssh版本号
	telnet IP 22	
	#登录测试
	ssh IP
	
# 9. 将securetty移动回来
mv /etc/securetty.bak /etc/securetty

升级完成后,验证SSH和SFTP有没有问题,没有问题后卸载telnet服务端不然基线扫描不过

yum remove telnet* xinetd* -y

常见问题

1.
升级完openSSH之后,所有主机使用root无法ssh登陆
/etc/ssh/ssh_config line 50: Unsupported option"gssapiauthentication"
于是,便猜想ssh升级后,为了安全,默认不再采用原来一些加密算法。
最后,解决办法为,注释sshd_config的以下参数:

#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
#UsePAM yes
允许root ssh登陆

PermitRootLogin yes
重启sshd服务即可恢复。

service sshd restart
2.
使用 vi 等编辑器,将参数值设置为 inet,或者整个删除或注释(在最开头添加 # 号)整行配置。比如:

# AddressFamily inet

同时,确保 AddressFamily 参数在ListenAddress 之前配置,比如:

AddressFamily any   #该行配置在前面
ListenAddress 0.0.0.0
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值