Centos7 的openssl和openssh均存在重大漏洞,需要手工编译安装。以下是编译安装方法
一. 编译安装openssl
1.检查当前openssl和openssh版本
[root@xielinux ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
[root@xielinux ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
从这里可以看到都是存在漏洞的低版本。需要升级至高版本。
2.搭建好编译的环境
yum update -y
yum groups install "Development Tools" -y
yum install perl-core libtemplate-perl zlib-devel -y
yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
yum install -y pam* zlib*
3.由于要关闭openssh,会导致自己无法ssh到服务器,所以先开启telnet服务
yum install xinetd telnet-server -y
新建一个用户,用这个用户telnet登录,再su root
useradd xie
passwd xie #为xie这个账号设置密码
更改/etc/securetty。使得我们能telnet登录
vim /etc/securetty,在文件最后添加以下4行
pts/0
pts/1
pts/2
pts/3
保存这个文件
开启telnet服务。
systemctl enable xinetd
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
防火墙允许23端口
firewall-cmd --permernent --add-port=23/tcp
firewall-cmd --reload
4.下载最新版的openssl和openssh
备份老的openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
备份老的openssl库
mv /usr/include/openssl /usr/include/openssl.bak
新建目录,并在此目录下载最新的openssl和openssh
mkdir -p /data/tools
cd /data/tools
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
tar -xvf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k/
5.编译和安装openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --shared zlib
make -j4
make install
6.为openssl创建软链接,为编译openssh做准备
软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
7.链接库文件,这里非常重要
echo '/usr/local/openssl/lib' >> /etc/ld.so.conf
ldconfig -v
openssl version -a #查看版本看看是否升级到了1.1.1k
以上完成openssl的升级
二、升级openssh操作方法
1.备份当前的openssh
cp -R /etc/ssh /etc/ssh_bak
cp /usr/sbin/sshd /usr/sbin/sshd.bak 备份启动脚本
2.移除老的openssh
rm -rf /etc/ssh/*
3.编译和安装openssh
cd /data/tools
tar -xvf openssh-8.6p1.tar.gz
cd openssh-8.6p1/
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/openssl/include/openssl --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam
make -j4
make install
4.验证openssh的版本是否到8.6p1
ssh -V
5.修改sshd的配置文件
vim /etc/ssh/sshd_config
PermitRootLogin yes
UseDNS no
UsePAM yes
6.创建服务文件
[root@linux-node3 /data/tools/openssh-8.0p1]# cp -a contrib/redhat/sshd.init /etc/init.d/sshd
[root@linux-node3 /data/tools/openssh-8.0p1]# cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@linux-node3 /data/tools/openssh-8.0p1]# chmod +x /etc/init.d/sshd
[root@linux-node3 /data/tools/openssh-8.0p1]# chkconfig --add sshd
[root@linux-node3 /data/tools/openssh-8.0p1]# systemctl enable sshd
[root@linux-node3 ~]# mv /usr/lib/systemd/system/sshd.service /data/
设置sshd服务开机启动
chkconfig sshd on
systemctl restart sshd
7.ssh登录 测试无误后关闭telnet服务
systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket
修改/etc/securetty
删除我们添加的4行内容
修改防火墙
8.验证ssh端口
netstat -lntp