背景
在CentOS环境下,系统本身自带的远程连接ssh由于版本问题,经常会被安全漏扫工具识别为风险。本文以CentOS7 环境介绍OpenSSH和OpenSSL升级过程。
正文
升级OpenSSH和OpenSSL的操作过程如下
下载最新版本安装包
OpenSSH:
https://www.openssh.com/
OpenSSL:
https://www.openssl.org/
1、安装辅助插件
yum install -y gcc zlib-devel pam-devel
2、安装OpenSSL
tar xzvf openssl-1.1.1h.tar.gz
cd openssl-1.1.1h
./config --prefix=/usr --shared
make && make install
#检查安装后的版本
openssl version
默认显示 OpenSSL 1.1.1h 22 Sep 2020
3、安装OpenSSH
3.1 #备份原有版本ssh配置文件,默认新版不会自动覆盖
mv /etc/ssh/ssh_config /etc/ssh/ssh_config_bak
mv /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
mv /etc/ssh/moduli /etc/ssh/moduli_bak
3.2解压安装
tar -xzvf openssh-8.4p1.tar.gz
cd openssh-8.4p1
./configure --prefix=/usr --with-zlib --sysconfdir=/etc/ssh --with-ssl-dir=/usr --with-md5-passwords --with-pam
make && make install
# 拷贝启动脚本 安装目录下
cp ./contrib/redhat/sshd.init /etc/init.d/sshd
3.3 配置文件调整
#安装完毕后,修改sshd服务端配置文件
# 是否允许 root 登入,新版默认是不允许登录
sed -i '/#PermitRootLogin prohibit-password/a PermitRootLogin yes' /etc/ssh/sshd_config
# GSSAPI 是否允许使用基于 GSSAPI 的用户认证,仅用于SSH-2
sed -i '/^GSSAPIAuthentication yes/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/' /etc/ssh/sshd_config
#是否在用户退出登录后自动销毁用户凭证缓存,默认值是"yes"。用于SSH-2
sed -i '/^GSSAPICleanupCredentials yes/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
# 关于 SFTP 服务的设定项目,特殊情况服务用SFTP登录不能访问home目录,提示无权限
sed -i 's/Subsystem/#Subsystem/' /etc/ssh/sshd_config
chmod -R 600 /etc/ssh/
3.4 重新加载服务
systemctl stop sshd
mv /lib/systemd/system/sshd.service /lib/systemd/system/sshd.service.bak
systemctl daemon-reload #重载systemctl服务
systemctl start sshd
3.5其他处理
以下处理SELinux冲突
/usr/sbin/sestatus -v
##如果SELinux status参数为enabled即为开启状态,则执行下面的关闭Selinux
setenforce 0
getenforce
#如果结果显示为Permissive,证明关闭成功。
3.6验证版本
ssh –V #检查安装后的版本
默认显示 OpenSSH_8.4p1, OpenSSL 1.1.1h 22 Sep 2020
注意不要关闭当前SSH连接窗口,新开SSH连接验证是否正常登录。
3.7 SSH工具升级
如果使用现有的SSH工具再次重新连接服务器,报如下错误,需要升级工具版本。
远程ssh工具 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
3.8 其他
# 关于 SFTP 服务的设定项目,特殊情况服务用SFTP登录不能访问home目录,提示无权限,需要注释下面行
Subsystem sftp /usr/libexec/openssh/sftp-server