Centos7 编译安装openssl和openssh

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

 

 

 

上一篇:openssh漏洞修复方法(开启telnet登录root)


下一篇:OpenSSH升级