配置和保护SSH

配置和保护SSH

远程访问

  • 应用场景
    • 在日常管理中,远程访问常应用于以下场景:
    • 管理数据中心服务器
    • 访问云服务器的场景
    • 远程故障排查
  • 常用方式
    • telnet:明文传输的远程访问,不安全。某些企业甚至明令禁止使用 telnet
    • ssh:也称 stelnet,是一种协议,提供加密的远程访问方式。在 linux 中,ssh 协议由软件包 openssh 提供,而 ssh 服务就是 sshd.service

SSH密码认证/登录

  • 在这里插入图片描述
通信加密

+在这里插入图片描述

中间人攻击
  • SSH 虽然传输过程中很安全,但是在首次建立链接时,无法确认发来的公钥是否 真的来自所请求的服务器,如果有人在客户端请求服务器后拦截了请求,并返回 自己的公钥冒充服务器,这时候如果链接建立,那么所有的数据就都能被攻击者 用自己的私钥解密。这也就是所谓的中间人攻击。 两台机器交换公钥过程中,当服务端返回自己的公钥(第2步)的时候,客户端 会有一条信息提示:无法验证对方是否可信,并给出对方公钥的 MD5 编码值, 询问是否确定要建立链接
主机密匙管理
  • 密匙存放位置
  • /etc/ssh/ssh_known_hosts **由管理员预配置将公钥存储在这个文件中 **
  • ~/.ssh/known_hosts **用户家目录下的默认存放路径 **
  • 公钥存储格式为主机名、IP地址、公钥的加密算法、公钥的值
  • 在这里插入图片描述
    [
  • 设置密匙不匹配自动断开连接 :设置 /etc/ssh/ssh_config(全局)或者 ~/.ssh/config(用户)配置文件中的 StrictHostKeyChecking 参数为 yes(默认是ask),那么公钥不匹配的时候就会直接中断连接
  • 由于硬盘故障或其他原因导致服务器的公钥被更换,将需要替换客户端中的旧密钥。
  • 客户端自身的公钥有三个,分别是不同算法的公钥,路径是:/etc/ssh/*key.pub。
使用ssh远程登录
  • ssh remotehostname/IP 使用当前用户登录
  • ssh remoteuser@remotehostname 使用特定用户登录
  • ssh servera
  • ssh student@servera
  • w 可以查看登录的用户以及等登录的来源
配置基于SSH密匙的身份验证
  • 基于 SSH 密钥的身份验证 可以在不使用密码的情况下 进行身份验证,降低密码暴 露的风险

  • 服务端使用客户端的公钥加 密随机字符串,验证客户端 身份。

  • 在这里插入图片描述

  • 配置过程

    1. 生成一对密匙 ssh-keygen

      静默创建的密钥为 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub,权限是600和644。也可以使用 -f 选项,来自定义保存公钥和私钥的文件

      生成的过程中,需要设置加密私钥的密码(passphrase),后续将需要使用该密码来解 密私钥。

    2. 将公钥传递到服务器上 ssh-copy-id hostname/ip

      默认传输本地保存的公钥 ~/.ssh/id_rsa.pub 到服务器上,也就是将公钥写入远端的 ~/.ssh/authorized 文件中。可以使用 -i 选项指定本地的公钥。(写入的过程需要远端 的用户名和密码

    3. 登录

      公钥传输完成后,将可以直接使用 ssh 登录,默认使用 ~/.ssh/id_rsa 作为解密的私钥, 也可以使用 -i 选项指定私钥的路径。

    4. 配置ssh-agent 实现真的无密码登录

      ecal $(ssh-agent) ssh-agent

      ssh-add 设置私钥密码,默认私钥为is_rsa 可以用-i指定

自定义openSSH 服务配置
OpenSSH 服务器配置文件
  • OpenSSH 服务由一个名为 sshd 的守护进程提供,默认配置运行良好,但是可以做一些 更改以增强系统的安全性。它的配置文件为 /etc/ssh/sshd_config
禁止 root 用户使用SSH 直接登录系统
  • 原因
    • 基于安全因素,建议禁止 root 用户通过ssh直接登录系统
    • 所有 Linux 系统上都默认存在用户名为 root 的超级用户,因此潜在的攻击者只要猜测其 密码或者使用穷举的方式破译密码,而不必猜测有效的密码账号组合就可以破解
    • root 用户具有不受限制的特权(破环大,跟踪难)
  • 配置过程
  1. 在配置文件 /etc/ssh/sshd_config 设置禁止 root 用户登录

    PermitRootLogin yes =====> no

  2. 或设置仅允许 root 用户通过密钥的身份认证:

    PermitRootLogin yes =====> without-password

  3. 重启 sshd 服务,使配置生效

    systemctl restart sshd

禁止使用SSH 进行密码身份验证
  • 原因

    • 避免密码被暴力破解,如果设置了私钥密语,还可以进一步提高安全性
    • 连接到远程服务器的shell访问更加便捷
  • 配置过程:

    1. 在配置文件 /etc/ssh/sshd_config 设置禁止用户登录: PassWordAuthentication yes =====> no 将 yes 改为 no

    2. 重启 sshd 服务,使配置生效:

      systemctl restart sshd

hentication yes =====> no 将 yes 改为 no

  1. 重启 sshd 服务,使配置生效:

    systemctl restart sshd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值