当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 第一部分:协议概览 整个通讯过程中,经过下面几个阶段协商实现认证连接。
 

 

 ·openssh发现严重安全漏洞    »显示摘要«
    摘要:     美国cert/cc及美国internet security systems(iss)等于当地时间6月26日宣布,免费的ssh(secure shell)软件套件“openssh”中存在安全漏洞。     受此安全漏洞影响的是版本2.3.1至3.3。如果有人恶意使用此安全漏洞,则有可能在运行openssh的服务器程序(sshd)的机器上远程运行任意程序。这些程序通过sshd的权限(通常......
 ·用户安全    »显示摘要«
    摘要:   本文从用户角度讨论unix系统安全,阐述口令,文件保护,目录保护,与用户   程序有关的某些特殊特性和使用crypt命令加密,并给出一些重要的安全忠告,   以帮 助用户保护自己的户头安全.      1.口令安全   unix系统中的/etc/passwd文件含有全部系统需要知道的关于每个用户的信   息(加密后的口令也可能存于/etc/shadow文件中).   /etc/passw......


SSH通信协议浅析

  第一部分:协议概览 【程序编程相关:阻断拒绝服务攻击

【推荐阅读:黑客没有第三条道路可选——要么当黑客,要

   【扩展信息:Win2000惊爆大漏洞

  整个通讯过程中,经过下面几个阶段协商实现认证连接.

  

  第一阶段:

  

  由客户端向服务器发出 tcp 连接请求.tcp 连接建立后,客户端进入等待,服务器向客户端发送第一个报文,宣告自己的版本号,包括协议版本号与软件版本号.协议版本号由主版本号与次版本号两部分组成.它与软件版本号一起构成形如:

  

  "ssh-.-\n"

  

  的字符串.其中软件版本号字符串的最大长度为40个字节,仅供调试使用.客户端接到报文后,回送一个报文,内容也是版本号.客户端响应报文里的协议版本号这样来决定:当与客户端相比服务器的版本号较低时,如果客户端有特定的代码来模拟,则它发送较低的版本号;如果它不能,则发送自己的版本号.当与客户端相比服务器的版本号较高时,客户端发送自己的较低的版本号.按约定,如果协议改变后与以前的相兼容,主协议版本号不变;如果不相兼容,则主主协议版本号升高.

  

  服务器接到客户端送来的协议版本号后,把它与自己的进行比较,决定能否与客户端一起工作.如果不能,则断开tcp 连接;如果能,则按照二进制数据包协议发送第一个二进制数据包,双方以较低的协议版本来一起工作.到此为止,这两个报文只是简单的字符串,你我等凡人直接可读.

  

  第二阶段:

  

  协商解决版本问题后,双方就开始采用二进制数据包进行通讯.由服务器向客户端发送第一个包,内容为自己的 rsa主机密钥(host key)的公钥部分.rsa服务密钥(server key)的公钥部分.支持的加密方法.支持的认证方法.次协议版本标志.以及一个 64 位的随机数(cookie).这个包没有加密,是明文发送的.客户端接收包后,依据这两把密钥与被称为cookie的 64 位随机数计算出会话号(session id)与用于加密的会话密钥(session key).随后客户端回送一个包给服务器,内容为选用的加密方法.cookie的拷贝.客户端次协议版本标志.以及用服务器的主机密钥的公钥部分与服务密钥的公钥部分进行加密的用于服务器计算会话密钥的32 字节随机字串.除这个用于服务器计算会话密钥的 32字节随机字串外,这个包的其他内容都没有加密.之后,双方的通讯就是加密的了,服务器向客户端发第二个包(双方通讯中的第一个加密的包)证实客户端的包已收到.

  

  第三阶段:

  

  双方随后进入认证阶段.可以选用的认证的方法有:

  

  (1) ~/.rhosts 或 /etc/hosts.equiv 认证(缺省配置时不容许使用它);

  (2) 用 rsa 改进的 ~/.rhosts 或 /etc/hosts.equiv 认证;

  (3) rsa 认证;

  (4) 口令认证.

  

  如果是使用 ~/.rhosts 或 /etc/hosts.equiv 进行认证,客户端使用的端口号必须小于1024.

  

  认证的第一步是客户端向服务器发 ssh_cmsg_user 包声明用户名,服务器检查该用户是否存在,确定是否需要进行认证.如果用户存在,并且不需要认证,服务器回送一个ssh_smsg_success 包,认证完成.否则,服务器会送一个 ssh_smsg_failure 包,表示或是用户不存在,或是需要进行认证.注意,如果用户不存在,服务器仍然保持读取从客户端发来的任何包.除了对类型为 ssh_msg_disconnect.ssh_msg_ignore 以及 ssh_msg_debug 的包外,对任何类型的包都以 ssh_smsg_failure 包.用这种方式,客户端无法确定用户究竟是否存在.

  

  如果用户存在但需要进行认证,进入认证的第二步.客户端接到服务器发来的 ssh_smsg_failure 包后,不停地向服务器发包申请用各种不同的方法进行认证,直到时限已到服务器关闭连接为止.时限一般设定为 5 分钟.对任何一个申请,如果服务器接受,就以 ssh_smsg_success 包回应;如果不接受,或者是无法识别,则以 ssh_smsg_failure 包回应.

  

  第四阶段:

  

  认证完成后,客户端向服务器提交会话请求.服务器则进行等待,处理客户端的请求.在这个阶段,无论什么请求只要成功处理了,服务器都向客户端回应 ssh_smsg_success包;否则回应 ssh_smsg_failure 包,这表示或者是服务器处理请求失败,或者是不能识别请求.会话请求分为这样几类:申请对数据传送进行压缩.申请伪终端.启动 x11.tcp/ip 端口转发.启动认证代理.运行 shell.执行命令.到此为止,前面所有的报文都要求 ip 的服务类型(tos)使用选项 iptos_throughput.

  

  第五阶段:

  


...   下一页
    摘要:   新浪科技讯 美国纽约当地时间11月26日(北京时间11月27日)消息,realnetworks公司的流媒体播放软件realone player和real player被发现存在三个致命的漏洞,黑客可以利用这些漏洞来入侵并控制用户的电脑,全球范围内的1.15亿用户都将受到影响,不过目前realnetworks公司已经提供了用于弥补这些漏洞的补丁。     这三个漏洞可以导致用户的计算机发生......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE