TCP/IP 基本原理 第七章 远程登录

26
7-1 中中中中中中中中 中中中中 TCP/IP TCP/IP 基基基基 基基基基 基基基 基基基基 基基基 基基基基

description

TCP/IP 基本原理 第七章 远程登录. 7.1 概述. 远程登录( Telnet )是 Internet 提供的基本服务之一,它允许用户在本地主机上对远方主机进行帐号注册,注册成功后,可以把本地主机看作是远方主机的一个普通终端,用户可以同远方主机上的其他用户一样使用远方主机上的软、硬件资源。 - PowerPoint PPT Presentation

Transcript of TCP/IP 基本原理 第七章 远程登录

Page 1: TCP/IP 基本原理 第七章  远程登录

7-1中国科学技术大学 远程教育

TCP/IPTCP/IP 基本原理基本原理

第七章 远程登录第七章 远程登录

Page 2: TCP/IP 基本原理 第七章  远程登录

7-2中国科学技术大学 远程教育

7.1 概述

远程登录( Telnet )是 Internet 提供的基本服务之一,它允许用户在本地主机上对远方主机进行帐号注册,注册成功后,可以把本地主机看作是远方主机的一个普通终端,用户可以同远方主机上的其他用户一样使用远方主机上的软、硬件资源。当用户的机器上没有特定的软件、硬件,而在 Internet 网上的另一台机器上拥有这些资源时,他便可以同那台机器的系统管理员取得联系,申请到远方主机的一个帐号,然后使用远程登录服务将自己的主机作为终端设备登录到远方机器上去,使用那些资源。尽管地理上两台机器可能相距很远,但在用户看来,他就像在近程使用那台机器一样,不会感到任何不方便。远程登录的功能:远程登录的作用是把本地主机作为远程主机的一台仿真终端使用,这同样是一种非常重要的 Internet 基本服务。 Telnet 之所以重要,首先是因为有些通信软件只支持 telnet ;其次在于有些非常流行的服务,如 BBS ,只有通过远程登录才能访问;第三是因为 Telnet 可以很方便地访问 Internet 上为数众多的联机数据库和图书馆卡片目录。事实上, Internet 上的绝大多数服务都可通过 Telnet 进行访问。 

Page 3: TCP/IP 基本原理 第七章  远程登录

7-3中国科学技术大学 远程教育

7.1 概述  具体说来,通过远程登录 Telnet 可得到如下服务:

访问 Internet 上的各种联机数据库,包括科网公司的数据库。连接到 Internet 以外的专用商业网和一些服务,例如 DIALOG(电子数据库的集合)或 CompuServe (一种商业电子公告牌系统)。不过,这时的先决条件是你必须在这些系统上拥有一个合法帐户,以便进行登录、使用它们的系统程序并检索有关信息。查阅图书馆的馆藏目录或图书。许多大型图书馆允许用户通过Telnet 访问它们的某些程序。比方说,用户可以用 Telnet 连接到中科院、北京大学和清华大学的图书馆,使用这些图书馆的电子卡目录,就好象用户在使用图书馆的一个终端一样。使用 World Wide Web , Gopher , Archie 和 WAIS 等各种高级的 Internet 服务。使用 Whois 、 Netfind 和 X.500 等目录服务,查询用户的个人信息。访问电子公告牌系统( BBS )。

Page 4: TCP/IP 基本原理 第七章  远程登录

7-4中国科学技术大学 远程教育

7.2 远程登录的工作过程

使用 Telnet 协议进行远程登录时需要满足以下条件:在本地计算机上必须装有包含 Telnet 协议的客户程序;必须知道远程主机的 IP 地址或域名;必须知道登录标识与口令。 Telnet 远程登录服务分为以下 4 个过程:

本地与远程主机建立连接。该过程实际上是建立一个 TCP 连接,用户必须知道远程主机的 IP 地址或域名;将本地终端上输入的用户名和口令及以后输入的任何命令或字符以 NVT ( Net Virtual Terminal )格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个 IP 数据报;将远程主机输出的 NVT 格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP 连接。

Page 5: TCP/IP 基本原理 第七章  远程登录

7-5中国科学技术大学 远程教育

远程登录原理

INTERNETINTERNETINTERNETINTERNET

用户本地计算机 远程服务器

客户机服务器

Telnet

运行 Telnet应用程序

Page 6: TCP/IP 基本原理 第七章  远程登录

7-6中国科学技术大学 远程教育

7.3 Telnet 协议 基本内容

Telnet 协议是 TCP/IP 协议族中的一员,是 Internet 远程登录服务的标准协议。应用 Telnet 协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:

Telnet 定义一个网络虚拟终端为远的系统提供一个标准接口。客户机程序不必详细了解远的系统,他们只需构造使用标准接口的程序;Telnet 包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项;Telnet 对称处理连接的两端,即 Telnet 不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。

Page 7: TCP/IP 基本原理 第七章  远程登录

7-7中国科学技术大学 远程教育

适应异构 为了使不同操作系统间的 Telnet交互成为可能,就必须详

细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用 ASCII回车控制符结束,另一些系统则需要使用 ASCII换行符,还有一些系统需要用两个字符的序列回车 -换行;再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用 CTRL+C ,而另一些系统使用 ESCAPE )。如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远地系统解释后很可能会不准确或者出现错误。因此, Telnet 协议必须解决这个问题。

为了适应异构环境, Telnet 协议定义了数据和命令在 Internet 上的传输方式,此定义被称作网络虚拟终端 NVT ( Net Virtual Terminal )。它的应用过程如下:

对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为 NVT 格式,并发送到服务器,服务器软件将收到的数据和命令,从 NVT 格式转换为远地系统需要的格式;

对于返回的数据:远地服务器将数据从远地机器的格式转换为 NVT 格式,而本地客户机将将接收到的 NVT 格式数据再转换为本地的格式。

Page 8: TCP/IP 基本原理 第七章  远程登录

7-8中国科学技术大学 远程教育

传送远地命令 我们知道绝大多数操作系统都提供各种快捷键来实现相应

的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。那么对于 Telnet 来说,它是用什么来实现控制命令的远地传送呢?

Telnet 同样使用 NVT 来定义如何从客户机将控制功能传送到服务器。我们知道 USASCII 字符集包括 95 个可打印字符和 33个控制码。当用户从本地键入普通字符时, NVT 将按照其原始含义传送;当用户键入快捷键(组合键)时, NVT 将把它转化为特殊的 ASCII 字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。将正常 ASCII 字符集与控制命令区分主要有两个原因:

这种区分意味着 Telnet 具有更大的灵活性:它可在客户机与服务器间传送所有可能的 ASCII 字符以及所有控制功能;这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。

Page 9: TCP/IP 基本原理 第七章  远程登录

7-9中国科学技术大学 远程教育

数据流向 下面给出 Telnet 中的数据流向:数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,

客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远地机器,远地操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点,最后,远地操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。

因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。强制命令

我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满,如果这样,远地服务器也无法再将数据写入伪终端,并且最终导致停止从 TCP连接读取数据, TCP 连接的缓冲区最终也会被占满,从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远地机器的控制。

Page 10: TCP/IP 基本原理 第七章  远程登录

7-10中国科学技术大学 远程教育

为了解决此问题, Telnet 协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道 TCP 用紧急数据机制实现外带数据信令,那么 Telnet 只要再附加一个被称为数据标记 (date mark) 的保留八位组,并通过让 TCP发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。服务器在遇到了数据标记后将返回正常的处理过程。

选项协商 由于 Telnet 两端的机器和操作系统的异构性,使得 Telnet

不可能也不应该严格规定每一个 telnet 连接的详细配置,否则将大大影响 Telnet 的适应异构性。因此, Telnet采用选项协商机制来解决这一问题。

Telnet选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。例如:有一个选项可以控制 Telnet 是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。

Page 11: TCP/IP 基本原理 第七章  远程登录

7-11中国科学技术大学 远程教育

telnet 客户端和服务器在进行连接是的任何一个阶段都可以协商各种选项。下表是一些重要的选项参数:

telnet 对话的任意一端都可以在本地或远程允许或取消一个选项。要更改选项的发起者需要发送三个字节的命令,格式如下:

IAC , <操作类型 ><选项 >

telnet 常用选项十进制码 名称 RFC

1 Echo回显 857

3 Suppress go ahead 禁止继续 858

5 Status 状态 859

6 Timing mark 时间戳 860

24 Terminal type 终端类型 1091

31 Window size 窗口大小 1073

32 Terminal speed 终端速度 1079

33 Remote flow control 远程流控制 1372

34 Line mode 行模式 1184

36 Environment variables 环境参数 1408

Page 12: TCP/IP 基本原理 第七章  远程登录

7-12中国科学技术大学 远程教育

回应方的格式也是如此操作是下表列出的四种类型之一。

对应这些发送出的命令有下表所列出的几种可能的应答:

telnet 协商操作码描述 十进制码 行为

WILL 251 发送者想做某事DO 252 发送者想让对方做某事

WON‘T 253 发送者不想做某事

DON’T 254 发送者想让对方不做某事

telnet 协商操作应答码发送者发送 接受者响应 含义

WILL DO 如果收方能够处理,发方将使用某种特定的机制。选项开始生效WILL DON‘T 收方说不能支持选项,选项不生效

DO WILL 收方说若发方想使用某个特定的选项,那么它能处理,选项开始生效

DO WON’T 收方说它不能支持选项,选项不生效WON‘T DON‘T 取消选项。 DON‘T仅仅是响应DON’T WON’T 取消选项, WON’T仅仅是响应

Page 13: TCP/IP 基本原理 第七章  远程登录

7-13中国科学技术大学 远程教育

比方说如果发送方想要对方“禁止继续 (suppress go ahead)” 。它会发送这样一个发送序列:255 (IAC), 251(will), 3

这二个字节序列的最后一个字节指明了所需的行为。在主机之间传递选项时,除了一个选项编码外可能还需要更

多其他信息。要求有一个参数的那些选项就属于这种情况。这需要用“子协商”实现。

主机间传递其他信息的策略包含两个步骤:首先,双方都同意“商讨”该参数,然后对参数进行“商讨”。在第一步中,同意商讨参数以一种普通的方式来进行。一方通过发送带有选项代码的DO ( 或 WILL) 命令建议使用该选项,另一方发送带有选项代码的DO ( 或 WILL) 命令来表示接受这个建议。一旦双方都同意使用该选项,通过在 SB 命令后面跟上相应的选项代码、参数和命令 SE 来开始子协商。每一方都被假设为能够解析该参数。因为最初通过交换WILL 和 DO 命令,双方都表明可以支持该选项。另外,即使收方不能解析该参数,收方也可以通过搜索 SE 命令(如字符串 ICA SE )来定位参数字符串的结束位置。当然,任何时候一方都可以给另一方发送 WON‘T 或 DON’T 来拒绝继续进行进一步的子协商。

Page 14: TCP/IP 基本原理 第七章  远程登录

7-14中国科学技术大学 远程教育

7.4 远程登录程序 telnet

telnet 程序可以让你的计算机像个哑终端 (Dumb Terminal ,指没有提供计算功能的终端 ) 一样连到另一个计算机系统上,它是TELNET 协议的一个具体实现。

7.4.1 终端仿真很早之前,计算机的体积非常大.它们甚至能放满整个房

间。为了能让多个人使用一台计算机,一些“终端”被接到了计算机上。最早的时候这些终端是电传打字机,即一种流行的打字机,被称作 TTY (” Tele Typewriter ,电传打字机,是沿用以前的说法,表示输入设备 ) 。计算机可以让 TTY打印字符、换行、回车,还可以读入用户在 TLTY 上的输入。

TTY 之后引人了 CRT (Cathode-Ray Tube ,阴极射线管 ) 终端。这样的终端可以在显示器上显示字符。早期的这种终端包括视频终端( Video Terminals ,简称 VT )的 DEC 一族,像 VT-52 和 VT-100 ,它们都曾经非常地流行。它们允许用户通过移动光标进行“全屏编辑”,并且可以任意地删除字符。它们还允许计算机打印特殊的符号,比如打印线条和破折号,打印粗体字符,清屏等。

Page 15: TCP/IP 基本原理 第七章  远程登录

7-15中国科学技术大学 远程教育

如今计算机已经小到可以放到桌面上,甚至装在口袋里,不需要再使用终端,然而人们依旧使用着终端的仿真程序进行远程登录通话, telnet 就是这样一种在 TCP/IP 的仿真终端。一旦一个 telnet 连接建立后,通信的两端就被假设为在一个“网络虚拟终端”上开始和终止操作。对 TTY 、 VT-100 这种古老类型终端的仿真是通过一台机器控制另一台机器的好方法,因为它们是建立在字符上的,而且它们的设计让它们可以快速有效地传送和接收数据。在绝大多数情况下, telnet 是仿真 VI”- 100 终端的.它的显示总是文本的,没有图形。

7.4.2 telnet 服务器配置一般来说,默认安装的 UNIX 服务器都打开了 telnet 服务。

telnet 服务在 UNIX 下是通过 inetd 或者 xinetd守护进程启动的。通过查看 inetd 的配置文件可以看到与下面所列类似的代码:telnet stream tcp6 nowait root /usr/sbin/in. telnetd in.telnetd 表明 telnet 服务通过 inetd守护进程启动了。如果是使用 xinetd 系统,可以在 /etc/xinetd.d 中发现一个名为 telnet 的文件。

由于 telnet 是明文传输的,所以安全性很低,一般都被禁用或者使用 TCP Wrappers 来启动从而控制能访问 telnet 的 IP 地址。

Page 16: TCP/IP 基本原理 第七章  远程登录

7-16中国科学技术大学 远程教育

7.4.3 常用的 TELNET 客户端 1. telnet

最简单也是最普遍的 telnet 客户端是 telnet 。在绝大多数的Windows 系统或 UNIX 系统中都有 telnet 。在 Windows 的命令行中键人:telnet [hostname [port]]

就可以远程登录到名为 hostname ,端口号为 port 的主机上,只要这台主机开启了 telnet 服务。用 Ctrl+] 可以设置部分 telnet 的选项。

2. NetTerm

NetTerm 是较早的一种 TELNET 终端,它的界面比 telnet 以更友好,在前两年是最流行的一种 telnet 客户端。当要连接到一个主机上时,用鼠标左键单击地址簿,并且选择 Telnet Default 这个条目,在 Host/IP 中输入主机地址。

Page 17: TCP/IP 基本原理 第七章  远程登录

7-17中国科学技术大学 远程教育

7.5 windows2000 的 Telnet 服务 基本配置

Win2000 为我们提供了 Telnet 客户机和服务器程序: Telnet.exe 是客户机程序( Client ), tlntsvr.exe 是服务器程序( server ),同时它还为我们提供了 Telnet 服务器管理程序 tlntadmn.exe 。

Windows 2000 默认安装了 Telnet 服务,但是并没有默认启动。下面给出 Telnet 服务的一部分默认设置:

AllowTrustedDomain :是否允许域用户访问。默认值是 1 ,允许信任域用户访问。可以改为 0: 不允许域用户访问(只允许本地用户)。DefaultDomain :可以对与该计算机具有信任关系的任何域设置。默认值是“ .” 。DefaultShell :显示 shell 安装的路径位置。默认值是: %systemroot%\System32\Cmd.exe /q /k MaxFailedLogins :在连接终止之前显示尝试登录失败的最大次数。默认是 3 。LoginScript :显示 Telnet 服务器登录脚本的路径位置。默认的位置就是“%systemroot%\System32\login.cmd” ,你可以更改脚本内容,这样登录进 Telnet 的欢迎屏幕就不一样了。

Page 18: TCP/IP 基本原理 第七章  远程登录

7-18中国科学技术大学 远程教育

早期的 SMB 协议在网络上明文传输口令,后来出现了 "LAN Manager Challenge/Response"验证机制,简称 LM ,它十分简单以至很容易被破解,微软随后提出了WindowsNT挑战 /响应验证机制,即 NTLM 。现在已经有了更新的 NTLMv2 以及 Kerberos验证体系。 NTLM 工作流程是这样的:

客户端首先在本地加密当前用户的密码成为密码散列客户端向服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输服务器产生一个 16位的随机数字发送给客户端,作为一个 challenge (挑战)客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response (响应)服务器把用户名、给客户端的 challenge 、客户端返回的 response 这三个东西,发送域控制器域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge 。域控制器比较两次加密的 challenge ,如果一样,那么认证成功。

Page 19: TCP/IP 基本原理 第七章  远程登录

7-19中国科学技术大学 远程教育

从上面的过程我们可以看出, NTLM 是以当前用户的身份向Telnet 服务器发送登录请求的,而不是用你扫到的对方管理员的帐户和密码登录,显然,你的登录将会失败。举个例子来说,你家的机器名为 A (本地机器),你入侵的机器名为 B (远地机器),你在 A上的帐户是 xinxin ,密码是 1234 ,你扫到 B 的管理员帐号是 Administrator ,密码是 5678 ,当你想 Telnet 到 B 时, NTLM 将自动以当前用户的帐号和密码作为登录的凭据来进行上面的 7项操作,即用 xinxin 和 1234 ,而并非用你扫到的 Administrator 和 5678 ,且这些都是自动完成的,根本不给你插手的机会,因此你的登录操作将失败。

由于 Telnet 服务器对 NTLM 的使用有 3 个选项,所以当你 Telnet 远地机器时,会显示下面情况中的一种:1)身份验证选项 =0 时 ===================================== Microsoft (R) Windows (TM) Version 5.00 (Build 2195) Welcome to Microsoft Telnet ServiceTelnet Server Build 5.00.99201.1login:password: \\ 为 0 时不使用 NTML身份验证,直接输入用户名和密码,比如你可以输入扫到的 Administrator 和 5678

Page 20: TCP/IP 基本原理 第七章  远程登录

7-20中国科学技术大学 远程教育

2)身份验证选项 =1 时=====================================NTLM Authentication failed due to insufficient credentials. Please login withclear text username and passwordMicrosoft (R) Windows (TM) Version 5.00 (Build 2195)Welcome to Microsoft Telnet ServiceTelnet Server Build 5.00.99201.1 login: password:

\\ 先尝试 NTLM 身份验证,如果失败,再使用用户名和密码,其实这种方式对于我们来说,与上一种方式没什么区别

3)身份验证选项 =2 时 ===================================== NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password Server allows NTLM authentication only Server has closed connection 遗失对主机的连接。 C:\>

\\仔细看看上面的显示,根本没有给你输入用户名和密码的机会,直接断开连接,扫到了密码也是白扫

Page 21: TCP/IP 基本原理 第七章  远程登录

7-21中国科学技术大学 远程教育

所以对于入侵者来说, NTLM 是横在我们面前的一座大山,必须要除掉它,一般我们有如下几种方法: 1. 通过修改远程注册表更改 telnet 服务器配置,将验证方式从 2改为1 或 0 ;2. 使用 NTLM.exe ,上传后直接运行,可将 telnet 服务器验证方式从2改为 1 ; 3. 在本地建立扫描到的用户,以此用户身份开启 telnet 客户机并进行远程登录; 4. 使用软件,比如 opentelnet.exe (需要管理员权限且开启 IPC 管道) 5. 使用脚本,如 RTCS ,(需要管理员权限但不依赖 IPC 管道)

基本上是以上 5 种,其中后两种是我们比较常用的开 telnet 的手法,而且使用方法十分简单,命令如下:OpenTelnet.exe \\server username password NTLMAuthor telnetport OpenTelnet.exe \\ 服务器地址 管理员用户名 密码 验证方式 (0 或 1) telnet 端口cscript RTCS.vbe targetIP username password NTLMAuthor telnetport cscript RTCS.vbe < 目标 IP> < 管理员用户名 > <密码 > <验证方式 > <tlnet端口 > 试试远程登录

Page 22: TCP/IP 基本原理 第七章  远程登录

7-22中国科学技术大学 远程教育

7.6 非标准端口号的 Telnet 服务

当客户机向某一宿主机发出请求后,该由该主机的哪个服务器程序来处理该请求呢?这要由网络通信软件来决定。每个服务器都有一个端口号,网络通信软件正是通过端口号来识别各个服务器程序的。当客户程序想要与某些服务相连时,它必须确定地址,表示与某台服务器相连,并说明端口号,表示与该主机上的哪项服务相连。一些经常使用的应用程序,如 Telnet , Gopher , FTP 等都有自己固定的端口号。标准的 Telnet 的端口号是 23 ,标准的 Gopher 的端口号是 70 ,标准的 FTP 的端口号是 200 。常用程序的标准端口号可在 RFC ( request for comments )的 Assigned Numbers 中查到。在实际操作中,如果通过标准端口,使用标准服务程序,端口号可以省略不写,即系统的默认值就是 23 。在图形界面的情况下,用户一般不必更改端口号项。   在 Internet 网上也有一些主机不是以标准的 23 号端口提供远程登录服务,这就是非标准的 Telnet ,如果想要登录到这些主机上去,除具有其帐号和口令外,还需要知道其特殊的端口号,并指明端口号。例如:      % telnet   garcon.cso.uiuc.edu   620

Page 23: TCP/IP 基本原理 第七章  远程登录

7-23中国科学技术大学 远程教育

表明主机 garcon.cso.uiuc.edu 的远程登录服务是通过 620 端口提供的。如果在这里不指明端口号,则表明是 23 号标准端口,但是 garcon.cso.uiuc.edu 宿主机的 23 端口可能并不提供远程登录服务。因此不指明端口号就不能登录到 garcon.cso.uiuc.edu宿主机上。   使用非标准端口提供远程登录服务,主要是想缩小提供远程登录服务的范围,或是在网上设定一个小的内部通信环境。具体来说就是,设定一个非标准服务器,让它监听某一个端口,例如端口 100 的请求,再通知本部门的用户通过端口 100 登录到该服务器,使用该服务器的资源,而其它非本部门的用户并不知道这个端口号,这样就形成一个小的内部的通信环境了。    Internet 网上的许多服务都可以借助于 Telnet 进行。一般是通过不同的用户登录名: www 、 gopher 、 news 、 wais 等登录到不同的服务程序上,有时也可以用不同的端口号登录到不同的服务程序,但这时往往需要相应的口令和帐号。假设,用户已知宿主机 sonne.uiuc.edu 提供 News 服务,那么就可以:      % telnet   sonne.uiuc.edu   119    119 是网络 News 服务的固定端口号,通过 Telnet ,指明端口就可以使本地机直接连到 sonna 主机的 News 服务器程序上,而不是 Telnet 服务程序。其它许多服务也是同样的。这样一方面不用本地的 News 客户程序也可以使用News 服务,另一方面可以通过这种方法检查故障。如果用户通过本地的 News 程序不能连接到相应的 News 服务器上,而通过 Telnet加指定服务的端口号就可以联上,则表明是本地的客户机程序出了故障,如果通过 Telnet 的方式也不能登录,那么就有可能是用户欲访问的 News 服务器出了问题。

Page 24: TCP/IP 基本原理 第七章  远程登录

7-24中国科学技术大学 远程教育

7.7 安全的远程登录 SSH

基本概念

telnet 在网络上用明文传送口令和数据, 黑客非常容易截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点,是很容易受到“中间人”( man-in-the-middle )这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。 服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。

通过使用 SSH (Secure Shell ) ,可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了, 而且也能够防止 DNS 和 IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH 有很多功能,它既可以代替 telnet ,又可以为 ftp 、 pop 、甚至 ppp 提供一个安全的“通道”。

SSH由芬兰的一家公司开发。因为受版权和加密算法的限制,现在很多人都使用 OpenSSH 。 OpenSSH 是 SSH 的免费替代软件。

SSH 是由客户端和服务端的软件组成的,有两个不兼容的版本分别是: 1.x 和 2.x 。 用 SSH 2.x 的客户程序是不能连接到 SSH 1.x的服务程序上去的。 OpenSSH 2.x 同时支持 SSH 1.x 和 2.x 。

Page 25: TCP/IP 基本原理 第七章  远程登录

7-25中国科学技术大学 远程教育

SSH 的安全验证工作过程

从客户端来看, SSH 提供两种级别的安全验证。第一种级别(基于口令的安全验证)只要你知道自己帐号和

口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。

第二种级别(基于密匙的安全验证)需要依靠密匙,也就是必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果要连接到 SSH 服务器上,客户端软件就会向服务器发出请求,请求用自己的密匙进行安全验证。服务器收到请求之后, 先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致, 服务器就用公用密匙加密“质询”( challenge )并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。 但是整个登录的过程可能需要 10秒。

Page 26: TCP/IP 基本原理 第七章  远程登录

7-26中国科学技术大学 远程教育

本章习题

参见教师网页: http://staff.ustc.edu.cn/~leeyi