OpenSSH 服务器的 20 个最佳实践–手工升级、打补丁

前几天安全团队发邮件说其中一台服务器的OpenSSH6.2的版本有bug,需要升级到6.7才行。

于是我赶紧登录到服务器看,在openSuSE里的yast里提供的最新版本就是6.2,如果要强升级到6.7,只有在 -openssh 的站点下载最新的源码,然后编译、安装。

问题是,通过源码编译安装的openssh与openSuSE自带的安装可能存在路径上的差异。

openSuSE随机安装的openssh的配置文件默认在 /etc/ssh/sshd_config下,而通过源码编译、安装的配置文件默认在 /usr/local/etc/sshd_config 下,如果要在编译时指定 –prefix ,比如:
shell> ./configure –prefix=/usr

则相应的配置文件会生成在 /usr/etc/sshd_config 下面。这是会发现,不但配置文件会新生成,在启动脚本里,也会将使用的配置文件指向新生成的配置文件,而不是使用原来的/etc下面的sshd_config .

如果在安装升级后不进行测试,可能会导致 /etc/ssh/sshd_config 文件失效,而使用中的配置文件变成了 openSSH自带的默认配置的文件,这是很危险的,默认的openSSH的配置文件,可能只有基于password的验证。普遍情况下,这是不能被允许的。

正确的在yast之外,不使用repository的情况下,手工下载源码包进行升级的步骤:

1. 到 -openssh 站下载源码包;

2. 解压,修改 versions.h 中的版本信息,进一步增强安全,隐去具体的版本号;

3. 带 –prefix=/usr  –with-pam 进行配置 ;

4. 进行编译, make

5. 停掉 sshd服务和进程,使用 ps确认停掉了相应的进程;

6. make install

7. 替换 /usr/etc/sshd_config 或者 /usr/local/etc/sshd_config, 通常的做法是,移去这样的文件,然后在相应的目录下生成指向 /etc/ssh/sshd_config的软连接:
shell> cd /usr/etc/;
shell> mv sshd_config sshd_config.orig
shell> ln -s /etc/ssh/sshd_config sshd_config

8. 重新启动 ssh 服务, /etc/init.d/sshd start

9. ps 确认相关进行正常运行中

10. 找另外一台计算机以通常的方式尝试进行连接,确认新的 ssh服务正常提供服务

 

此条目发表在服务器运维, 计算机技术分类目录。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code