伊言:当 Telenet 已经渐渐退出历史舞台后,SSH ( Security SHell ) 就成为几乎所有 Linux 操作系统的远程登录连接协议。
但是,目前很多 Linux 发行版中集成的 SSH 软件版本都比较老,存在着一些漏洞和安全隐患,因而升级 SSH 服务软件修补漏洞提升系统安全成为 Linux 系统安全中非常重要的一个环节。
下面就讲述一下如何升级 SSH 服务继上篇Linux下本地yum源配置(内网、无连接公网)。
SSH 有许多标准,通常 Linux 中 ( Redhat, CentOS, SuSE 等 )使用的是开源版本的 OpenSSH,
所以我们就是对 OpenSSH 进行升级。在升级 OpenSSH 之前,需要升级系统中的 OpenSSL (OpenSSL 可以为 OpenSSH 提供加密传输支持,
是 OpenSSH 的一个中间件)版本和 Zlib (提供压缩传输支持)版本,以达到最好的安全性
升级前需要开启telnet,防止升级失败,系统无法登录,对应的防火墙需要开启23端口,安装需要telnet相关包(推荐通过系统ISO安装)
升级过程中需要刷新lib库:ldconfig -v;
升级顺序:顺序是zlib库-> openssl -> openssh;
升级需要gcc、make、perl、zlib、zlib-devel、pam、pam-devel;
1、关闭selinux
到/etc/sysconfig/selinux里,SELINUX=enforcing改成SELINUX=disabled
查看状态getenforce
然后重启reboot查看getenforce是否生效
2、关闭防火墙(升级完毕要打开)
查看防火墙状态:
[root@centos6 ~]# service iptables status
iptables:未运行防火墙。
开启防火墙:
[root@centos6 ~]# service iptables start
关闭防火墙:
[root@centos6 ~]# service iptables stop
3、以防ssh升级后不能链接、可以把telnet打开(最后ssh可以链接后一定要关闭、危险性很大)
yum install telnet-server -y
chkconfig telnet on
/etc/init.d/xinetd restart
先把telnet开起来,我们登录上去看下
[root@RHEL5 ~]# rpm -qa | grep telnet
telnet-0.17-38.el5
telnet-server-0.17-38.el5
因为telnet最大的缺点是不安全,采用明文传输用户名和口令。现需要彻底从系统中删除telnet,过程如下(升级openssh成功后):
[root@RHEL5 ~]# rpm -e telnet-0.17-38.el5 # -e参数表示删除rpm包
[root@RHEL5 ~]# rpm -e telnet-server-0.17-38.el5
warning: /etc/xinetd.d/telnet saved as /etc/xinetd.d/telnet.rpmsave
检查:
[root@RHEL5 ~]# rpm -qa | grep telnet
准备好1、perl-5.16.0.tar.gz 2、openssl-1.1.1.tar.gz 3、openssh-8.0p1.tar.gz 4、libperl.so文件。在相对应的目录都移到服务器的(/usr/bin/)目录下
(yum要是没有在公网的话,需要把yum源指向本地的镜像、详细参考yum本地配置)
yum install zlib-devel.x86_64 -y
yum install perl-Params-Validate.x86_64 -y
yum install perl-Module-Load-Conditional -y
yum install pam-devel -y
(yum install zlib-devel.x86_64 perl-Params-Validate.x86_64 perl-Module-Load-Conditional pam-devel -y)
先perl、再ssl、最后ssh
1.升级 perl-5.16.0 太旧的版本,可能需要先升级perl
perl -V
perl -version查看版本
cd /usr/bin/
ls
tar xvf perl-5.16.0.tar.gz
cd perl-5.16.0
./Configure -des -Dprefix=/usr
make
make test
rpm -e --nodeps perl
make install
perl装完,把libperl.so这个文件放到/lib64下面(链接提供)
安装过程中还有缺什么包,可以直接yum install xxxxx -y
2.升级 openssl-1.1.1
openssl version查看版本
tar xvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config --prefix=/usr --openssldir=/etc/ssl --shared zlib
make
make test (这一步很重要哦!是进行 SSL 加密协议的完整测试,如果出现错误就要一定先找出哪里的原因,否则一味继续可能导致最终 SSH 不能使用,后果很严重哦!)
make install
3.升级 openssh-8.0p1
tar -xvf openssh-8.0p1.tar.gz
cd openssh-8.0p1
./configure --prefix=/usr --sysconfdir=/etc/sshd --with-zlib=/usr --with-ssl-dir=/usr --with-pam --with-md5-passwords --with-ssl-engine
(注意,如果 configure 时提示 PAM 有错误,那一般是因为系统中没有安装 pam-devel RPM 包,找到安装光盘,安装 pam-devel 就可以解决啦)
make
make install
4.重启服务并检查是否成功
service sshd restart
ssh -V
因为telnet最大的缺点是不安全,采用明文传输用户名和口令。现需要彻底从系统中删除telnet,过程如下(升级openssh成功后):
[root@RHEL5 ~]# rpm -e telnet-0.17-38.el5 # -e参数表示删除rpm包
[root@RHEL5 ~]# rpm -e telnet-server-0.17-38.el5
warning: /etc/xinetd.d/telnet saved as /etc/xinetd.d/telnet.rpmsave
检查:
[root@RHEL5 ~]# rpm -qa | grep telnet
openssh升级后root无法连接问题:把sshd_config里面的相对应内容改成PermitRootLogin yes
cd /etc/sshd/
[root@localhost sshd]# vi sshd_config
改变:PermitRootLogin yes
[root@localhost sshd]# service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
[root@localhost sshd]# service sshd restart
停止 sshd: [确定]
正在启动 sshd: [确定]
[root@localhost sshd]#
[root@localhost sshd]#
[root@localhost sshd]#
[root@localhost sshd]#
[root@localhost sshd]# cat /etc/sshd/sshd_config | grep Root
PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
service iptables start 无反应的解决方法
[root@lt ~]# service iptables start
[root@lt ~]# service iptables status
防火墙已停
解决方法:
一、初始化iptables。
iptables -F
service iptables save
service iptables restart
有啥不合理地方 望请指正哈。
ok---恰同学少年-19.8.6