APP下载

CentOS 6.8离线升级OpenSSH 8.2

2020-11-11新疆赵修文

网络安全和信息化 2020年10期
关键词:配置文件客户端服务器

■ 新疆 赵修文

编者按:笔者在进行漏洞扫描时发现系统存在不少漏洞,需要进行系统升级。本文笔者介绍了如何升级OpenSSH最新版的详细步骤。

局域网服务器安装CentOS 6.8 Final,OpenSSH为5.3,当在进行本地安全漏洞扫描时,发现全部为OpenSSH漏洞。为杜绝安全隐患,需要将OpenSSH升级到最新版。

升级前准备

当前CentOS最新版为8.1,OpenSSH最新版为8.2,操作系统和软件较该服务器的版本都有了很大的变化,升级时依赖关系也会变得更复杂,甚至可能造成严重冲突;另一方面,作为生产系统,要保持系统持续可用,因此优先考虑采用tarball方式升级。

使用tarball包安装前一定要查阅INSTALL、README及相关的NOTES文件,了解安装的先决条件,确保安装顺利,少走弯路,有问题可查看FAQ文件。另外升级前一定要做好备份并进行模拟,升级时详细记录过程。

1.下载Open SSH(https://ww w.openssh.org/),当前最新为8.2p1,解压后查看INSTALL文件,得知安装需要满足以下条件:C编译器;Zlib 1.1.4或1.2.1.2,或更高版本;lib crypto(LibreSSL或Open SSL 1.0.1以上,或1.1.0g以上,或任何1.1.1版本)。

2.下载Zlib(https://zlib.net/),当前最新版为zlib-1.2.11。

3.下载OpenSSL(https://www.openssl.org/source/),当前最新版本为openssl-1.1.1g,查看INSTALL文件,除上述要求外,OpenSSL还需要:Perl 5.10.0以上;perl模块Text::Template,以及其他的一些要求。

4.下载Perl(http://www.cpan.org/src/),当前最新版为perl-5.30.2,由于该服务器perl为5.10.1,可以不下载。

5.下载Perl模块Text::Template(https://meta cpan.org/或http://search.cpan.org/),由于openssl-1.1.1g源码中包含了此模块,可以不下载。

安装gcc编译器

查看服务器上没有安装gcc,可用CentOS 6.8 ISO文件或光盘作yum源进行安装,这是最方便的安装方式,yum会解决所有依赖关系。注:正确配置后,如果提示无法联网不能安装gcc,请删除文件/etc/yum.repos.d/CentOS-Media.repomount-o loop/root/CentOS-6.8-x86_64-bin-DVD1.iso/mnt/iso //挂载

cp -pr/etc/yum.repos.d//etc/yum.repos.d.bak //备份yum配置

vi/etc/yum.repos.d/CentOS-Media.repo //编辑配置文件并保存

改为:baseurl=file:///mnt/iso///yum源url

enabled=1 //启用该软件仓库

yum clean all//清除yum缓存目录

yum makecache //重建yum仓库元数据

yum install gcc//安装gcc

编译安装zlib

zlib用于压缩和解压缩功能,执行以下命令安装,zlib默认安装在/usr/local/lib。提示:编译安装软件,应确保每一步没有错误(测试除外),再进行下一步操作。

tar -xvf zlib-1.2.11.ta r.gz //解压

cd zlib-1.2.11

//改变目录至解压后的目录

./configure

//编译前的配置

make

//编译

make test

//测试

make install

//安装

后续其他软件的编译安装均按此步骤进行,后续只列出配置步骤(config或configure),其余步骤省略。

编译安装perl

使用perl --version查看该服务器Perl版本是5.10.1,符合要求,但在编译openssl-1.1.1g后,进行测试时有2项错误,但安装使用均没有问题,查看编译目录中的错误信息(ls test/recipes/| grep err),未查明测试失败原因。若有疑虑,可以编译安装最新版的perl5.30.2,整个过程不会报任何错误。

./Configure -des-Dprefix=/usr/local/perl-5.30.2

export PATH=/usr/local/perl-5.30.2/bin:$PATH //使新版perl成为默认命令

echo " export PATH=/usr/local/perl-5.30.2/bin:$PATH " >>~/.bash//写入文件

perl -v //查看版本为v5.30.2

-des接受默认参数,-Dprefix指定安装目录。

编译安装OpenSSL

由于OpenSSL是一个底层软件,有很多应用依赖此软件,因此将其安装在非默认目录,防止影响系统其它应用。另外OpenSSL 1.1.1版本均存在安全漏洞,其他版本也不再更新,建议升级到1.1.1g。

./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl

echo '/opt/openssl/lib'>>/etc/ld.so.conf //将库文件搜索路径添加到配置文件中,实现自动加载库,也可使用LD_LIBRARY_PATH环境变量

ldconfig //重新加载库文件搜索路径

export PATH=/opt/openssl/bin/:$PATH //使新版openssl成为默认命令

echo " export PATH=/opt/openssl/bin/:$PATH " >>~/.bash//写入文件

openssl version -a //查看openssl版本号为OpenSSL 1.1.1g

· --prefix指定openssl的安装目录,--openssldir指定OpenSSL配置文件安装目录。

编译安装OpenSSH

若服务器不在本地,卸载OpenSSH之前一定要先安装配置Telnet服务器或将新编译的OpenSSH安装在其他位置,而不删除系统原有OpenSSH,防止无法连接服务器。

注意:卸载完成后,如果不重启服务器或主动断开连接,此连接仍可用,但可能会出现超时无法连接(根据服务器和客户端配置而定)。由于OpenSSH不是底层软件,系统和其他软件不依赖此软件,因此可以卸载。

1.备份、卸载系统OpenSSH

mkdir/etc/ssh.old

cp -pr/etc/ssh/*/etc/ssh.old///备份系统openssh

rpm -e `rpm -qa |grep openssh` //卸载系统openssh

rm -rf/etc/ssh //删除系统原有的配置

2.编译安装OpenSSH

./configure --prefix=/opt/ssh --sysconfdir=/etc/ssh --with-ssl-dir=/opt/openssl

ln -s/opt/ssh/bin/ssh/usr/bin //创建新编译ssh软链接

ln -s/opt/ssh/bin/ssh-keygen/usr/bin///创建ssh-keygen软链接

ssh -V //查看Open SSH版本为8.2p1

--prefix指定安装目录,--sysconfdir指定配置文件安装目录,--with-ssl-dir=DIR指定LibreSSL/OpenSSL库的安装目录。

3.配置OpenSSH

cp contrib/redhat/sshd.init/etc/init.d/sshd //复制源码中的配置文件

chkconfig --add sshd//添加sshd服务

chkconfig sshd on//设置sshd服务开机自启

ln -s/opt/ssh/sbin/sshd /usr/sbin///创建sshd软链接

vi/etc/ssh/sshd_config //修改配置文件,去掉以下5行注释符#,并将prohibit-password修改为yes(默认配置禁止密码登录),最后保存退出。

Port 22

ListenAddress 0.0.0.0

PermitRootLogin prohibit-password

AuthorizedKeysFile.ssh/authorized_keys

PasswordAuthenticati

on yes

service sshd start//启动sshd服务

至此,OpenSSH 8.2升级完毕。提示:服务自启脚本可以在http://www.linux fromscratch.org/blfs/下载,并使用make install-sshd命令安装;应禁止root远程登录,关闭Banner,使用密匙验证的方式等(比密码验证方式更为安全),可提高系统的安全性,具体参见官网OpenSSH配置;如需使用Linux-PAM支持SSH,需进行配置,SSH仅使用PAM检查密码,如果已经关闭密码验证方式,则不需要安装配置PAM。

其他问题

1.安装Text::Template模块。若要安装该Perl模块,可按照如下指令安装。

perl Makefile.PL INS TALL_BASE=/usr/local/perl-5.30.2/

//创建Makefile文件并指定安装位置

export PERL 5LIB=/usr/local/perl-5.30.2/lib/

//将模块搜索路径加入@INC数组

echo " expor t PERL5LIB=/usr/local/perl-5.30.2/lib/" >>~/.bash

//写入文件

perldoc -l Text::Templa te

//验证模块是否安装成功,无输出表示没有安装

如果连接互联网,使用CPAN工具安装Perl模块最方便。

2.SSH客户端连接问题。OpenSSH升级完成后,在使用SSH客户端软件连接服务器时,若提示“Key exchange failed.No compatible key exchange method…”,说明key交换方法不兼容,需要使用较新版本的客户端软件即可连接。

3.若软件安装后,查不到帮助信息,请编辑/etc/man.config,将该软件man目录的路径加入此配置文件。

猜你喜欢

配置文件客户端服务器
你的手机安装了多少个客户端
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
PowerTCP Server Tool
BlackJumboDog
2018年全球服务器市场将保持温和增长
新华社推出新版客户端 打造移动互联新闻旗舰