一、准备工作
[root@localhost ~]# mount /dev/cdrom /media/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# cp /etc/yum.repos.d/rhel-source.repo /etc/yum.repos.d/yum.repo
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[a]
name=a
baseurl=file:///media
enabled=1
gpgcheck=0
[root@localhost ~]# yum install gcc pam-devel telnet telnet-server xinetd
[root@localhost ~]# mkdir /soft
[root@localhost ~]# cd /soft/
[root@localhost soft]# ls
openssl-1.0.2o.tar.gz zlib-1.2.11.tar.gz openssh-7.7p1.tar.gz
[root@localhost soft]# vi /etc/xinetd.d/telnet
修改disible = no
[root@localhost soft]# mv /etc/securetty /etc/securetty.old
[root@localhost soft]# service xinetd restart
停止 xinetd: [失败]
正在启动 xinetd: [确定]
[root@localhost soft]# telnet IP 23
以下是关闭防火墙的步奏,suse和redhat、centos略有不同:
1、centos、redhat关闭防火墙步奏:
[root@localhost soft]# iptables -F
[root@localhost soft]# iptables -X
[root@localhost soft]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[root@localhost soft]# chkconfig iptables off
2、suse关闭防火墙步奏:
因为系统重启防火墙会自动开启,导致ssh远程无法登陆,所以需要永久性关闭系统自带的防火墙,命令如下:
# chkconfig --list | grep fire
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off B:on
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
可以看到B是on的状态,下面的命令来进行关闭B.
(首先停止服务)
#service SuSEfirewall2_init stop
#service SuSEfirewall2_setup stop
(禁止开机启动)
# chkconfig --level B SuSEfirewall2_init off
# chkconfig SuSEfirewall2_init off
以上两条命令都可以关闭开机启动,效果相同。
# chkconfig --level B SuSEfirewall2_setup off
# chkconfig SSuSEfirewall2_setup off
这样就可以永久性关闭防火墙了.
备注:一般情况下,两个服务都开机启动,这时,应该先关闭SuSEfirewall2_setup,然后再关闭SuSEfirewall2_init。没有什么别的原因,只是因为你不先关闭setup,你是关闭不了init服务的,拒绝关闭。
二、安装zlib、openssl、openssh
[root@localhost soft]# tar -xf zlib-1.2.11.tar.gz
[root@localhost soft]# cd zlib-1.2.11
[root@localhost zlib-1.2.11]# ./configure --prefix=/usr/local/zlib
[root@localhost zlib-1.2.11]# make
[root@localhost zlib-1.2.11]# 【rpm -e --nodeps zlib】最好不要卸载,不然会出现很多问题,以下ssl和ssh也一样。省略此步骤
[root@localhost zlib-1.2.11]# make install
[root@localhost zlib-1.2.11]# rpm -qa | grep openssl
rpm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory //如果卸载了zlib,就会出现这样的信息,使用下面的两条命令
[root@localhost zlib-1.2.11]# 【echo '/usr/local/zlib/lib' >>/etc/ld.so.conf】
[root@localhost zlib-1.2.11]# 【ldconfig 】
[root@localhost zlib-1.2.11]# mv /usr/lib64/openssl/ /usr/lib64/openssl.old
[root@localhost zlib-1.2.11]# mv /usr/bin/openssl /usr/bin/openssl.old
[root@localhost zlib-1.2.11]# mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old
[root@localhost zlib-1.2.11]# cp /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.10.old
[root@localhost zlib-1.2.11]# cp /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.10.old
[root@localhost zlib-1.2.11]# mv /etc/ssl /etc/ssl.old
[root@localhost zlib-1.2.11]# mv /usr/include/openssl /usr/include/openssl.old
以上有些在不同的操作系统上会有文件不存在的提示,直接忽略
[root@localhost zlib-1.2.11]# 【rpm -qa |grep openssl|xargs -i rpm -e --nodeps {}】最好不要卸载,不然会出现很多问题,以下ssh也一样。省略此步骤
[root@localhost zlib-1.2.11]# cd ..
[root@localhost soft]# tar -xf openssl-1.0.2o.tar.gz
[root@localhost soft]# cd openssl-1.0.2o
[root@localhost openssl-1.0.2o]# ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl
[root@localhost openssl-1.0.2o]# make depend
[root@localhost openssl-1.0.2o]# make
[root@localhost openssl-1.0.2o]# make install
[root@localhost openssl-1.0.2o]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
[root@localhost openssl-1.0.2o]# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
以下两条命令可以忽略。如果卸载了openssl,出现问题,可以执行以下两条
【echo "/usr/local/openssl/lib" >> /etc/ld.so.conf】
【ldconfig 】
[root@localhost openssl-1.0.2o]# mv /etc/ssh /etc/ssh.old
openssh-askpass-5.3p1-111.el6.x86_64
[root@localhost openssl-1.0.2o]# 【rpm -qa |grep openssh|xargs -i rpm -e --nodeps {}】最好不要卸载,不然会出现很多问题。省略此步骤
[root@localhost openssl-1.0.2o]# cd ..
[root@localhost soft]# tar -xf openssh-7.7p1.tar.gz
[root@localhost soft]# cd openssh-7.7p1
[root@localhost openssh-7.7p1]# ./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
[root@localhost openssh-7.7p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd //此步奏会根据操作系统不同选用的文件不同,例如suse:#cp contrib/suse/rc.sshd /etc/init.d/sshd
[root@localhost openssh-7.7p1]# chmod +x /etc/init.d/sshd
[root@localhost openssh-7.7p1]# vi /etc/init.d/sshd
修改SSHD路径(redhat,centos)
#SSHD=/usr/sbin/sshd
SSHD=/usr/local/openssh/sbin/sshd
#/usr/bin/ssh-keygen -A
/usr/local/openssh/bin/ssh-keygen -A
修改SSHD路径(suse)
#SSHD_BIN=/usr/sbin/sshd
SSHD_BIN=/usr/local/openssh/sbin/sshd
#ssh-keygen -A
/usr/local/openssh/bin/ssh-keygen -A
[root@localhost ~]# vi /etc/ssh/sshd_config
PermitRootLogin yes
[root@localhost ~]# mv /usr/bin/ssh /usr/bin/ssh.old
[root@localhost ~]# ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
[root@localhost openssh-7.7p1]# chkconfig --add sshd
[root@localhost openssh-7.7p1]# chkconfig --list |grep sshd
sshd 0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭
[root@localhost openssh-7.7p1]# chkconfig sshd on
[root@localhost openssh-7.7p1]# service sshd restart
[root@localhost ~]# ssh -v
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[root@localhost ~]# ssh -46AaCfGgKkMNnqsTtVvXxYy
OpenSSH_7.7p1, OpenSSL 1.0.2o 27 Mar 2018
三、结尾
此时,测试好openssh可以正常连接了,就可以卸载掉telnet了,不然又会出现好多漏洞,为了以防万一,可以stop掉telnet,不要加入开机启动,需要的时候直接start就可正常使用了。
[root@localhost ~]# mv /etc/securetty.old /etc/securetty
[root@localhost ~]# chkconfig xinetd off
[root@localhost ~]# service xinetd stop
停止 xinetd: [确定]
[root@localhost ~]# rpm -qa | grep telnet
telnet-0.17-48.el6.x86_64
telnet-server-0.17-48.el6.x86_64
[root@localhost ~]# rpm -qa | grep telnet|xargs -i rpm -e --nodeps {}
warning: /etc/xinetd.d/telnet saved as /etc/xinetd.d/telnet.rpmsave
[root@localhost ~]# rpm -qa | grep telnet
[root@localhost ~]# exit
四、使用ftp制作局域网yum源
有的时候好多同类型的机器会用到镜像文件,一台一台的上传或者插光盘比较麻烦,这时候就该局域网yum上场了
yum install vsftpd
service vsftpd start
mount /dev/cdrom /var/ftp/pub
ftp服务器上挂载好之后,在其他机器上配置yum文件便可使用了
vi /etc/yum.repos.d/yum.repo
[a]
name=a
baseurl=ftp://192.168.56.102/pub
enabled=1
gpgcheck=0
背景:
之前刚刚将服务器上的低版本openssh升级为openssh-7.7p1,没过多久openssh-v7.8之下的版本全都爆出了大量的漏洞,不得已只好在原来升级之后的基础上再升级,直接升级到最新的openssh-v7.9p1.
1、下载源码安装包
【1】openssl下载地址:https://www.openssl.org/source/
根据需要选择下载相应的版本,openssh v7.9版本要求openssl版本最低为openssl v1.1
【目标】:openssl-1.1.0j.tar.gz(openssl-1.1.1a.tar.gz尝试了多次不成功)
【2】perl 下载地址:http://www.cpan.org/src/
根据需要选择下载相应的版本,openssl v1.1版本要求perl版本最低为perl v5.10
【目标】:perl-5.10.0.tar.gz
【3】openssh下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
根据需要选择下载相应的版本,opensh目前最新版本为openssh v7.9p1
【目标】:openssh-7.9p1.tar.gz
2、安装源码包
【1】安装perl-5.10.0.tar.gz
# tar -xf perl-5.10.0.tar.gz
# cd perl-5.10.0/
#./configure.gnu -des -Dprefix=/usr/local/perl
#make
#make test
#make install
#/usr/local/perl/bin/perl -v
This is perl, v5.26.3 built for i686-linux
#perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi
#mv /usr/bin/perl /usr/bin/perl.old
#ln -s /usr/local/perl/bin/perl /usr/bin/perl
#perl -v
This is perl, v5.26.3 built for i686-linux
【2】安装openssl-1.1.1a.tar.gz
# mv /usr/lib64/openssl/ /usr/lib64/openssl.old
# mv /usr/bin/openssl /usr/bin/openssl.old
# mv /etc/pki/ca-trust/extracted/openssl /etc/pki/ca-trust/extracted/openssl.old
# mv /etc/ssl /etc/ssl.old
# mv /usr/include/openssl /usr/include/openssl.old
以上有些在不同的操作系统上会有文件不存在的提示,直接忽略
# tar -xf openssl-1.1.0j.tar.gz
# cd openssl-1.1.0j/
# ./config --prefix=/usr/local/openssl --openssldir=/etc/ssl
# make depend
# make
# make install
# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
以下两条命令可以忽略。如果卸载了openssl,出现问题,可以执行以下两条
【echo "/usr/local/openssl/lib" >> /etc/ld.so.conf】
【ldconfig 】
【3】安装openssh-7.9p1.tar.gz
#mv /etc/ssh /etc/ssh.old
#tar -xf openssh-7.9p1.tar.gz
#cd openssh-7.9p1/
# ./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
# cp contrib/redhat/sshd.init /etc/init.d/sshd //此步奏会根据操作系统不同选用的文件不同,例如suse:
#cp contrib/suse/rc.sshd /etc/init.d/sshd
#chmod +x /etc/init.d/sshd
# vi /etc/init.d/sshd
修改SSHD路径(redhat,centos)
#SSHD=/usr/sbin/sshd
SSHD=/usr/local/openssh/sbin/sshd
#/usr/bin/ssh-keygen -A
/usr/local/openssh/bin/ssh-keygen -A
修改SSHD路径(suse)
#SSHD_BIN=/usr/sbin/sshd
SSHD_BIN=/usr/local/openssh/sbin/sshd
#ssh-keygen -A
/usr/local/openssh/bin/ssh-keygen -A
# vi /etc/ssh/sshd_config
PermitRootLogin yes
# mv /usr/bin/ssh /usr/bin/ssh.old
# ln -s /usr/local/openssh/bin/ssh /usr/bin/ssh
[root@localhost openssh-7.7p1]# chkconfig --add sshd
[root@localhost openssh-7.7p1]# chkconfig --list |grep sshd
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@localhost openssh-7.7p1]# chkconfig sshd on
[root@localhost openssh-7.7p1]# service sshd restart
# ssh -v
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
# ssh -46AaCfGgKkMNnqsTtVvXxYy]
OpenSSH_7.9p1, OpenSSL 1.1.0j 20 Nov 2018