中间人攻击有很多方式,比如常见的ARP或者DNS欺骗,在SSH连接时也有可能碰到类似的情况,所以ssh在know_hosts的管理中加入了对于已知服务器的信任列表的管理,多多少少可以确认一些可能的风险。

Man-In-The-Middle-Attack:中间人攻击MITM

中间人攻击原理很简单,中间人介于客户端和服务器之前充当代理的角色,客户端和服务器之间的所有信息对于中间人来说都是可见的,中间人可以在信息的传递过程中查看内容或对内容进行修改,比如可以如下图所示,在证书的请求和传递的过程中丢弃客户所请求的证书,而使用自己提供的证书。

SSH的警告信息

在SSH中也用到了证书,可以使用ECDSA或者RSA方式结合摘要技术生成表示服务器身份的密钥指纹。而一旦当此指纹发生变化时,ssh则会提示有可能有实际的风险,可能会提示如下信息:

[root@host121 .ssh]# ssh 192.168.163.121
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
ECDSA host key for 192.168.163.121 has changed and you have requested strict checking.
Host key verification failed.
[root@host121 .ssh]#

注意提示信息的主要内容:

  • REMOTE HOST IDENTIFICATION HAS CHANGED: 远程连接的身份发生了变化,因为中间人攻击的方式最重要的一个特点就是服务器侧和客户端没有意识到这个中间人角色的存在,所以进行提示是很重要的,这里提示你之前连接的这台主机已经发生变化了。
  • IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!: 大写一般可表示警告,告诉使用者可能有人在做很讨厌的事情,比如MITM。
  • Someone could be eavesdropping on you right now (man-in-the-middle attack)!:提示可能有人在监控你

产生SSH的MITM警告信息的条件和方法

只要事前存在的know_hosts中保存的连接对象机器的密钥指纹一旦发生变化,ssh的时候就会提示上述信息,但是在实际情况中,很多时候此密钥指纹都会发生变化,比如:

  • 重新安装了操作系统
  • 重新安装了openssh或者手动更新了/etc/ssh下的密钥对

相较于这些更为常见的场景,ssh的警告会宁可误报,不可漏报,只要跟之前留在know_hosts中的密钥指纹不同,就会报错,比如可以使用如下步骤再现:

  • 事前确认两台机器的密钥指纹
[root@host121 .ssh]# ssh-keyscan -t ECDSA 192.168.163.121
# 192.168.163.121:22 SSH-2.0-OpenSSH_7.4
192.168.163.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEy3w5004yyzNA8dXo1vo67E63tZybV88SiDupDfnHzHCeZ4tHjNqdabc9Fa+Jwwe5uIjcUFb+Ag4HaBjK4982U=
[root@host121 .ssh]# ssh-keyscan -t ECDSA 192.168.163.122
# 192.168.163.122:22 SSH-2.0-OpenSSH_7.4
192.168.163.122 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGylOHayVgNd3bV3NViPZ4CrAP/j9baVWGGloJUfrxwvt4+JdmkJVuUW5/aVP8U6Vg2HLFNsCVqszxOTkFpB4bo=
[root@host121 .ssh]#
  • 修改know_hosts
    之前设定的是连接192.168.163.121这台机器,设定信息如下所示
192.168.163.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEy3w5004yyzNA8dXo1vo67E63tZybV88SiDupDfnHzHCeZ4tHjNqdabc9Fa+Jwwe5uIjcUFb+Ag4HaBjK4982U=

这里偷偷将后面的密钥指纹改成192.168.163.122,know_hosts的信息如下所示:

[root@host121 .ssh]# cat known_hosts
#192.168.163.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEy3w5004yyzNA8dXo1vo67E63tZybV88SiDupDfnHzHCeZ4tHjNqdabc9Fa+Jwwe5uIjcUFb+Ag4HaBjK4982U=
192.168.163.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGylOHayVgNd3bV3NViPZ4CrAP/j9baVWGGloJUfrxwvt4+JdmkJVuUW5/aVP8U6Vg2HLFNsCVqszxOTkFpB4bo=
[root@host121 .ssh]#

这样ssh 192.168.163.121时就会提示上述警告信息了。

避免方法

方法1: 更新操作系统或其他操作之前事前备份指纹信息

事前备份密钥指纹信息,重新安装之后恢复,避免出现这种意外操作因为的问题。

方法2: 及时更新客户端连接的设定信息

一旦发生变化,及时更新客户端连接设定文件know_hosts

方法3: 连接时设定StrictHostKeyChecking

通过-o参数设定StrictHostKeyChecking参数为no,从而忽略此问题,但会提示警告信息。连接示例信息如下所示:

[root@host121 .ssh]# ssh -o StrictHostKeyChecking=no 192.168.163.121
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Last login: Sat Dec  7 19:54:27 2019 from host121
[root@host121 ~]#

总结

实际上这个提示的功能防范即为有限,很多还是在流程上的规范来确保系统的安全,比如最初的know_hosts加入了中间人的指纹信息,ssh是无法辨别的,还是通过用户的确认结合起来才能够完成。

SSH基础:中间人攻击防范相关推荐

  1. SSH V2的中间人攻击

    SSH V2的中间人攻击 2012-12-19 10:48:52     我来说两句       作者:Dis9Team 收藏    我要投稿 中间人攻击(Man-in-the-MiddleAttac ...

  2. SSH协议弱加密算法漏洞的利用及复现(中间人攻击)

    SSH协议弱加密算法漏洞的利用及复现(中间人攻击) SSH协议弱加密算法漏洞的利用及复现(中间人攻击) 很多服务器或者交换机是存在SSH协议弱加密算法漏洞的,但是该漏洞如何利用呢?最近研究了下此漏洞的 ...

  3. 清晰图解https如何防范中间人攻击

    https/tls原理 HTTPS访问的三个阶段 第一阶段 认证站点 客户端向站点发起HTTPS请求,站点返回数字证书.客户端通过数字证书验证所访问的站点是真实的目标站点. 第二阶段 协商密钥 客户端 ...

  4. HTTPS 防范中间人攻击原理

    HTTPS因为增加了CA证书,可以在会话前通过证书验证证明通信的彼此就是所声称的人,因此可以防范中间人攻击.这种防范中间人攻击的前提是在HTTPs协议的双向认证上.如果仅仅实现了HTTPs的单向认证, ...

  5. HTTPS原理和防范中间人攻击

    HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...

  6. 吃透浏览器安全(同源限制/XSS/CSRF/中间人攻击)

    前言 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,特别是前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网 ...

  7. 漫话:如何给女朋友解释为什么吴某凡会被中间人攻击?

    中间人攻击 中间人攻击(Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们 ...

  8. 【Linux云计算架构:第三阶段-Linux高级运维架构】第19章——安装Kali黑客操作系统-利用ettercap实施中间人攻击

    内容: 19.1 安装Kali黑客操作系统及相关实战 19.2 实战:linux之kali系统ssh服务开启 19.3 实战: kali下的nmap扫描工具 19.4 MITM中间人攻击理论 19.5 ...

  9. TLS是如何保障数据传输安全(中间人攻击)

    前言 前段时间和同事讨论HTTPS的工作原理,当时对这块知识原理掌握还是靠以前看了一些博客介绍,深度不够,正好我这位同事是密码学专业毕业的,结合他密码学角度对tls加解密(DH这块)的阐述,让我对这块 ...

最新文章

  1. 20分钟教你搞懂Git!
  2. VS2017中使用码云上传项目以及问题汇总
  3. python时间序列峰值检测_python – 二维数组中的峰值检测
  4. 如何在ubuntu14.04(64位)编译运行32位程序
  5. python ppt pdf linux,带你用Python玩转PPT
  6. Py之dominate:python的dominate库的简介、安装、使用方法之详细攻略
  7. 开放下载!《iOS开发者必读资讯》
  8. [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.3
  9. Node — 第三天
  10. javaweb项目自动设置热加载
  11. 如何实施基本的“长轮询”?
  12. 【ArcGIS|空间分析】焦点统计 (类型)
  13. ImportError: cannot import name ‘activations‘ from ‘keras.layers‘
  14. NH2-UiO-66|CAS号1260119-00-3金属有机骨架
  15. 广义瑞利商_LDA里的瑞利商和广义瑞利商
  16. 浅析相机相关坐标系的相互转换(世界坐标系、相机坐标系、图像坐标系、像素坐标系、内参矩阵、外参矩阵、扭转因子)【相机标定计算机视觉】
  17. 动态链接(地址无关技术)
  18. Emacs Stardict
  19. 以图搜图引擎 With Saprk
  20. 临界比例度法 matlab程序,扩充临界比例度法整定参数及PID控制.doc

热门文章

  1. 技术类博客网站推荐(转)
  2. 队列的基本用法 舞者
  3. 一个html写的app首页,如何快速开发一个简单好看的APP控制页面
  4. HNU-电路与电子学-综合设计-模型机
  5. 几种优化(求最优解)算法的比较
  6. 问题解决zipimport.ZipImportError: can‘t decompress data; zlib not availabl
  7. windows创建软链接
  8. 17 网站架构的伸缩性设计
  9. 2020年重庆二手房数据分析
  10. CentOS下nohup命令