CentOS7.6升级openssh到8.0版本
CentOS7.6/7.5默认的openssh版本为7.4p1,最近对服务器进行扫描,发现在openssh7.8以下版本存在漏洞 OpenSSH 安全漏洞(CVE-2018-15473) OpenSSH 安全漏洞(CVE-2017-15906) OpenSSH 安全漏洞(CVE-2018-15919),针对以上漏洞,对openssh进行升级到8.0
安装包准备
-
openssl-1.0.2r.tar.gz和openssh-8.0p1.tar.gz
链接:https://pan.baidu.com/s/1qyU6HOFs_GzBnm2ICvveMA
提取码:k95g -
传输对应的文件到服务器
- 打开对应的传输程序SCP或者Filezilla 这里使用SCP举例
- 输入对应的服务器ip和用户名密码
- 打开对应的传输程序SCP或者Filezilla 这里使用SCP举例
升级步骤(putty或者CRT等其他软件打开服务器)
- 创建传输文件夹
mkdir /root/package
创建后,利用SCP软件传入文件(这里使用root账号登录就行)
-
安装依赖
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
-
安装pam,zlib和net-tools等(pam和zlib对安装有无影响不确定,请自行测试)
yum install -y pam* zlib* net-tools
-
安装openssl
①解压并查看原始版本cd /root/package tar -zxvf openssl-1.0.2r.tar.gz openssl version #查看老版本
②备份下面2个文件或目录(如果存在的话就执行)ll /usr/bin/openssl mv /usr/bin/openssl /usr/bin/openssl_bak ll /usr/include/openssl mv /usr/include/openssl /usr/include/openssl_bak
③编译安装
cd openssl-1.0.2r ./config shared && make && make install #查看编译安装有无报错 如果为0则正常 echo $?
④创建软连接
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl ll /usr/bin/openssl ll /usr/include/openssl -ld
⑤执行下面2个命令加载新配置
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf /sbin/ldconfig
⑥查看版本是否更新成功
openssl version ##OpenSSL 1.0.2r 26 Feb 2019
-
安装openssh
①解压目录并赋予对应权限cd /root/package/ tar -zvxf openssh-8.0p1.tar.gz cd openssh-8.0p1 chown -R root.root /root/package/openssh-8.0p1
②删除原先ssh的配置文件和目录
rm -rf /etc/ssh/*
③配置、编译、安装
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include -- with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make && make install
注意:这是一行语句,我执行时候会报错
解决:chmod 600 /etc/ssh/ssh_host_* install -v -m755 contrib/ssh-copy-id /usr/bin install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1 install -v -m755 -d /usr/share/doc/openssh-8.0p1 install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.0p1 #最后查看编译安装有无报错 如果为0则正常 echo $?
④更改配置文件
echo 'UsePAM yes' >> /etc/ssh/sshd_config echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config ------第二步一般在正式环境不做更改,第二步是允许root远程直接登录--------
⑤从原先的解压的包中拷贝一些文件到目标位置
cp -a contrib/redhat/sshd.init /etc/init.d/sshd cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam chmod +x /etc/init.d/sshd chkconfig --add sshd systemctl enable sshd
⑥把原先的systemd管理的sshd文件删除或者移走或者删除,不移走的话影响我们重启sshd服务
mv /usr/lib/systemd/system/sshd.service /root/package/
⑦开机自动启动
chkconfig sshd on systemctl enable sshd.socket
⑧重启服务
/etc/init.d/sshd restart netstat -lntp 或者 systemctl restart sshd 附加启动停止命令 systemctl stop sshd systemctl start sshd
⑧查看版本
ssh -V #OpenSSH_8.0p1, OpenSSL 1.0.2r 26 Feb 2019