这样,你先在网上找一套完整openssh升级方案(不是yum或apt的,要源码安装的),然后在虚拟机上反复安装测试,直到把他理解了、背下来。
面试的时候让你简单说说linux命令什么的,你就直接把这个方案从道到尾讲一下,基础命令一带而过就行,重点的命令解释下。这样你所谓的“熟悉linux操作系统”基本就差不多了。
几乎服务器都有ssh,但凡大企业或重点行业都会漏扫,就需要升级openssh。这个升级方案包含很多基础命令和源码安装过程,代表性比较强,尤其配合telnet登陆升级对安全性也有加分。
很多人评论说方案怎么怎么样,升级有没有必要,隐藏端口等等。但请看问题:校招中的“熟悉linux操作系统”一般是指达到什么程度?这个“程度”没有固定指标,那最简单办法就是让结果更直观。就是用知行合一,理论联系实际。方案是否合理、是否浪费服务器资源,与题主想应对校招关系不大。我面试的时候如果面试官让我说几个常用命令,那我就简单深入的讲下这个方案基本是可以过的。现在我把之前用的方案贴出来(centos7.6下openssh8.6p1),想应对面试的可以拿去试试。至于讨论方案是否可行的,可以去技术论坛。
- 一、升级背景:
- 漏洞扫描显示linux服务器openssh有高危漏洞,需要进行修复。openssh是远程登录到linux服务器
- 的重要工具,要修复此漏洞需升级到最高版本(2021年5月中旬最新版本为8.6p1)。
-
- 二、升级说明:
- 1、所有升级文件均从官网下载。
- 2、linux服务器系统为Centos7可适用此方案。
- 3、Centos7系统需要有yum源,方便解决依赖关系问题。如无法实现,则需上传同系统版本安装映
- 像文件,作为本地yum源。
- 4、安装过程受网络影响极大,一旦出现不可抗因素致网络断开,可能会导致升级中断,无法远程
- 连接,出现此情况需现场人员配合解决。
- 5、升级过程出现问题需现场人员根据回退方案进行恢复操作。
-
- 三、升级过程:
- (0)安装并启用telnet
- 1、安装telnet
- yum install telnet-server telnet xinet
- 2、修改配置文件
- vi /etc/xinetd.d/telnet
-
- disable= no //将yes改为no
- #让root可以登录
- #mv /etc/securetty /etc/securetty.bak
- 重启服务
- service xinetd restart
- 3、启动相应服务,然后使用telnet登录到服务器
- systemctl start telnet.socket
- systemctl start xinetd
- chkconfig --list
- (一)配置yum源
- 1、上传与生产环境相同的centos7版本的iso和openssh8.6p1的安装包到服务器。
-
- 2、挂载iso
- 创建iso存放目录和挂载目录,并上传iso镜像文件到iso存放目录/mnt/iso下
- mkdir /mnt/iso
- mkdir /mnt/cdrom
- mv CentOS-7.6-x86_64-DVD-1810.iso /mnt/iso/
- 挂载iso镜像到挂载目录/mnt/cdrom下
- mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom
- 使用df -h命令查询挂载是否成功
- df -h
-
- 3、备份原本地源
- 进入repos配置目录
- cd /etc/yum.repos.d/
- 创建备份文件夹
- mkdir repobak
- 移动配置文件到repobak文件夹中
- mv *.repo repobak/
- 4、新建光盘源配置文件
- vi CentOS-Media.repo
- 输入下列内容
- ```
- [c7-media]
- name=CentOS-$releasever - Media
- baseurl=file:///mnt/cdrom/
-
- gpgcheck=0
- enabled=1
- ```
- 5、测试安装源
- yum clean all
- yum makecache
- (二)升级openssh版本到8.6p1
- 1、下载或上传安装包openssh-8.6p1.tar.gz到/root目录下
- 进入安装包所在文件夹
- cd /root/linshi
-
- 2、关闭Selinux
- setenforce 0
- sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
-
- 3、安装依赖关系
- yum install -y gcc pam-devel rpm-build wget zlib-devel openssl-devel net-tools
- tar -xvf openssh-8.6p1.tar.gz
- cd openssh-8.6p1
-
- 4、卸载旧版openssh
- rpm -qa |grep openssh
- ps:下一步骤为删除原有ssh,但不会影响现在进行的ssh会话,所以整个操作过程不要断开ssh会话,
- 否则无法再次连接,只能由现场人员进行回退后重新操作(推荐使用telnet进行升级)。
- for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps;done
-
- 5、设置、编译、安装
- ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl/lib --without-hardening
- mv /etc/ssh /etc/ssh.old
- cp contrib/redhat/sshd.pam /etc/pam.d/sshd
- #编译
- make
- #安装
- make install
-
- 6、设置自启动
- 复制启动脚本到/etc/init.d
- cp contrib/redhat/sshd.init /etc/init.d/sshd
- chkconfig --add sshd
- chkconfig sshd on
- chkconfig --list|grep sshd
- sed -i "32a PermitRootLogin yes" /etc/ssh/sshd_config
- #重启ssh服务
- service sshd restart
-
- 7、检查升级情况
- ssh -V
- 输出版本号为“OpenSSH_8.6p1”,说明更新成功
-
- (三)关闭telnet
- 关闭服务
- systemctl stop telnet.socket
- systemctl stop xinetd
- #root可以登录
- #mv /etc/securetty.bak /etc/securetty
-
- 卸载telnet
- yum remove telnet-server xinetd
-
- ps:此时ssh是可以连接状态,不要断开连接防止修改出错无法连接服务器。测试新端口是否打开
- telnet 127.0.0.1 22
- #出现如下显示表示端口正常打开
- Trying 127.0.0.1...
- Connected to 127.0.0.1.
- Escape character is '^]'.
- SSH-2.0-OpenSSH_8.6
- 使用远程工具新开窗口,连接新端口测试修改是否成功,如有问题马上使用之前的连接进行检查修改。
-
- (四)回退方案
- 1、挂载iso文件作为yum源
- mount -o loop /mnt/iso/CentOS-7.6-x86_64-DVD-1810.iso /mnt/cdrom
- 2、安装openssh
- yum install openssh*
- 3、启动ssh
- service sshd start
- 4、重新连接ssh,然后从(二)4开始做。
评论记录:
回复评论: