ubuntu下openssh升级

ubuntu下openssh升级

 

 

  1. OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组所维护的一套用于安全访问远程计算机的连接工具。该工具
  2. 是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。sshd是
  3. 其中的一个独立守护进程。OpenSSH 7.2p2及之前版本的sshd中的session.c文件中的‘do_setup_env’函数存在安全漏洞。
  4. 当程序启用UseLogin功能并且PAM被配置成读取用户主目录中的.pam_environment文件时,本地攻击者可借助/bin/login
  5. 程序的特制的环境变量利用该漏洞获取权限;sshd中的session.c文件中存在CRLF注入漏洞。远程攻击者可借助特制的
  6. X11转发数据利用该漏洞绕过既定的shell-command限制。

 

准备(必要的*)

因为是线上环境,避免升级出现错误导致ssh服务挂掉,会导致一系列的麻烦事,所以提前安装telnet服务

apt-get install openbsd-inetd telnetd telnet

/etc/init.d/openbsd-inetd restart # 启动服务

netstat -anpt|grep 23 # 查看telnet服务的默认端口是否启动

telnet ip # 测试是否成功登陆

我选择源码编译,下载安装包并上传

 

1. openssl

# 官方下载地址: https://www.openssl.org/source/

2. openssh

# 官方下载地址:https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

3. zlib

# 官方下载地址: http://www.zlib.net/

 

# 卸载原openssh

apt-get remove openssh-server openssh-client

#安装 libpam0g-dev

apt-get install libpam0g-dev

 

1.安装zlib

 

tar xf zlib-1.2.11.tar.gz

cd zlib-1.2.11

./configure --prefix=/usr/local/zlib

make && make install

---------------------------------若报错-------------------------------------------

# 报错: c_zlib.c:25:19: fatal error: zlib.h: No such file or directory

# zlib标准安装指导:

# /usr/local/src/zlib-1.2.11

# 构建静态库

./configure

make test

make install

# 构建共享库

make clean

./configure --shared

make test

make install

cp zutil.h /usr/local/include

cp zutil.c /usr/local/include

 

2.升级openssl

 

tar xf openssl-1.0.2o.tar.gz

cd openssl-1.0.2o

./config shared zlib #一定要加上shared 参数,要不在安装openssh的时候就无法找到

make && make install

 

# 备份原来的openssl

mv /usr/bin/openssl /usr/bin/openssl.bak

mv /usr/include/openssl /usr/include/openssl.bak

# 因为源码安装默认安装的位置是 /usr/local/ssl 需要将创建软链接到系统位置

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

# 将openssl 的lib 库添加到系统

echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl.conf

#使新添加的lib 被系统找到

ldconfig

# 查看openssl版本

openssl version -a

至此opensll 已经成功升级到1.0.2o

安装完之后使用curl,nodejs等命令如果报错,说明动态库方面调用有问题,报错如下

/usr/local/sbin/xxxx: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/local/sbin/xxxx)

/usr/local/sbin/xxxx: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/local/sbin/xxxx)

/usr/local/sbin/xxxx: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/local/lib/xxxx-server.so)

/usr/local/sbin/xxxx: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/local/lib/xxxx-radius.so)

# 到openssl解压目录下

vim openssl.ld

//文件内容

OPENSSL_1.0.0 {

global:

*;

};

make distclean

# 重新编译

./config shared zlib -Wl,--version-script=/usr/src/openssl-1.0.2o/openssl.ld -Wl,-Bsymbolic-functions

make

make install

 

-----------------------------------若报错-------------------------------------------------

OpenSSL version mismatch. Built against 1000105f, you have 10001060

看到/etc/ld.so.conf里面是这样写的:

 

 

之前添加lib库的命令是这样的: echo "/usr/local/ssl/lib/" >> /etc/ld.so.conf

后来修改为:echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl.conf

 

3.升级openssh

 

# 到目前为上发现在的openssh的漏洞都是openssh7.4以前的版本。我们当前升级的是openssh7.7p1

# 备份原openssh文件

mv /etc/init.d/ssh /etc/init.d/ssh.old

cp -r /etc/ssh /etc/ssh.old

 

tar xf openssh-7.7p1.tar.gz

cd openssh-7.7p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd #需要指定openssl的安装路径

---------------------------------报错-------------------------------------------

# 报错 checking whether OpenSSL's PRNG is internally seeded... yes

# configure: error: PAM headers not found

# 解决:ubuntu: apt-get install libpam0g-dev centos: yum -y install pam-devel

--------------------------------------------------------------------------------

 

make && make install

---------------------------------报错-------------------------------------------------------------------

# 报错: Privilege separation user sshd does not exist

vim /etc/passwd

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

# 注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序

# /etc/passwd文件是Linux/UNIX安全的关键文件之一.该文件用于用户登录时校验 用户的口令,当然应当仅对root可写.

---------------------------------------------------------------------------------------------------------

#可查看当前SSH的版本。

ssh -V

sshd -V

到目前所有升级就已经完成了

 

1. 修改默认配置文件

根据之前配置修改,保证配置相同

 

2. 也可使用原来的配置文件

cd /etc/ssh

mv sshd_config sshd_config.default

cp ../ssh.old/sshd_config ./

 

# 使用原来的/etc/init.d/ssh

mv /etc/init.d/ssh.old /etc/init.d/ssh

 

# 取消注销指定服务

systemctl unmask ssh

# 重启服务

systemctl restart sshd

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值