openSSH升级 详细

用到的所有文件: https://pan.baidu.com/s/1anMwgaRmZYjAwJnr8U0qnA 提取码: 63ev

 

 

 

Linux Centos7 OpenSSH版本低导致的安全漏洞 升级OpenSSH和OpenSSl来修复漏洞

      由于最近公司项目需要重新部署到服务器,检查出的安全漏洞,其中 一项就是Openssh版本低过低所以导致的远程执行漏洞,如下:

          

于是我就要进升级版本填补漏洞,首先

1、查看OpenSSH版本,在服务器输入以下命令:

命令:ssh -V
 
 

得到:

2、确认系统是否已经确认安装gcc编译器:

命令:gcc -v
 
 

得到:

如果没安装的同学可以参考:

https://www.imooc.com/article/17780?block_id=tuijian_wz%20yum%20-y%20install%20gcc%20gcc-c++%20kernel-devel%20//

3.升级Zlib

下载最新版本的Zlib:Zlib 官方网站:http://www.zlib.net/

目前最新版本的 Zlib 是 zlib-1.2.11.tar.gz

进入你的下载文件夹下载:


 
 
  1. 命令:cd /usr/local/src
  2. 命令:wget -c http://www.zlib.net/zlib-1.2.11.tar.gz

得到:

编译安装Zlib:


 
 
  1. 解压命令: tar xzvf zlib-1.2.11.tar.gz
  2. 命令:cd zlib-1.2.11/
  3. 编译:./configure --prefix=/usr/local/zlib
  4. 安装:make install


 

 

现在zlib 编译安装在 /usr/local/zilib中了

4.升级openssl:

确认是否安装了SSI和查看版本:

命令:openssl version -a 或者 openssl version
 
 

 

目前能与Openssh配合的版本就是1.02版本

 


 
 
  1. 命令:cd /usr/local/src
  2. 命令:sudo wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
  3. 命令:sudo tar zxf openssl-1.0.2j.tar.gz
  4. 命令:cd openssl-1.0.2j
  5. 命令:sudo ./config --prefix=/usr/local/openssl
  6. 命令:sudo make
  7. 命令:sudo make install

备注:/usr/bin/openssl为旧的Openssl文件,进行下一步之前记得备份一下

执行以下命令进行更换旧版的Openssl:


 
 
  1. 重命名原来的openssl命令:sudo mv /usr/bin/openssl /usr/bin/openssl.bak
  2. 将安装好的openssl 的openssl命令软连到/usr/bin/openssl:
  3. 命令:sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
  4. 切换到root权限:sudo bash
  5. 在/etc/ld.so.conf文件中写入openssl库文件的搜索路径: echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
  6. 使修改后的/etc/ld.so.conf生效:ldconfig -v
  7. 查看版本:openssl version

参考来至:http://www.cnblogs.com/dinglin1/p/9047818.html

至此,Openssl升级完毕

5、关闭selinux 

命令:sudo vim /etc/sysconfig/selinux
 
 

修改 SELINUX=disabled,输入:wq 保存退出

 

6、安装telnet并开起来,防止意外导致ssh无法连接

 

1、检测telnet-server的rpm包是否安装:

命令:rpm -qa telnet-server 
 
 

如没有输出就要安装,安装命令:

命令:sudo yum install telnet-server
 
 

然后发现没有安装包的错误:

只能通过下载安装包来,提供telnet的rpm包下载网址:https://pkgs.org/download/telnet-server。我下载的 telnet-server-0.17-64.el7.x86_64.rpm版本。下载安装命令:


 
 
  1. 命令:cd download
  2. 命令:wget http://mirror.centos.org/centos/7/os/x86_64/Packages/telnet-server-0.17-64.el7.x86_64.rpm
  3. 命令:sudo yum install telnet- server -0.17 -64.el7.x86_64.rpm
  4. 命令:rpm -qa telnet- server 
  5. 命令:telnet- server -0.17 -64.el7.x86_64.rpm
  6. 命令:rpm -qa telnet- server
 
 
 

1、检测xinetd 的rpm包是否安装:

命令:rpm -qa xinetd
 
 

如没有输出就要安装,安装命令:

命令:sudo yum install xinetd
 
 

然后发现又是没有安装包的错误:

只能通过下载安装包来,我下载的是telnet-server-0.17-64.el7.x86_64.rpm版本。下载安装命令:


 
 
  1. 命令:wget http:/ /mirror.centos.org/centos /7/os /x86_64/Packages/xinetd- 2.3. 15- 13.el7.x86_64.rpm
  2. 命令:sudo yum install xinetd- 2.3. 15- 13.el7.x86_64.rpm

 

 

安装完成后,将xinetd服务和telnet加入开机自启动:


 
 
  1. 命令:sudo systemctl enable xinetd.service
  2. 命令:sudo systemctl enable telnet.socket

最后,启动以上两个服务即可:

由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd 。


 
 
  1. 命令:sudo systemctl start telnet.socket
  2. 命令:sudo systemctl start xinetd

 

参考来至:https://www.cnblogs.com/lixuwu/p/6102444.html

 

默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容:


 
 
  1. echo 'pts/0' >>/etc/securetty
  2. echo 'pts/1' >>/etc/securetty

以上命令需要root权限才能执行,最后才重启服务

重启服务:service  xinetd  restart
 
 

而且还开通相对应的23端口,这里我就不多说了,因为我们公司端口是统一管理的,接下来在你计算机上打开telnet客户端:

然后测试打开cmd.exe看看能不能登录,telnet+IP,回车:

登录成功,接下来我们就可以安心地升级openSSH

7、升级openSSH

备份旧ssh配置文件夹 /etc/ssh :


 
 
  1. sudo cp -rf /etc/ssh /etc/ssh.bak

下载openSSH安装包:


 
 
  1. 命令:cd download(这是我自己的下载文件夹)
  2. 命令:sudo wget http: //ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz

提供个下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

接下来就是解压安装OpenSSH:


 
 
  1. 命令:sudo tar -zxvf openssh- 7.4p1.tar.gz
  2. 命令:cd openssh- 7.4p1
  3. 命令:sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers

发现是缺各种Open-devel依赖包,然后去网上下载rpm安装包,发现出现各种问题,搞了好久,贼烦,就是不对应版本,浪费了一天多时间,又是重新安装openssl什么的,发现并没有用,得安装一个Openssl-fips,安装以后又出现什么缺pam-devel包的错误,然后还是一样唉,怀疑是不是镜像源,怎么啥安装包都没有,都得下载,于是去更换镜像源,发现镜像源名字改了,所以服务器不能识别了,改为原来的名字:


 
 
  1. 命令: cd /etc/yum.repos.d
  2. 命令:sudo mv /etc/yum.repos.d/CentOS-Base.repo.backup /etc/yum.repos.d/CentOS-Base.repo

现在发现可以各种yum install 各种依赖包了。。。。说多了都是泪了,开发兼职运维的泪 

接着安装两个依赖包:


 
 
  1. 命令:sudo yum install openssl-devel
  2. 命令:sudo yum install pam-devel

然后重新编译:

安装命令:sudo make 或者 sudo make install
 
 

到这里我的会出现说Key的权限过于open,所以我改成600了:


 
 
  1. 命令:cd /etc/ssh/
  2. 命令:chmod 600 ssh_host_ecdsa_key
  3. 命令:chmod 600 ssh_host_rsa_key
  4. 命令:chmod 600 ssh_host_ed25519_key

复制配置

命令:sudo cp -p sshd_config /etc/ssh/sshd_config
 
 

 

查看版本:ssh -V

 
 

配置允许root使用ssh:

命令:sudo vim /etc/ssh/sshd_config
 
 

取消注释 PasswordAuthentication yes

重启ssh服务:

命令:sudo service sshd restart
 
 

升级完之后不能用密码连接了

经过一番千辛万苦研究透了升级的方法,结果升级完重启sshd服务,ssh就连不上了

查了各种资料都是重复的

PermitRootLogin yes

vim /etc/init.d/sshd在‘$SSHD $OPTIONS && success || failure’这一行上面加上 OPTIONS="-f /etc/ssh/sshd_config"

照做并无效果(第一个确实要这么设置,第二个无必要)

后来看到了一篇文章提到关闭selinux,检查一台之前升级过openssh却可以连上的服务器,发现他的selinux确实是关闭的,而连不上的这台服务器是开着的,关闭之果然可以连接上。

不想直接关掉selinux,于是使用getsebool -a | grep ssh

在列出的几个设置项里尝试了一下,最终发现,使用setsebool -P authlogin_shadow on命令修改此项即可。

-P表示永久修改


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值