注意: 本教程中的方法适用于centos 6 ~ centos 7。

近期在服务器安全扫描发现一大堆漏洞,上百台服务器的漏洞都差不多,主要是关于openssh的。
1
漏洞有很多,扫描系统给出的解决办法是打各种补丁,但通过了解到,将openssh直接升级基本可以解决所有漏洞问题,一劳永逸。现将7.4版本的openssh升级到8.1版本。

安装telnet

得先安装Telnet服务,因为在升级openssh的时候如果出现错误,如果没有装Telnet,就无法远程连接了,就很尴尬了,如果是云主机还好,可以通过控制台进入,否则就得跑机房了,不过控制台经常莫名的进不去,所以保险起见,安装Telnet。

yum -y install telnet-server
yum -y install xinetd
yum -y install telnet

echo "pts/0">> /etc/securetty
echo "pts/1">> /etc/securetty
echo "pts/2">> /etc/securetty

systemctl enable xinetd
systemctl enable telnet.socket 
systemctl start telnet.socket
systemctl start xinetd
netstat -lntp | grep 23

默认情况下,linux不允许root用户以telnet方式登录linux主机,若要允许root用户登录,可采取以下做法:修改securetty文件增加pts配置。如果登录用户较多,需要更多的pts/*。echo “pts/2”>> /etc/securetty,完事之后再删除即可。

安装openssl

如果OpenSSL版本过低。则需要先升级openssl。
附:openssl-1.0.2t.tar.gz下载地址:地址1

#可能涉及到的依赖
yum install  -y gcc*
yum install  -y glibc make autoconf openssl openssl-devel pcre-devel  pam-devel
yum install  -y pam* zlib*

#下载源码包
mkdir /usr/openssh_openssl/
cd /usr/openssh_openssl/
wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz

tar xzvf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t/

#对openssl命令进行备份
mv /usr/bin/openssl /usr/bin/openssl_bak 
mv /usr/include/openssl /usr/include/openssl_bak

#编译安装
cd /usr/openssh_openssl/openssl-1.0.2t/
./config shared && make && make install

#将openssl命令软连接到/usr/bin/,注意,不同版本的openssl,命令路径可能不一样
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
/sbin/ldconfig
#查看升级后的版本信息
openssl version

安装openssh

附openssh-8.0p1.tar.gz的下载地址:地址1

卸载原openssh
yum remove openssh
#下载源码包
cd /usr/openssh_openssl/
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz 
tar xzvf openssh-8.1p1.tar.gz
cd /usr/openssh_openssl/openssh-8.1p1

#可能需要的权限
chown -R root.root /usr/openssh_openssl/openssh-8.1p1

#备份ssh
mv  /etc/ssh/ /etc/ssh_bak/

#编译安装
./configure --prefix=/usr/ --sysconfdir=/etc/ssh  --with-openssl-includes=/usr/include/openssl --with-ssl-dir=/usr/local/ssl   --with-zlib   --with-md5-passwords   --with-pam  && make && make install
 
#修改配置文件,登录权限,安装之前查看配置文件,设置为与之前版本一样
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed  -i 's/#UseDNS no/UseDNS no/g' /etc/ssh/sshd_config
sed  -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config

#启动相关配置
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add sshd 
/usr/lib/systemd/system/sshd.service  /usr/openssh_openssl/
mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service_bak
chkconfig sshd on
/etc/init.d/sshd restart
netstat -lntp
/etc/init.d/sshd start
#查看openssh版本
ssh -V
#注意:默认是22端口,但是不能root直接登录。如果想直接使用root登录执行以下命令
echo "PermitRootLogin yes"  >>  /etc/ssh/sshd_config
vi /etc/ssh/sshd_config 修改 ,将 #Port 22前面的“#“ 删除  ,改为Port 22

设置开启自启方式二

将命令写到 /etc/rc.d/rc.local 这个文件中
chmod +x /etc/rc.d/rc.local
chmod +x /etc/init.d/sshd
vi /etc/rc.d/rc.local
文章末尾添加:/etc/init.d/sshd restart
:wq
reboot

安装成功后关闭telnet

#安装成功,确认可以ssh远程登录后,关闭Telnet
systemctl disable xinetd.service
systemctl stop xinetd.service
systemctl disable telnet.socket
systemctl stop telnet.socket
netstat -lntp

附录

解决错误:Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

在使用yum install的时候,偶尔会碰见这样的错误:Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
这是因为在你的 /etc/yum.repos.d 目录下有关于yum repository的配置文件中列有如下的GPG key:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

这个配置告诉YUM,这个repository的GPG key存在于磁盘上。而当YUM在路径 /etc/pki/rpm-gpg 下找不到这个GPG key的时候,就会报如上的错误了。
解决方案:

cd /etc/pki/rpm-gpg
wget https://archive.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
最后修改:2020 年 11 月 18 日 01 : 36 PM
如果觉得我的文章对你有用,请随意赞赏