CentOS 7.x 及以下自带的 openSSH 版本基本都在7.x 以下。而 openSSH 7.3 以下的版本均存在高危漏洞。所以服务器升级 openSSH 就成了一件必做的事情。

1637.png

1、查看当前系统信息

1.1、查看当前系统版本

1.2、SSL 版本信息

2、更新/安装 zlib

2.1、下载最新版本 Zlib

Zlib 官方网站:http://www.zlib.net/

2.2、编译安装 Zlib

这样,就把 zlib 编译安装在 /usr/local/zlib 中了。

3、安装 pam-devel

3.1 下载最新版本pam-devel

pam-devel官方下载网站: https://pkgs.org/download/pam-devel

3.2 rpm 安装 pam-devel

4、安装 OpenSSL

4.1、下载最新版本的 openssl 和 openssl-fips

打开 OpenSSL 的官方网站下载:https://www.openssl.org/source/

4.2、编译安装 openssl-fips

默认安装到 /usr/local/ssl/fips-2.0

4.3、编译安装 openssl

或者

注意:必须加上--shared,否则编译时会找不到新安装的 openssl 的库而报错

提示: 这一步很重要!是进行 SSL加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重!

或者安装升级 openssl 的方式采用如下步骤:

4.4、查看是否升级成功

5、安装 OpenSSH

5.1、下载最新软件包源码

官方下载地址 http://www.openssh.com/portable.html#http

5.2、备份当前 openssh

5.3、卸载当前 openssh

5.4、安装 openssh

5.5、安装后环境配置

修改 /etc/ssh/sshd_config文件,添加 PermitRootLoginyes 到文件 /etc/ssh/sshd_config 的末尾:

5.6、启动 ssh 服务

5.7、验证是否升级成功

注意:

记得关闭防火墙: systemctl stop firewalld


记得关闭 SELinux


1、临时关闭(不用重启机器)

2、修改配置文件需要重启机器 修改 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled

5.8、修改 ssh 默认 22 端口

ssh 默认的端口为 22,有很多脚本小子喜欢用一些 hack 工具去扫描,一不小心可能就因为新的漏洞爆出或巧合,给你的机器权限拿走了。我们可以修改默认端口。步骤参考如下。首先修改配置文件  

找到 #Port 22 一段,这里是标识默认使用22端口,修改为如下:

然后保存退出。50000 为修改后的端口,可自定义一个,一定要记住,否则后续连接不上就麻烦了。重启 ssh。执行:

此时 SSH 端口将同时工作于 22 和 50000 上 编辑防火墙配置,启用50000端口:

再次重启 ssh:

现在请使用ssh工具连接 50000 端口,来测试是否成功。如果连接成功了,则再次编辑 sshd_config 的设置,将里边的 Port22 那一行注释或删除,然后再重启一下 ssh 即可。 注意: 如果此时 ssh 工具连接提示 找不到匹配的host key算法 而无法连接,可尝试如下方法(删除 ssh_host 前缀的文件,然后重启 ssh 生成新的):