Linux 系统安全之 升级 OPENSSH

南楼画角 提交于 2020-02-25 13:01:31

OpenSSH

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

网络安全一刻也不能放松,为了系统安全尽量将 OPENSSH 升级到最新版本,目前最新版本为 8.2 P1,下面开始准备升级。

  • 实验环境 CentOS 7.5
  • 为了预防万一升级失败后,无法登陆远程主机的问题,需要先安装 、启动Telnet 服务,确保可以远程登录。
  •  
  • 安装、配置 Telnet 以及超级守护进程 xinetd 服务
  • 编辑 telnet 主配置文件 /etc/xinetd.d/telnet
  • vim /etc/xinetd.d/telnet

    service telnet
    {
        disable = no
        flags       = REUSE
        socket_type = stream
        wait        = no
        user        = root
        server      = /usr/sbin/in.telnetd
        log_on_failure  += USERID
    }
  • 配置telnet登录的终端类型,在 /etc/securetty 文件末尾增加一些pts终端
    vim /etc/securetty
    pts/0
    pts/1
    pts/2
    pts/3
  • 启动telnet服务
    systemctl start telnet.socket 

    查看服务状态
    systemctl status telnet.socket 

    查看侦听端口
    ss -atnl | grep 23 

    安装完成后,将xinetd服务加入开机自启动:
    systemctl enable xinetd.service

    将telnet服务加入开机自启动:
    systemctl enable telnet.socket

  • 使用 telnet 测试登录


  • 编译、安装无误后,下面开始配置 OPENSSL

    设置 openssl 命令的软链接
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so

    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    ldconfig -v
     
    openssl version


  • 开始安装 openssh 前,先备份原先的 openssh 文件
  • mv /etc/ssh/* /bak/sshbak
  • tar xf openssh-8.2p1.tar.gz
  • ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-pam=enable && make clean && make && make install
  • echo $? --> 0 确保编译安装无误后,复制启动脚本和PAM验证文件
  • cp /home/gf/openssh/openssh-8.2p1/contrib/redhat/sshd.init /etc/init.d/sshd
    cp /home/gf/openssh/openssh-8.2p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
  • 编辑 /etc/ssh/sshd.conf 配置文件
  • Port 22
    PermitRootLogin no
    PasswordAuthentication yes
    UsePAM yes
    UseDNS no
    Subsystem    sftp    /usr/libexec/sftp-server
  • chmod +x /etc/init.d/sshd
  • 把原先的 systemd 管理的 sshd 启动脚本文件删移或者移走,否则影响重启 sshd 服务
    mv  /usr/lib/systemd/system/sshd.service  /bak/sshbak
    mv  /usr/lib/systemd/system/sshd.socket  /bak/sshbak
  • 重新加载服务配置文件后重启 sshd 服务
  • systemctl daemon-reload
  • systemctl restart sshd
  • chkconfig sshd on
  • 重启确认无误后可以停掉 telnet 服务
  • systemctl disable telnet

  • 使用 ssh 测试重新登录

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!