OpenSSH 命令注入漏洞(CVE-2020-15778)
详细描述
OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。
OpenSSH 9.0p1及之前版本中的scp的scp.c文件存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。
解决办法
临时缓解措施
可以禁用scp,改用rsync等缓解风险(可能会导致小文件机器内拷贝变慢)
禁止scp
rpm -qa|grep openssh-*
yum remove openssh-clients -y
删除了openssh-clients后,再执行scp,就会报下面的错误:
-bash: scp: command not found
但删除该包也会导致其他ssh命令不可用
移除scp执行权限
whereis scp #查找scp所在目录
cd /usr/local/bin
chmod -x scp #移除执行权限
ll scp
这时远程执行scp命令时也会提示权限不够
升级OpenSSH
开启telnet
记得先测试telnet能否成功登录再升级openssh不然ssh会挂掉,当然如果你是在本机升级可以省略这一步
yum install telnet-server telnet
systemctl start telnet.socket
systemctl enable telnet.socket
lsof -i:23
#开放防火墙策略
firewall-cmd --zone=public --add-port=23/tcp --permanent
备份旧的ssh
#查询ssh目录
whereis sshd
mv /usr/sbin/sshd /usr/sbin/sshd.bak
whereis ssh
mv /usr/bin/ssh /usr/bin/ssh.bak
whereis ssh-keygen
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
卸载旧的openssh-server
yum remove openssh-server
安装新的openssh-server
# 安装依赖
yum install zlib-devel openssl-devel -y
cd /usr/local
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.1p1.tar.gz
tar -zxvf openssh-9.1p1.tar.gz
cd openssh-9.1p1
./configure
make & make install
# 设置全局使用
cp /usr/local/sbin/sshd /usr/sbin
cp /usr/local/bin/ssh /usr/bin
cp /usr/local/bin/ssh-keygen /usr/bin/
查看新本版
ssh -V
启动ssh 并设置开机自启
cp /usr/local/openssh-9.1p1/contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd restart
systemctl status sshd
systemctl enable sshd
安装后可能会导致ssh无法连接,解决办法如下
第一步:
cp /usr/local/openssh-9.1p1/sshd_config /etc/ssh/
第二步:
vim /etc/ssh/sshd_config
找到PermitRootLogin without-password 改成PermitRootLogin yes
第三步:
vim /etc/init.d/sshd
在48行下面加上 OPTIONS="-f /etc/ssh/sshd_config"
第四步:
systemctl daemon-reload
systemctl restart sshd