放在最前面:鉴于网上爬虫猖獗,博客被盗时有发生,这里需要来个链接,大家请认准来自博客园的Scoter:http://www.cnblogs.com/scoter2008,本文将持续更新
最近绿盟给扫描出了几个漏洞,都是关于openssh的,于是仔细看了一下,即使是最新版的CentOS 7.2也还在用openssh 6.6.1p1,yum update更新无济于事,那么只有我们自己动手了
CentOS 7.2更新过程
1、查看一下openssh的版本信息
[root@localhost ~]# ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
2、备份文件,备份一下/etc/ssh/sshd_config文件,安装完成后可以参考
[root@localhost ssh]# mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
3、升级的思路是将新版openssh制作成rpm包,然后安装更新(这是尝试了几种方法后,感觉最好的一种),这里先安装编译所需工具
yum groupinstall -y Development tools
yum install -y pam-devel rpm-build rpmdevtools zlib-devel krb5-devel tcp_wrappers tcp_wrappers-devel tcp_wrappers-libs libX11-devel xmkmf libXt-devel wget openssl openssl-devel
4、配置RPM编译环境
cd ~
mkdir rpmbuild
cd rpmbuild
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
5、生成openssh的RPM安装包
5.1、下载源码包
cd ~/rpmbuild/SOURCES/
wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
wget http://ftp.riken.jp/Linux/momonga/6/Everything/SOURCES/x11-ssh-askpass-1.2.4.1.tar.gz
5.2、配置SPEC文件
cd ~/rpmbuild/SPECS/
tar zxf ../SOURCES/openssh-7.3p1.tar.gz openssh-7.3p1/contrib/redhat/openssh.spec
mv openssh-7.3p1/contrib/redhat/openssh.spec openssh-7.3p1.spec
rm -fr openssh-7.3p1
sed -i -e "s/%define no_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh-7.3p1.spec
sed -i -e "s/%define no_x11_askpass 0/%define no_x11_askpass 1/g" openssh-7.3p1.spec
sed -i -e "s/BuildPreReq/BuildRequires/g" openssh-7.3p1.spec
5.3、编译生成RPM
cd ~/rpmbuild/SPECS/
rpmbuild -bb openssh-7.3p1.spec
5.4、查看生成包
cd ~/rpmbuild/RPMS/x86_64
ls
5.5、安装生成的RPM包
yum install openssh-7.3p1-1.x86_64.rpm openssh-clients-7.3p1-1.x86_64.rpm openssh-server-7.3p1-1.x86_64.rpm
6、修改配置文件,可以和先前备份的文件对比,按顺序来,不然行号会对不上(这个修改按你的需求来,这里是参照旧的sshd_config.bak进行的设定)
cp /etc/ssh/sshd_config.rpmnew /etc/ssh/sshd_config
上面这步不是必须,安装RPM包的时候会有提示,如果没有生成这个sshd_config.rpmnew文件,可以跳过上面这步
sed -i "37a\SyslogFacility AUTHPRIV" /etc/ssh/sshd_config
sed -i "44a\PermitRootLogin yes" /etc/ssh/sshd_config
sed -i "77a\ChallengeResponseAuthentication no" /etc/ssh/sshd_config
sed -i "88a\GSSAPICleanupCredentials no" /etc/ssh/sshd_config
sed -i "112a\UsePrivilegeSeparation sandbox" /etc/ssh/sshd_config
7、更改密钥权限,所有密钥权限必须为600,密钥格式为ssh_host_XXX_key,全部在/etc/ssh目录下
cd /etc/ssh
chmod 600 ssh_host_XXX_key
8、重启sshd服务
/etc/init.d/sshd restart
9、尝试用CRT或Xshell连接,能连上就没问题了
10、最后检查一下开机自启,因为没有动过sshd.service自启脚本,所有应该没有问题
11、看一下更新后的成果
[root@localhost ~]# ssh -V
OpenSSH_7.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Ubuntu 14.04更新过程
因为觉得sudo用着麻烦,直接修改了sshd_config文件,直接用root用户登录了系统,以下操作都是在root用户下进行的
因为Ubuntu刚接触不久,玩的不怎么6,这里采用编译安装,如果有更简单的方法,敬请大神告知
1、查看openssh的版本
root@ubuntu:~# ssh -V
OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7, OpenSSL 1.0.1f 6 Jan 2014
2、安装基础编译环境
apt-get install build-essential
3、更新openssl,这个需要更新,不更新在openssh的configure阶段会提示找不到头文件
apt-get install openssl
4、卸掉旧的openssh
apt-get remove openssh-*
他会列一堆东西出来,但实际只会移除4个包
openssh-server
openssh-client
openssh-sftp
openssh-import-id
5、编译安装zlib库,安装包建议用浏览器下载好再rz到服务器,wget很慢
wget http://zlib.net/zlib-1.2.8.tar.gz
tar zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
6、更新ssl库
apt-get install libssl-dev
7、编译安装openssh(主角登场,此处应该有掌声)
wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.3p1.tar.gz
tar zxf openssh-7.3p1.tar.gz
cd openssh-7.3p1
./configure
make
make install
8、安装完成后会提示你用他给你的命令启动服务,但是请先不要启动,我们需要改一下配置
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
上面是创建了新的host key,下面是服务的测试启动命令
/usr/local/sbin/sshd -t -f /usr/local/etc/sshd_config
9、更改配置,新安装的openssh需要指定sshd_config路径,这个新路径和旧路径不一样,所以你可以对比两个配置文件,按你的需要修改一下配置(其实不用更改什么,默认也可以)
vimdiff /etc/ssh/sshd_config /usr/local/etc/sshd_config
10、启动sshd服务,觉得麻烦,自己做软链接
/usr/local/sbin/sshd -f /usr/local/etc/sshd_config
11、尝试登录并检查自启情况
vim /etc/rc.local
在exit 0之前加入以下内容
/usr/local/sbin/sshd -f /usr/local/etc/sshd_config
服务就能自启,再来看看更新后的openssh版本吧
ccyy@ubuntu:~$ ssh -V
OpenSSH_7.3p1, OpenSSL 1.0.1f 6 Jan 2014
其他的Linux系统参考着做吧
Linux系统升级更新openssh 7.3p1的更多相关文章
-
从头开始构建LINUX[内核更新和资料]
了解了LFS的内容后,至于内核的更新就一目了然了 http://www.cnblogs.com/2018/p/3979305.html http://www.cnblogs.com/2018/p/39 ...
-
Linux显示所有可更新的软件清单命令
Linux显示所有可更新的软件清单命令 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ yum check-update 程序"yum"尚未 ...
-
Linux显示更新十次后退出
Linux显示更新十次后退出 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ top -n 10 top - 19:19:21 up 48 min, 2 use ...
-
Kali Linux WPScan更新到2.9.3
Kali Linux WPScan更新到2.9.3 WPScan是Kali Linux内置的一款Web漏洞扫描工具,专门扫描WordPress模版构建的网站.该工具最近更新到2.9.3.在新版本中 ...
-
Linux服务器中OpenSSH的源码编译与升级
Linux服务器中OpenSSH的源码编译与升级 https://www.oschina.net/question/12_7383
-
Kali Linux软件更新日报20190623
Kali Linux软件更新日报20190623 (1)payloadsallthethings更新到2.0-0kali4,此次更新增加帮助脚本. (2)tftpd32更新到4.50-0kali2 ...
-
Kali Linux软件更新日报20190622
Kali Linux软件更新日报20190622 (1)laudanum更新到1.0+r36-0kali3,此次更新移除了添加到webshells的链接. (2)mimikatz更新到2.2.0- ...
-
Win10系统升级更新方式将会更智能
使用Win10系统的你肯定遇到过在工作时开始自动更新而不得不搁置工作的情况,想必你也已经被Win10系统的自动更新折磨不已,不过这种情况将会马上得到改观. 微软现在已经开始寻找更智能的版本升级更新方式 ...
-
linux系统升级openssh
一.升级前准备工作 安装openssh过程需gcc,zlib-devel,openssl-devel,等编译环境,如果通过rpm包来安装,需要解决各种依赖包,故配置本地yum源解决依赖问题. 1. 配 ...
随机推荐
-
PHP获取网站图标(favicon.ico)文件
有的网站源码中加入了这几行代码: <link rel="shortcut icon" href="/favicon.ico" type="ima ...
-
vs 引用sqlite的问题
错误 4 未能找到类型或命名空间名称“SQLiteCommand”(是否缺少 using 指令或程序集引用?) D:\01学习\SQLite\HBZCSCXT_Mobile\SqlLiteHelper ...
-
SQL server 的约束条件【转】
SQLServer - 约束 一.约束的分类 在SQLServer中,有3种不同类型的约束. 1.实体约束 实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键. 2.域约束 域约束是 ...
-
【原创】关于hashcode和equals的不同实现对HashMap和HashSet集合类的影响的探究
这篇文章做了一个很好的测试:http://blog.csdn.net/afgasdg/article/details/6889383,判断往HashSet(不允许元素重复)里塞对象时,是如何判定set ...
-
python数据类型-布尔值
布尔是计算机里最基本的判断单位,布尔只有两个值:真或假,即True False,也就是1或0. 在以后学习流程控制时会经常用到布尔值. 先来看简单的小例子: >>> 1+1 > ...
-
CGI version1.1-第一章 介绍 (译)
CGI version1.1-第一章 介绍 1.简介 1.1 用途 CGI 是为 HTTP服务器 与 CGI脚本 在 响应客户端请求分配职责, 客户请求由url,方法与关于传输协议的附属信息, CGI ...
-
Sichuan State Programming Contest 2012 C。Counting Pair
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118254#problem/C 其实这道题目不难...就是没有仔细分析... 我们可以发现 ...
-
kali 2.0中msf连接postgres数据库
装好kali 2.0后直接运行msfconsole msf> db_status postgres selected, no connection 百度到的解决方法多是针对BT和kali 1.0 ...
-
java 日志体系(三)log4j从入门到详解
java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件*其他应用进行统计分析工作: 跟踪代 ...
-
django数据库多对多修改对应关系
obj = models.Book.objects.get(id=1) #添加对应关系,给书添加作者# obj.m.add(3)# obj.m.add(2,4)# obj.m.add(*[1,2,3, ...