关于新版本oepnssh8.5rpm制作

前言

因为安全漏洞处理,提出“OpenSSH 命令注入漏洞(CVE-2020-15778)”受影响版本ssh8.5及之前的版本,就有点懵,openssh8.5更新时间在前一两周,为啥还会有高危漏洞呢?
openssh8.5测试CVE-2020-15778如图:
测试机openssh7.4
靶机openssh8.5
在这里插入图片描述

温馨提示

就目前而言,制作过程不难,openssh版本也能升级,对于版本升级处理漏洞能够满足。但要特别说明存在的缺陷,能够正常开启sftp服务并访问,但在做sftp服务限制用户访问目录会出现问题,一直提示没有权限。当时同事制作的openssh8.4就出现该问题,在日志中也没记录。后续通过二进制编译openssl1.1.1h和openssh8.4安装后正常。在这次制作过程中,测试了该问题,同样存在。
如图,192.168.11.100是正常sftp服务限制用户访问目录连接。192.168.11.200则是升级openssh版本后sftp限制目录访问问题,提示remote readdir("/"): Permission denied
openssh版本后sftp限制目录访问问题

编译rpm包

源码包下载,建议复制url到浏览器,打开下载。

wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.5p1.tar.gz

准备编译环境

yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel initscripts

准备rpmbuild环境

mkdir -p /root/rpmbuild/SOURCES
mkdir -p /root/rpmbuild/SPECS
cp /root/openssh-8.4p1.tar.gz /root/rpmbuild/SOURCES/
cp /root/x11-ssh-askpass-1.2.4.1.tar.gz /root/rpmbuild/SOURCES/
tar -zxf openssh-8.4p1.tar.gz -C /opt
cp /opt/openssh-8.4p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
chown sshd:sshd /root/rpmbuild/SPECS/openssh.spec 

修改/root/rpmbuild/SPECS/openssh.spec配置文件
将openssh.spec中的
%global no_x11_askpass 0
%global no_gnome_askpass 0

修改为

%global no_x11_askpass 1
%global no_gnome_askpass 1
在这里插入图片描述

注释掉#BuildRequires: openssl-devel < 1.1
在这里插入图片描述
在/root/rpmbuild/SPECS/目录中执行命令

rpmbuild -ba openssh.spec

rpm则生成在/root/rpmbuild/RPMS/x86_64目录中

ll /root/rpmbuild/RPMS/x86_64

openssh8.5的rpm安装

安装过程要谨慎,要先备份原文件以及安装telnet,然后开启telnet并验证能否明文登陆,再着手更新openssh8.5版本

备份文件

mkdir ssh_backfile
cp -rf /etc/ssh ssh_backfile/
cp -rf /etc/pam.d/sshd ssh_backfile/

备份sshd.service启动文件,因为如果有执行yum remove就会出现删除启动文件,可以不备份,不过为了以防万一,多操作无所谓,有的启动文件目录不一定相同。

mkdir ssh_service
cp -rf /usr/lib/systemd/system/sshd* ssh_service/

在这里插入图片描述

开启telnet

telnet主要防止ssh操作失误导致服务无法登陆问题,telnet为明文登陆,确保ssh正常后,这里用已经准备好的telnet安装包操作
在这里插入图片描述

tar -xzvf telnet_rpm.tar.gz
cd telnet_rpm
rpm -ivh *.rpm 
cat telnet_install.txt > /etc/xinetd.d/telnet
systemctl start telnet.socket
systemctl start xinetd.service

windows10开启telnet
在这里插入图片描述
登陆测试,端口为23
telnet 192.168.11.100 23
在这里插入图片描述
在这里插入图片描述

更新openssh8.5

在rpm目录中执行rpm -Uvh *.rpm
在这里插入图片描述
更新完后重启会直接提示启动失败“Failed to start SYSV: OpenSSH server daemon.”和“Unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions
在这里插入图片描述
需要前面备份到ssh_backfile目录的文件,替换回之前的文件。注意/etc/ssh目录下的密钥文件要更改权限,否则会报Unable to load host key 的问题。替换/etc/ssh和/etc/pam.d/sshd文件后重启sshd服务正常。

cp -rf ssh_backfile/ssh/* /etc/ssh/
chmod -R 600 /etc/ssh/*
cp -rf ssh_backfile/sshd /etc/pam.d/sshd

在这里插入图片描述
至此更新openssh8.5已完成
在这里插入图片描述

确认更新情况

在更新完成后,通过systemctl restart sshd命令重启ssh服务的不会导致已连接的页面sessions关闭,测试时不要关闭当前连接,要另外打开新连接,或者通过其他服务器ssh连接测试。
新版本的ssh,会导致部分终端仿真程序会报错连接不上,SecureCRT 8.5会报“Key exchange failed. No compatible key-exchange method. The server supports these methods: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
在这里插入图片描述
xshell5会报“找不到匹配的key exchange算法”,xshell更新到6版本即可正常,CRT理论上更新版本同样可以处理。
最简单的方式直接通过其他服务器ssh连接测试,如图。
在这里插入图片描述
确认正常后便关闭telnet

 systemctl stop telnet.socket && systemctl stop xinetd.service

缺陷:限制sftp目录访问测试

如前言所说,在做限制sftp目录访问测试时会出现问题,可以安装测试,以下为新建用户并限制该用户sftp远程目录不能更改操作。

useradd  sky && echo "123456"|passwd --stdin sky
mkdir -p /data/sftp
chown root:root /data/sftp
mkdir -p /data/sftp/sftp_sky
chmod 755 /data/sftp/sftp_sky
chown sky:sky /data/sftp/sftp_sky

修改/etc/ssh/sshd_config配置文件

cat >> /etc/ssh/sshd_config <<EOF
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f local5
LogLevel INFO

Match User sky # 用户名
	ChrootDirectory /data/sftp # 用户宿主目录
	X11Forwarding no
	AllowTcpForwarding no
	ForceCommand internal-sftp -l INFO -f local5
EOF

重新启动

systemctl restart sshd

最后登陆测试,会发现提示“remote readdir("/"): Permission denied”,相同的操作在未更新openssh版本中正常限制用户访问。

sftp sky@192.168.11.200 

在这里插入图片描述
平常升级版本,完善漏洞足够了。不过对于要做sftp服务器的,能够正常开启sftp服务并使用,但做用户目录限制,会报以上错误,建议通过二进制安装。通过制作rpm安装的openssh目前会遇到该问题,如发现解决办法,望能一起讨论研究。

其他

telnet安装包:https://download.csdn.net/download/weixin_43723044/15678126
二进制安装文件:https://download.csdn.net/download/weixin_43723044/15678214
openssh8.5的rpm包:https://download.csdn.net/download/weixin_43723044/15678375

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值