美文网首页
Upgrade OpenSSH in CentOS 7

Upgrade OpenSSH in CentOS 7

作者: WestWang | 来源:发表于2017-09-04 16:03 被阅读0次

最近某个客户请了安全公司扫描了下他们的服务器,发现 SSH 存在许多安全漏洞,原因是 CentOS 7 使用了一个比较旧的 OpenSSH 版本 v6.6.1,而这些漏洞在新版的 OpenSSH 中均已被修复,所以我们就开始了升级 OpenSSH 的趟坑之旅。

首先,yum 仓库中并没有最新版的 OpenSSH,我们需要自己制作 rpm 安装包,我在网站找到了一篇帖子 Upgrading OpenSSH on CentOS 6 or 7,这里仅将我修改后的脚本放出来,不再重复帖子的内容了

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

OPENSSH_VERSION=7.5p1

cd /usr/src
http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VERSION}.tar.gz
tar -xvzf openssh-${OPENSSH_VERSION}.tar.gz

mkdir -p /root/rpmbuild/{SOURCES,SPECS}
cp ./openssh-${OPENSSH_VERSION}/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/
cp openssh-${OPENSSH_VERSION}.tar.gz /root/rpmbuild/SOURCES/
cd /root/rpmbuild/SPECS/

sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh.spec
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh.spec
sed -i -e "s/BuildPreReq/BuildRequires/g" openssh.spec

rpmbuild -bb openssh.spec

编译好后的文件被放在 /root/rpmbuild/RPMS/x86_64/ 目录下,使用 rpm 命令安装

cd /root/rpmbuild/RPMS/x86_64
rpm -Uvh *.rpm

升级完后检查已安装的 OpenSSH 版本

rpm -qa | grep openssh

帖子的内容到这里就结束了。

But,我们从客户端登陆的时候却是失败!

开始我们以为自己制作的 rpm 包有问题,几经折腾,最后发现还是默认的配置不正确导致的结果。

无法用 ssh key 方式登录,默认的 host key 文件授权太大,需要修改 key 文件的权限

chmod 600 /etc/ssh/ssh_host_*_key

无法用 password 方式登录,/etc/ssh/sshd_config 的配置不正确,先备份 /etc/ssh/sshd_config

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old

然后修改 /etc/ssh/sshd_config 中的配置

sed -i -e "s/#PasswordAuthentication yes/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i -e "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g" /etc/ssh/sshd_config
sed -i -e "s/#UsePAM no/UsePAM yes/g" /etc/ssh/sshd_config

默认的 /etc/pam.d/sshd 中使用了过时的 pam_stack.so 动态库,替换掉它,还是先备份

cp /etc/pam.d/sshd /etc/pam.d/sshd.old

然后完全替换掉这个文件

cat > /etc/pam.d/sshd <<EOF
#%PAM-1.0 
auth required pam_sepermit.so 
auth include password-auth 
account required pam_nologin.so 
account include password-auth 
password include password-auth 
# pam_selinux.so close should be the first session rule 
session required pam_selinux.so close 
session required pam_loginuid.so 
# pam_selinux.so open should only be followed by sessions to be executed in the user context 
session required pam_selinux.so open env_params 
session optional pam_keyinit.so force revoke 
session include password-auth
EOF

重启你的 sshd 服务

systemctl restart sshd

再试试从客户端登陆,是不是都可以了啊 :)

相关文章

网友评论

      本文标题:Upgrade OpenSSH in CentOS 7

      本文链接:https://www.haomeiwen.com/subject/rzyejxtx.html