7.4如下openssh版本存在严重漏洞:linux
- OpenSSH 远程权限提高漏洞(CVE-2016-10010)
- OpenSSH J-PAKE受权问题漏洞(CVE-2010-4478)
- Openssh MaxAuthTries限制绕过漏洞(CVE-2015-5600)
OpenSSL>=1.0.1能够不用升级OpenSSL
一、安装软件web
yum -y install xinetd telnet-server* telnet
二、启用telnet服务服务器
# cat > /etc/xinetd.d/telnet << END service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no } END
将其中disable字段的yes改成no以启用telnet服务app
# mv /etc/securetty /etc/securetty.old #容许root用户经过telnet登陆 # systemctl start xinetd #启动telnet服务 # systemctl enable xinetd #使telnet服务开机启动,避免升级过程当中服务器意外重启后没法远程登陆系统
三、修改pam文件
telnet 默认是不容许 root 直接登录,需修改 /etc/pam.d/login 文件,将一下内容注释掉ssh
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
将 /etc/pam.d/remote 文件中的 下面内容注释socket
auth required pam_securetty.so
四、添加登录终端tcp
echo "pts/0" >> /etc/securetty echo "pts/1" >> /etc/securetty echo "pts/2" >> /etc/securetty echo "pts/3" >> /etc/securetty echo "pts/4" >> /etc/securetty
五、测试telnet可否正常登入系统svg
telnet ip [23]
一、关闭selinux和防火墙以及NetworkManager测试
setenforce 0 sed -i '/SELINUX=/s/enforcing/disabled/g' /etc/sysconfig/selinux systemctl stop firewalld systemctl disable firewalld systemctl stop NetworkManager systemctl disable NetworkManager
二、安装软件ui
yum -y install pam-devel gcc zlib-devel tcp_wrappers-devel
三、备份旧的ssh配置文件,中止sshd服务
tar -czf /usr/local/src/ssh_old.tar.gz /etc/ssh systemctl stop sshd systemctl disable sshd
一、下载地址
下载的软件包有
openssl-fips-2.0.16.tar.gz openssl-1.0.2q.tar.gz
二、编译 openssl-fips
export FIPSDIR=/data/fips-2.0.16 cd /usr/local/src/ tar -xf openssl-fips-2.0.16.tar.gz cd openssl-fips-2.0.16 ./config make && make install
三、编译openssl
cd /usr/local/src/ tar xf openssl-1.0.2q.tar.gz cd openssl-1.0.2q ./config --prefix=/data/openssl1.0.2q --openssldir=/data/openssl1.0.2q/openssl fips --with-fipsdir=/data/fips-2.0.16 zlib-dynamic shared -fPIC make depend make make test make install
备注:
#参数说明: --prefix:指定openssl的安装目录。 --openssldir:指定openssl文件的安装目录。 fips:集成FIPS模块。 --with-fipsdir:指向FIPS模块的安装目录位置。 zlib-dynamic:编译支持zlib压缩/解压缩,让openssl加载zlib动态库。该选项只在支持加载动态库的操做系统上才支持。这是默认选项。 shared:除了静态库之外,让openssl(在支持的平台上)也编译生成openssl动态库。 -fPIC:将openssl动态库编译成位置无关(position-independent)的代码。
四、添加到动态连接库
echo '/data/openssl1.0.2q/lib' >> /etc/ld.so.conf ldconfig
一、下载地址
下载的软件包有
openssh-7.6p1.tar.gz
二、编译
cd /usr/local/src/ tar xf openssh-7.6p1.tar.gz cd openssh-7.6p1 ./configure --prefix=/data/openssh7.6p1 --with-ssl-dir=/data/openssl1.0.2q --with-pam --with-tcp-wrappers --with-md5-passwords --without-hardening --sysconfdir=/etc/ssh make rm -rf /etc/ssh #删除原来的配置文件 make install
三、修改 sshd 配置文件
cat >> /etc/ssh/sshd_config << END PermitRootLogin yes #这个很关键 Protocol 2 SyslogFacility AUTHPRIV PermitRootLogin yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no #编译的时候启用了PAM支持,就必须启用 UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding yes END
四、配置环境变量
cat > /etc/profile.d/path.sh << END export PATH=/data/openssh7.6p1/bin:/data/openssh7.6p1/sbin:$PATH END source /etc/profile.d/path.sh
五、备份并替换旧的命令
cp /usr/bin/ssh /usr/bin/ssh.old \cp /data/openssh7.6p1/bin/ssh /usr/bin/ssh cp /usr/bin/ssh-keygen /usr/bin/ssh-keygen.old \cp /data/openssh7.6p1/bin/ssh-keygen /usr/bin/ssh-keygen mv /usr/sbin/sshd /usr/sbin/sshd.old ln -s /data/openssh7.6p1/sbin/sshd /usr/sbin/sshd chmod -R 744 /var/empty/sshd
六、配置 ssh 启动
cp /usr/local/src/openssh-7.6p1/contrib/redhat/sshd.init /etc/init.d/sshd chmod 755 /etc/init.d/sshd #mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak 在 '$SSHD $OPTIONS && success || failure'这一行上面加上一行 'OPTIONS="-f /etc/ssh/sshd_config"' chkconfig --add sshd chkconfig --level 345 sshd on systemctl start sshd
备注:
①有时会遇到 ssh 升级完后,sshd服务反复重启现象,这个是 sshd不兼容systemd形成的,须要
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak
②若是升级操做一直是在ssh远程会话中进行的,上述sshd服务重启命令可能致使会话断开并没有法使用ssh再行登入(即ssh未能成功重启),此时须要经过telnet登入再执行sshd服务重启命令。
七、测试
重启系统验证没问题后关闭telnet服务
mv /etc/securetty.old /etc/securetty systemctl stop xinetd systemctl disable xinetd #如需还原以前的ssh配置信息,可直接删除升级后的配置信息,恢复备份。 rm -rf /etc/ssh tar xf /usr/local/src/ssh_old.tar.gz -C /