文章目录
- 前言
- 一、开启telnet登录
-
- 1.安装telnet
- 二、升级openssh-7.9pl
-
- 1.安装所需环境和openssh
前言
升级原因:之所以升级是因为服务器被扫描出openssh漏洞
例如:
1.OpenSSH用户枚举漏洞(CNVD-2018-20962)(CVE-2018-15919);
2.OpenSSH设计漏洞(CVE-2017-15906);
3.OpenSSH <7.5;
一、开启telnet登录
由于是生产环境,直接升级存在隐患,万一升级失败会导致ssh登录不上服务器,顾先开启telnet登录, 保证openssh升级失败也可以通过telnet连接服务器,进行恢复操作。并不用去机房。
(注意最好按本文在测试服务器上整个流程走一遍没问题再去生产环境执行)
若防火墙是开启状态
#1.查看开放了哪些端口
firewall-cmd --list-port
#2.放开单个端口,并重启
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
#添加telent 23端口
firewall-cmd --zone=public --add-port=23/tcp --permanent
#重载
firewall-cmd --reload
1.安装telnet
yum install -y telnet-server
yum install -y xinetd
systemctl start telnet.socket
systemctl start xinetd
建议开启telnet和xinetd开机自动启动,避免reboot后连不上Telnet
systemctl enable xinetd.service
systemctl enable telnet.socket
默认情况下,系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart telnet.socket
systemctl restart xinetd
#查看是否添加成功
cat /etc/securetty | grep pts
存在下图所示代表成功,不要重复设置:
然后通过telnet连接,注意telent端口是23,我使用的是MobaXterm软件连接
若出现通过telnet 登陆linux(密码正确,但登录不上)报错Login incorrect,无论怎么登陆也登陆不上,执行下面命令,查看登录日志:
tail /var/log/secure
若出现如下错误:access denied: tty ‘pts/0’ is not secure(接入被拒绝,tty pts/0是不安全的),pts/0不是固定的,有可能是pts/1或pts/2
解决办法:
#1.第一种方案:编辑securetty文件,再最后添加上对应的pts/0
vi /etc/securetty
#2.第二种方案:先查看有哪几个pts
cat /etc/securetty | grep pts
#然后将对应的pts/0 通过下列命令加进去
echo 'pts/0' >>/etc/securetty
---------------------------
#上面两种任选一种,然后
systemctl restart telnet.socket
systemctl restart xinetd
再使用telnet登录,成功即可
二、升级openssh-7.9pl
1.安装所需环境和openssh
命令如下(示例):
#准备工作
yum install gcc
yum install openssl openssl-devel -y #安装依赖包
#下载openssh.地址是:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
#下载
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz
#解压
tar -zxvf openssh-7.9p1.tar.gz
#进入解压后目录
cd openssh-7.9p1
#配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
#编译
make
#安装openssh
install -v -m700 -d /var/lib/sshd
chown -v root:sys /var/lib/sshd
groupadd -g 50 sshd
useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
make install
install -v -m755 contrib/ssh-copy-id /usr/bin
install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
install -v -m755 -d /usr/share/doc/openssh-7.9p1
install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1
#允许root登陆
先cat etc/ssh/sshd_config | grep PermitRootLogin 查看是否有PermitRootLogin yes,
1如果没有,2.如果有但前面有注释# 则执行下面命令,或编辑文件取消注释
echo "PermitRootLogin yes" >> etc/ssh/sshd_config
#开机自启动
cp -p contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chkconfig --add sshd
chkconfig sshd on
chkconfig --list sshd
#临时关闭Selinux
setenforce 0
#如果要永久关闭,修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled
#重启sshd服务,运行下面命令需要几分钟
systemctl restart sshd
#若运行报错,会提示先通过查看sshd服务状态。
systemctl status sshd
如下图,auto-restart说明启动失败
#查看报错原因
sshd -t
若出现下图原因,则需编辑/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
#找到对应的GSSAPIAuthertication, GSSAPIClearupCredentials, UsePAM 添加上#注释掉;
systemctl restart sshd
#待执行完成后,默认22端口,如果要修改,则调整/etc/ssh/sshd_config里的22端口
netstat -lnp | grep 22
若存在这个进程则说明成功,单开一个窗口去ssh连接,成功则说明升级完成
查看openssh版本
ssh -V
如下图说明升级成功