实战-升级CENTOS/REDHAT6.X的OPENSSH版本

上一篇,说到了如何安装一个精简安全的LINUX系统

继续说一下安装完操作系统之后,那么系统在未安装其它应用之前,对外提供的服务就只有22端口,也就是OPENSSH使用的端口。如何该协议存在漏洞的话,黑客就可以能相应的工具通过协议漏洞攻击你的服务器

那么我们需要做的就是定期把OPENSSH升级到最新的版本,以保证此项不会被轻易攻击。

如果安装的LINUX服务器要安装ORACLE-RAC或是其它与SSH相关的集群软件,请先安装软件,后升级SSH,以免ORACLE-RAC或是相关的集群软件因SSH版本无法安装。

OPENSSH最新版本下载地址

https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/下载最新的TAR.GZ包

另外version.h文件如果按下面的操作修改了“ ”里的内容,ssh –V时就不会显示ssh版本。一些安全厂商认为这样的操作是安全的。如无必要可不修改该文件

下面提供了两种实战的方法去升级OPENSSH,在此强调一下,如果你的操作系统不是LINUX6.0版本的此操作都没有问题。如果是LINUX7.0的话会有一些加密算法的变化,需要重新生成加密算法,否则你的SSH登录工具可能都不好用!!!方法一、OPENSSH源码安装方法

此方法中的第10步,视情况修改。

1、ssh登录到要安装的服务器上,查看当前版本

[root@localhost ~]# ssh -V

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11Feb 2013

2、在/目录下创建/tools目录,通过FTP工具上传安装文件到该目录下

mkdir /tools

[root@myhost tools]# ls -ltrh

total 9.2M

-rw-r--r-- 1 root root 1.5M Nov 1323:38 openssh-7.6p1.tar.gz

-rw-r--r-- 1 root root 5.1M Nov 1323:38 openssl-1.0.2h.tar.gz

-rw-r--r-- 1 root root 2.7M Nov 1323:38 zlib-1.2.8.tar.gz使用yum安装Telnet服务

3、为防止重启SSH后无法登录,安装TELNET

yum install –y telnet-server

4、修改telnet文件disable=no(原有值为yes),允许用户远程登录

sed -i '12 s/yes/no/'/etc/xinetd.d/telnet

echo 'pts/0' >>/etc/securetty

echo 'pts/1' >>/etc/securetty

echo 'pts/2' >>/etc/securetty

echo 'pts/3' >>/etc/securetty

5、然后重启服务

service xinetd restart

Stopping xinetd: [FAILED]

Starting xinetd: [ OK ]

6、用ROOT账户使用telnet登录系统执行修改OPENSSH操作

rpm -eopenssh-server-5.3p1-94.el6.x86_64

rpm -eopenssh-askpass-5.3p1-94.el6.x86_64

7、安装zlib

cd /tools

tar -xvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure --prefix=/usr/local/zlib&& make && make install

cd ..

8、安装openss

tar -xvf openssl-1.0.2h.tar.gz

cd openssl-1.0.2h

./config --prefix=/usr/local/openssl&& make depend && make && make install

cd ..

9、安装openssh

tar -xvf openssh-7.6p1.tar.gz

cd openssh-7.6p1

10、修改version.h文件,把里面””里面的内容改成“空格”。

/* $OpenBSD: version.h,v 1.802017/09/30 22:26:33 djm Exp $ */

#define SSH_VERSION " "

#define SSH_PORTABLE " "

#define SSH_RELEASE SSH_VERSION SSH_PORTABLE

11、然后再在执行编译安装

./configure--prefix=/usr/local/openssh --sysconfdir=/etc/ssh--with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib--with-md5-passwords --with-pam--without-hardening && make&& make install

12、拷贝SSHD服务文件

cp contrib/redhat/sshd.init/etc/init.d/sshd

chmod +x /etc/init.d/sshd

13、修改SSHD服务文件,修改对应指令的安装目录

vi /etc/init.d/sshd

SSHD=/usr/sbin/sshd为SSHD=/usr/local/openssh/sbin/sshd

/usr/bin/ssh-keygen -A为/usr/local/openssh/bin/ssh-keygen-A

14、保存退出

把SSHD加入到系统服务

chkconfig --add sshd

15、查看系统启动服务是否增加改项

chkconfig --list grep sshd

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

16、重新启动SSHD服务。

service sshd start

17、替换SSH及SSL命令

mv /usr/bin/ssh /usr/bin/ssh.old

ln -s /usr/local/openssh/bin/ssh/usr/bin/ssh

mv /usr/bin/openssl/usr/bin/openssl.old

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

18、检查相关软件版本

[root@myhost ~]# ssh -V

OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016

[root@myhost ~]# openssl version -a

OpenSSL 1.0.2h 3 May 2016

built on: reproducible build, dateunspecified

platform: linux-x86_64

options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int)idea(int) blowfish(idx)

compiler: gcc -I. -I..-I../include -DOPENSSL_THREADS-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3-Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM-DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM

OPENSSLDIR:"/usr/local/openssl/ssl"

19、升级到新版本后,默认不允许root用户远程登录,修改/etc/ssh/sshd_config配置文件。

PermitRootLogin yes

20、重新启动SSHD服务。

service sshd start

21、测试登录SSH,测试成功后,删除TELNET

rpm -etelnet-server-0.17-47.el6_3.1.x86_64

rpm -e xinetd-2.3.14-39.el6_4.x86_64

方法二、OPENSSH编译RPM安装方法

此方法中的5~7视安全要求,看是否操作

1、安装编译所必须的组件包

yum -y groupinstall "Developmenttools"

yum -y install pam-devel rpm-buildrpmdevtools zlib-devel krb5-devel tcp_wrappers tcp_wrappers-develtcp_wrappers-libs libX11-devel xmkmf libXt-devel wget openssl-devel

https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/下载最新的TAR.GZ包

3、进行编译

cd ~

mkdir rpmbuild

cd rpmbuild

mkdir -pv

4、拷贝openssh-7.6p1.tar到~/rpmbuild/SPECS目录下

cd ~/rpmbuild/SPECS

tar xfz../SOURCES/openssh-7.6p1.tar.gz openssh-7.6p1/contrib/redhat/openssh.spec

mv openssh-7.6p1/contrib/redhat/openssh.specopenssh-7.6p1.spec

rm -rf openssh-7.6p1

sed -i -e "s/%defineno_gnome_askpass 0/%define no_gnome_askpass 1/g" openssh-7.6p1.spec

sed -i -e "s/%defineno_x11_askpass 0/%define no_x11_askpass 1/g" openssh-7.6p1.spec

sed -i -e "s/BuildPreReq/BuildRequires/g"openssh-7.6p1.spec

5、进入到~/rpmbuild/SPECS目录下,解压文件

tar -xvf openssh-7.6p1.tar.gz

cd openssh-7.6p1

6、修改version.h文件,把里面””里面的内容改成“空格”。

/* $OpenBSD: version.h,v 1.802017/09/30 22:26:33 djm Exp $ */

#define SSH_VERSION " "

#define SSH_PORTABLE " "

#define SSH_RELEASE SSH_VERSION SSH_PORTABLE

7、然后再重新打包文件,删除旧的文件

rm -rf openssh-7.6p1.tar.gz

tar -cvf openssh-7.6p1.taropenssh-7.6p1/

gzip openssh-7.6p1.tar

rm -rf openssh-7.6p1

8、进行RPM包编译

cd ~/rpmbuild/SPECS

rpmbuild -bb openssh-7.6p1.spec

9、编译完成后,进到如下目录,查看编译成功的RPM包

cd ~/rpmbuild/RPMS/x86_64

[root@myhost x86_64]# ls -l

total 1416

-rw-r--r-- 1 root root 458516 Nov 1400:56 openssh-7.6p1-1.x86_64.rpm

-rw-r--r-- 1 root root 578416 Nov 1400:56 openssh-clients-7.6p1-1.x86_64.rpm

-rw-r--r-- 1 root root 16948 Nov 14 00:56openssh-debuginfo-7.6p1-1.x86_64.rpm

-rw-r--r-- 1 root root 388100 Nov 1400:56 openssh-server-7.6p1-1.x86_64.rpm

以上配置完成后,可以开始进行OPENSSH的RPM包安装,编译过的安装包可以拿到别的系统上直接安装。不过安装之前以下说的方法都要执行下!

10、备份PAM配置

cp /etc/pam.d/sshd /tmp/

mv /etc/pam.d/sshd/etc/pam.d/sshd.old

11、删除OPENSS-ASK

[root@localhost ~]# rpm -eopenssh-askpass-5.3p1-94.el6.x86_64

12、升级OPENSSH

cd ~/rpmbuild/RPMS/x86_64/

rpm -Uvh *.rpm

13、修改配置允许ROOT用户远程登录

sed -i -e "s/ #PermitRootLoginyes/PermitRootLogin yes/g" /etc/ssh/sshd_config

sed -i -e "s/#UsePAM no/UsePAMyes/g" /etc/ssh/sshd_config

cp /tmp/sshd /etc/pam.d/

输入Y

14、如果原来没有PAM/SSHD那新会新生成一个,更改新生成SSHD文件内容如下:

#%PAM-1.0

auth required pam_sepermit.so

auth include password-auth

account required pam_nologin.so

account include password-auth

password include password-auth

# pam_selinux.so close should be thefirst session rule

session required pam_selinux.so close

session required pam_loginuid.so

# pam_selinux.so open should only befollowed by sessions to be executed in the user context

session required pam_selinux.so open env_params

session optional pam_keyinit.so force revoke

session include password-auth

15、重新SSHD服务

/etc/init.d/sshd restart

更多请实战文章请关注公众号,不定期更新中~,另外广大的攻城狮们,圣诞快乐!!

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171224G0HCIX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券