如何创建OpenSSH-rpm包
时间:2019-08-20 17:58:13 来源:igfitidea点击:
为了解决CVE-2014-2532问题,我们将创建OpenSSH版本6.7稳定版本的rpm包,并对OpenSSH进行升级。
CVE-2014-2532说明
发现OpenSSH没有正确处理带有通配符的某些AcceptEnv参数值。
远程攻击者可以利用此漏洞绕过预期的环境变量限制。
解决放在哪
从openssh6.7源代码创建rpm包。
将OpenSSH升级到新版本6.7.
openssh升级到新版本时的注意事项
备份ssh配置文件/etc/ssh
备份pam文件/etc/pam.d/sshd
如果是从远程ssh到服务器,最好安装telnet服务器, 可以通过telent连接,确保升级出问题时,能连上服务器操作。
创建OpenSSH rpm包
因为没有现成的rpm包,所以需要我们自己制作。
安装创建OpenSSH rpm包所需的软件包
yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel
创建rpm构建目录
mkdir -p /usr/src/redhat/{SOURCES,SPECS}
它将创建下面的新目录
(a) /usr/src/redhat/
(b) /usr/src/redhat/SOURCES
(c) /usr/src/redhat/SPECS
下载最新的OpenSSH包
cd /usr/src/redhat/SOURCES/ wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.7p1.tar.gz.asc
提取spec文件
cd /usr/src/redhat/SOURCES/ tar xfz openssh-6.7p1.tar.gz openssh-6.7p1/contrib/redhat/openssh.spec mv openssh-6.7p1/contrib/redhat/openssh.spec ../SPECS/
更改提取的spec文件的所有权和组
chown sshd:sshd /usr/src/redhat/SPECS/openssh.spec
使用sed命令,修改spec文件一些命令
- 禁用 ask-pass
- 将过时弃用的BuildPreReq命令改成BuildRequires
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" /usr/src/redhat/SPECS/openssh.spec sed -i -e "s/BuildPreReq/BuildRequires/g" /usr/src/redhat/SPECS/openssh.spec
运行rpmbuild命令。
cd /usr/src/redhat/SPECS/ rpmbuild -ba openssh.spec
实际上,执行这个命令后,提示
error: File /root/rpmbuild/SOURCES/openssh-6.7p1.tar.gz: No such file or directory
所以要将源代码文件复制到/root/rpmbuild/SOURCES/
cp -v /usr/src/redhat/SOURCES/openssh-6.7p1.tar.gz* /root/rpmbuild/SOURCES/
再次运行命令
cd /usr/src/redhat/SPECS/ rpmbuild -ba openssh.spec
生成的rpm包在/root/rpmbuild/RPMS/x86_64中
cd /root/rpmbuild/RPMS/x86_64 ls -lhrt
备份ssh配置
新版本6.7的PAM配置文件发送了变化。升级后/etc/pam.d/sshd文件参数不兼容。
备份ssh配置目录
cd ~ tar -cvzf etc_ssh.tar.gx /etc/ssh
备份pam.d/sshd文件。(非常重要,不要忘记)
cp -p /etc/pam.d/sshd ~/sshd.orig.`date +%F`
将OpenSSH服务器升级到6.7版本
升级ssh服务器
ls -l /root/rpmbuild/RPMS/x86_64/ rpm -Uvh /root/rpmbuild/RPMS/x86_64/*.rpm
备份升级后sshd pam文件
cp -p /etc/pam.d/sshd /root/sshd.afterupgrade
现在恢复原始的sshd pam文件
cp /root/sshd.orig /etc/pam.d/sshd
编辑配置文件/etc/ssh/sshd_config 并启用UsePAM。
vi /etc/ssh/sshd_config .. UsePAM yes ..
移除旧密钥来重新生成新的ssh密钥
rm /etc/ssh/ssh*key
现在重启ssh服务
在CentOS 7/RHEL 7上
systemctl restart sshd
在CentOS 6/Amazon Linux上
service sshd restart