一、概念简介
-
OpenSSH
OpenSSH为SSH协议的免费开源实现,用来进行远程控制,或在计算机之间传送文件,可以有效防止远程管理过程中的信息泄露问题,通过SSH可以对所有传输的数据进行压缩、加密,能够防止DNS欺骗和IP欺骗,具有安全性高,传输快的优点。
笔者整改网络安全漏洞时,使用的云虚拟机CentOS7自带的OpenSSH版本(OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017)漏扫出很多高风险漏洞,预采用升级处理(升至OpenSSH_8.6p1, OpenSSL 1.1.1g 21 Apr 2020),而升级OpenSSH需先升级OpenSSL(国际标准的加密及身份认证通信协议)。经升级整改后再漏扫复核,测得结果为:OpenSSH高危漏洞数为0,且未引入新漏洞(日期2021/5/8)。
二、升级操作:
-
开启telnet备用远程连接,防止ssh意外中断后可采用备用控制渠道
1)安装telnet服务,用于远程控制处理ssh升级
防止SSH远程控制时,升级过程中出现连接中断,可通过telnet备用方式进行远程连接(由于telnet是明文传输,不安全,只作为临时使用,升级完成后,必须停止卸载该服务)
#安装telnet服务
yum -y install telnet-server
#启动telnet服务
systemctl start telnet.socket
#检测防火墙状态
systemctl status firewalld
#开启防火墙23端口(若防火墙禁用的请略过该命令)
firewall-cmd --permanent --add-port=23/tcp --zone=public
firewall-cmd --reload
#默认情况下,linux不允许root用户以telnet方式登录linux主机,移除securetty文件
mv /etc/securetty{,.bak}
2)若ssh中断可采用telnet进行远程控制,进行处理ssh升级
#使用windows打开cmd窗口,使用telnet远程控制服务器,telnet命令没开启的请自行百度教程
telnet [服务器ip]
-
OpenSSH升级
1)安装相关命令依赖
#安装相关命令依赖
yum install -y pam* zlib*
2)备份原SSH配置
#备份原ssh配置
mv /etc/ssh /etc/ssh_bak
3)停止并卸载原有的OpenSSH
systemctl stop sshd
#查看安装的ssh
rpm -qa | grep openssh
#卸载rpm安装的ssh
yum remove openssh*
4)安装升级OpenSSL
#安装OpenSSL(1.1.1g)
mkdir ./sshupdate
cd ./sshupdate
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -xzvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/ --openssldir=/usr/ shared
make && make install#查看升级后的openssl版本
openssl version
5)安装OpenSSH
笔者拉https://cdn.openbsd.org这个域名资源时,发现部分cdn加速节点有问题拉不下来,若出现笔者这种情况,可以使用源地址(非常慢)https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
#安装OpenSSH(8.6p1)
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
tar -xzvf openssh-8.6p1.tar.gz
cd openssh-8.6p1
./configure --with-zlib --with-ssl-dir --with-pam --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/ssh
make && make install
cp contrib/redhat/sshd.init /etc/init.d/sshd
#查看升级后的ssh版本
ssh -V
6)修改ssh配置文件
#修改ssh配置文件,将#PermitRootLogin prohibit-password参数改成 PermitRootLogin yes 并取消注释
vim /etc/ssh/sshd_config
#关闭selinux
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
7)重启OpenSSH
#重启OpenSSH
nohup service sshd restart
nohup systemctl restart sshd
#添加到自启动
chkconfig --add sshd
8)测试
SSH重开窗口连接服务器。
-
卸载不安全的telnet备用远程连接
#卸载telnet服务
sudo yum remove telnet-server