linux系统的安全加固,一般都会将openssh服务升级到最新版本,加强远程连接的安全性。

官网发布了openssh 7.4以下openssh版本存在严重漏洞例如:
1.OpenSSH 远程权限提升漏洞(CVE-2016-10010)
2.OpenSSH J-PAKE授权问题漏洞(CVE-2010-4478)
3.Openssh MaxAuthTries限制绕过漏洞(CVE-2015-5600)
OpenSSL>=1.0.1可以不用升级OpenSSL,可直接升级openssh。

升级需知:
查阅官方网站openssh,了解其最新的版本信息及其对系统内核和其它依赖组件的要求。
然后备份系统中现有的openssh信息,以备升级失败后进行回退。再根据说明优先完成其依赖组件的升级。
最后升级openssh,并进行验证。
openssh最新的版本是2019年4月17日释出的OpenSSH 8.0。

 一、首先打开两个或以上的shell连接,因为在升级过程中如果升级失败会导致无法新建shell连接;或开一个telnet服务。
在安装之前先记下sshd.pid路径,因为在启动文件sshd中要更改此路径。

下载openssl-1.0.2l.tar.gz、openssh-7.5p1.tar.gz包并将安装包传入服务器中;

卸载现有版本openssh:rpm -e 'rpm -qa |grep openssh'

删除/etc/ssh/下所有文件,在卸载完openssh后此路径下文件不会删除,需手动删除;

二、具体步骤:
1、 安装依赖包yum -y install gcc libcap libcap-devel glibc-devel
2、 升级openssl
tar zxvf /tmp/openssl-1.0.2l.tar.gz -C /tmp
cd /tmp/openssl-1.0.2l
./config --prefix=/usr –shared
备注:(一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配。)
make
make install
3、升级openssh
tar zxf /tmp/openssh-7.5p1.tar.gz -C /tmp

cd /tmp/openssh-7.5p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
make
make install
echo "PermitRootLogin no" >>/etc/ssh/sshd_config
service sshd restart
4、验证
[root@localhost ~]# ssh -V
OpenSSH_7.5p1, OpenSSL 1.0.2l 29 May 2019
备注:
另外,安装目录为/usr/,因为在启动文件中有关于SSHD的路径,此安装目录默认为redhat启动文件的路径
可在配置文件/etc/ssh/sshd_config中修改

三、加固
修改hosts.all和hosts.deny
以ssh允许192.168.220.1和telnet允许192.168.220网段为例,具体在/etc/hosts.allow加入内容如下:
redhat linux6.5升级openssh到7.5p1_第1张图片
编辑/etc/hosts.deny文件
redhat linux6.5升级openssh到7.5p1_第2张图片

保存文件退出编缉后,重启ssh服务和telnet服务(可选)
备注:
1.一个IP访问请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。

2.对/etc/hosts.allow和/etc/hosts.deny的配置不用重启就立即生效,但不管重启不重启当前已有会话都不会受影响;也就是说对之前已经连入的,即便IP已配置为禁止登录会话仍不会强制断开。不过不知是否所有linux都一样,由此第四步标为可选。

3.网上发现有些教程写成不是sshd而是in.sshd不是in.telnetd而是telnetd的,个人觉得应该是独立启的不用加in.托管于xinetd的需要加in.

四、其他
1、如果升级中发生意外中断的,可以开telnet备用
启用
sed -i "s/yes/no/g" /etc/xinetd.d/telnet

service xinetd restart

mv /etc/securetty /etc/securettyBAK
停用
sed -i "s/no/yes/g" /etc/xinetd.d/telnet

service xinetd stop

mv /etc/securettyBAK /etc/securetty
2、升级后对ssh配置的加固
echo "PermitRootLogin no" >>/etc/ssh/sshd_config
找到#Port 22一段,这里是标识默认使用22端口,可修改为其他端口

echo "Ciphers aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc" >>/etc/ssh/sshd_config

service sshd restart
3、升级成功后输入密码无法登录系统的
原因分析:
1、未对配置文件进行修改,openssh7.5默认配置不允许使用root登录系统
2、pam配置文件错误或丢失
3、配置文件中未启用pam选项:UsePAM