安装完操作系统并加固后,那么系统在未安装其它应用之前,对外提供的服务就只有22端口,也就是OPENSSH使用的端口。如何该协议存在漏洞的话,***就可以能相应的工具通过协议漏洞***你的服务器
那么我们需要做的就是定期把OPENSSH升级到最新的版本,以保证此项不会被轻易***。
如果安装的LINUX服务器要安装ORACLE-RAC或是其它与SSH相关的集群软件,请先安装软件,后升级SSH,以免ORACLE-RAC或是相关的集群软件因SSH版本无法安装。
OPENSSH最新版本下载地址
登录网站http://www.openssh.com/,找到FOR OTHER OS'S,下的LINUX
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
2、登录网站http://www.openssh.com/,找到FOR OTHEROS'S,下的LINUX
https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/下载最新的TAR.GZ包
3、进行编译
cd ~
mkdir rpmbuild
cd rpmbuild
mkdir -pv{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
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
更多请实战文章请关注公众号,不定期更新中~,另外广大的攻城狮们,圣诞快乐!!