1、OpenSSH简介
OpenSSH是SSH(Secure Shell)协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。
OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。
2、OpenSSH安全漏洞
CVE-2021-28041漏洞描述:
OpenSSH(OpenBSD Secure Shell)是Openbsd计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。OpenSSH before 8.5 存在安全漏洞,攻击者可利用该漏洞在遗留操作系统上不受约束的代理套接字访问。
CVE-2020-15778漏洞描述:
OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。
3、升级OpenSSH操作步骤
3.1准备OpenSSH升级包
Centos6系统
1 2 3 | wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-8.8p1-1.el6.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-clients-8.8p1-1.el6.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-server-8.8p1-1.el6.x86_64.rpm |
Centos7系统
1 2 3 | wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-8.8p1-1.el7.centos.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-clients-8.8p1-1.el7.centos.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-server-8.8p1-1.el7.centos.x86_64.rpm |
Centos8系统
1 2 3 | wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-8.8p1-1.el8.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-clients-8.8p1-1.el8.x86_64.rpm wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-server-8.8p1-1.el8.x86_64.rpm |
3.2准备升级脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #!/bin/bash NowTime=$(/bin/date +%Y%m%d%H%M%S) if [[ "$(whoami)" != "root" ]]; then echo "please run this script as root !" >&2 exit 1 fi if [[ ! -f /usr/bin/cp ]]; then echo "/usr/bin/cp file exists" >&2 exit 1 fi if [[ ! -d "/opt/backup/openssh_bak" ]];then mkdir -p /opt/backup/openssh_bak/ /usr/bin/cp /etc/pam.d/sshd /opt/backup/openssh_bak/sshd.bak /usr/bin/cp /etc/pam.d/system-auth /opt/backup/openssh_bak/system-auth.bak /usr/bin/cp /etc/ssh/sshd_config /opt/backup/openssh_bak/ /usr/bin/cp /etc/ssh/ssh_config /opt/backup/openssh_bak/ /usr/bin/cp /etc/ssh/ssh*key /opt/backup/openssh_bak/ else mkdir -p "/opt/backup/openssh_$NowTime/" /usr/bin/cp /etc/pam.d/sshd "/opt/backup/openssh_$NowTime/sshd.bak" /usr/bin/cp /etc/pam.d/system-auth "/opt/backup/openssh_$NowTime/system-auth.bak" /usr/bin/cp /etc/ssh/sshd_config "/opt/backup/openssh_$NowTime/" /usr/bin/cp /etc/ssh/ssh_config "/opt/backup/openssh_$NowTime/" /usr/bin/cp /etc/ssh/ssh*key "/opt/backup/openssh_$NowTime/" fi rpm -Uvh openssh-*.rpm chmod 600 /etc/ssh/ssh_host_*_key /usr/bin/cp /opt/backup/openssh_bak/sshd.bak /etc/pam.d/sshd echo -e ' Port 22 AddressFamily inet ListenAddress 0.0.0.0 Protocol 2 SyslogFacility AUTHPRIV PermitRootLogin yes MaxAuthTries 6 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes PermitEmptyPasswords no UsePAM yes UseDNS no X11Forwarding yes Subsystem sftp /usr/libexec/openssh/sftp-server ' > /etc/ssh/sshd_config systemctl enable sshd systemctl restart sshd ssh -V |
3.3查看版本(Centos8系统为例)
1 2 | [root@aqzt-com ~]# ssh -V OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020 |
3.4下载升级包(可以上crpm.cn搜索rpm包)
1 2 3 | [root@aqzt-com ~]# wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-8.8p1-1.el8.x86_64.rpm [root@aqzt-com ~]# wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-clients-8.8p1-1.el8.x86_64.rpm [root@aqzt-com ~]# wget http://mirrors.crpm.cn/openssh/x86_64/Packages/openssh-server-8.8p1-1.el8.x86_64.rpm |
3.5下载openssh升级脚本
1 | [root@aqzt-com ~]# wget http://mirrors.crpm.cn/openssh/x86_64/Packages/update-ssh.sh |
3.6开始升级OpenSSH
1 | [root@aqzt-com ~]# bash update-ssh.sh |
3.7升级结束
1 2 | [root@aqzt-com ~]# ssh -V OpenSSH_8.8p1, OpenSSL 1.1.1c FIPS 28 May 2019 |