APP下载

基于Linux远程控制shell方式的原理与实现

2012-02-20华龙

装备制造技术 2012年5期
关键词:服务端端口客户端

华龙

(天津机电职业技术学院,天津 300131)

1 远程控制技术简介

所谓的计算机远程控制,是指一台计算机通过互联网,局域网,电话线等手段,以某种方式连接到另外一台计算机,同时可以在本机上对另外的计算机进行操控,这样的方式就可以被称之为远程控制。

远程控制只是实现这类技术的一个统称,目前,能实现远程控制功能的技术和工具也非常的多,而且这些技术工具在用途和功能上也存在非常大的区别。根据用途和功能的不同,我们可以将相关的远程控制技术分为三类:Shell(命令行)方式,Desktop(桌面)方式,Non-OS(无盘工作站)方式。下面就简要介绍一下Shell方式的工作原理。

2 Shell方式工作原理解析

Shell更具体的来说应该是Remote Shell,从windows的角度来说我们可以理解为命令行方式。之所以叫shell方式是因为我沿用了linux系统的操作思路,对于linux来说图形桌面只是linux的一个应用程序,应该说linux对于用户的真正的界面就是shell,linux的所有功能都可以在shell中完成,掌握了shell就等于掌控了整个linux系统。

2.1 Shell方式的基本原理

从架构上讲,shell方式的工具都会分为客户端(Client)与服务端(Server),客户端与服务端通常会制定一套统一的传输协议(Protocol),封包(Package)方法以及加密(Encrypt)措施。说到加密,在早期的一些经典远程控制、传输软件中,协议的制定少有考虑安全问题,其内容大都是明文传送,但随着网络时代的来临,网络安全问题越来越严重,这些远程工具反而成为hacker侵入的惯用手段,所以安全传输是远程控制的头等大事。现在很多传统的工具通过一些加密、校验、安全通道等方法,来保证传输的安全性。下面从程序的角度来分析一下Shell的工作原理:

2.1.1 客户端要做的事情:

(1)通过Ip地址和端口(port)建立连接,通常都是基于TCP协议的套接字(socket)连接。

(2)登陆(login)服务端。这个环节看似简单但实际上这个环节通常是比较复杂的,因为该环节对整个远程控制的安全性有着非常关键的作用。

(3)建立了会话,才是实际意义上的协议通讯。一般来说,Shell方式中的消息号就是客户端与服务端程序通讯的语言。客户端的要求被分散到这些消息上传送给服务端,服务端解释这些消息告诉服务端系统作相应的操作,再将结果以消息的形式返回。

(4)最后注销(logout)服务端,撤销连接。

2.1.2 服务端要做的事情:

(1)侦听端口,准备建立连接。处于安全考虑,很多工具会通过自身的设定或者系统设定限制终端的IP地址。

(2)当服务端与客户端建立连接之后,服务端需要处理客户端的登陆请求。很多能够控制shell的远程工具,大都是要求客户端以服务端系统合法用户的身份登陆。这样便于控制其操作权限,而且也在一定程度上保证了系统的安全。Linux系统通常使用PAM(Pluggable Authentication Modules)方式来验证系统用户,服务端设定好认证要素,整个认证过程交给系统完成,也就是说客户端的登陆完全由系统控制,中间的远程控制工具只负责传递用户信息至服务端。

(3)在传输过程中,服务端的工作对于使用者是透明的,但是它所做的工作确是整个远程控制中最重要的,它解释客户端的消息,告诉系统,客户端想做的事情,并将运行结果打包返回。

(4)断开连接,继续侦听。

上面是从程序运行的角度罗列了客户端与服务端在整个远程控制过程中的运作细节。通常来说shell方式传递的信息只是一些文本信息,所以传输速度快,获取重要信息的效率也比较高。Shell方式具有代表性的工具有:Telnet,SSH,FTP,Samba,Rlogin等等。

由于我们的系统的命令行模式是采用的Telnet方式,以下就介绍一下telnet在Linux下的设置情况。

3 Telnet在Linux下的设置与实现

Telnet是非常方便实用的远程控制工具,而且是跨平台的,无论在WINDOWS或者是LINUX平台上都可以运行server服务程序或者是client程序。下面就来介绍有关Telnet协议的知识。

3.1 Telnet协议

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

(1)Telnet定义一个网络虚拟终端为远程的系统提供一个标准接口。客户机程序不 必详细了解远程的系统,他们只需构造使用标准界面的程序;

(2)Telnet包括一个允许客户端和服务端协商选项的机制,而且它还提供一组标准选项;

(3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。

我们要更好的理解设置,还要说说整个Telnet运作流程。数据信息被用户从本地键盘键入并通过操作系统传到客户端,客户端将其处理成网络虚拟终端NVT(Net Virtual Terminal)格式后经过网络传送到远程主机,远程操作系统将所接收数据再从NVT格式转换为远地系统需要的格式并传给服务端程序,并经服务程序再次处理后,返回到操作系统上的伪终端入口点,最后,操作系统将数据传送到用户正在运行的客户端程序,结果返显至客户端的屏幕上。这便是一次完整的输入过程。具体结构如图1所示。

图1 Telnet运作流程图

3.2 Telnet在Linux下的设置

基本上Telnet Client都会被预先安装到系统中,我们可以直接使用不需要设置什么,只要写对Server端的IP地址和端口就好了。

本节主要介绍的是Telnet Server端的安装与设置,通过这些介绍希望读者能够了解关于Linux下Telnet类似的服务程序的运行机制。

由于Telnet的明码传输问题,使得其安全性能似乎不能适应当前恶劣的网络环境。因此目前很多版本的Linux系统都不会预先安装Telnet Server,并且也不推荐开放Telnet Server的默认端口。当然这些与我要在本节介绍的内容无甚关系。下面简单讲讲Linux系统下Telnet Server的设置方法。

首先,我们要了解系统中是否装有Telnet,如下操作如图2所示。

图2 Telnet版本查询

可以看到了系统中安装了两个Telnet的RPM包,第一个是telnet client,系统一般都会默认安装的;第二个才是Telnet Server,如果系统里没有,那就找到Linux的安装盘安上就行了。其实这个安装包内容很简单,它会安装两个重要的文件和一些帮助文件,如图3。

图3 Telnet服务端安装文件

就是前两个文件telnet和in.telnetd。第一个文件是一个系统的配置文件,第二个才是Telnet Server的执行程序。在介绍这两个文件的作用之前,我需要先解释一下Linux系统启动服务程序的两种方式。

我们在接触类UNIX系统的时候,通常会遇到daemon这个东西,直译是精灵,守护神的意思,其实它就是操作系统中的守护程序,也就是我要介绍的系统服务。Linux系统下的daemon的运行有两种机制,stand alone和 super daemon。

A:Stand alone:是一种使服务程序独立运行的方式,当系统运行到某一runlevel级别的时候,发现有这样的服务注册,就会自动运行该服务。类似的服务有samba档案共享服务,xfs X字体服务,http Apache Web服务等等。

B:Super daemon:是藉由某一个 Super daemon 统一调度其它子服务程序的方式。早期版本的Linux使用的是inet作为super daemon,而现今的Linux版本已经选用xinet来作为super daemon。而xinet本身是一个stand alone方式的daemon服务。使用这种方式运作的服务有telnet,ftp,cup打印服务等。

Telnet服务是使用Super daemon方式运行的。基本工作过程是这样的,xinetd服务帮助侦听telnet设定的端口,Client端访问该端口的时候,xinetd服务去呼叫telnet服务程序,就是上面我们看到的in.telnetd这个程序,然后xinetd会将Client端的所有访问信息通过标准输出通道告诉in.telnetd程序,同样in.telnetd程序的信息也会通过标准输入通道告诉xinetd,从而告诉Client端。

了解telnet服务的工作原理,对我们的设置telnet这样的服务有指导性的作用。现在,我们应该知道了,要使telnet服务正常运行,首先要保证xinetd服务的正常运行,其次要告诉xinet关于telnet服务的相关设置以及telnet服务程序的安装位置。在上面我说到了telnet server的安装包会安装两个重要文件,telnet和in.telnetd。in.telnetd的作用已经说过了,下面来讲讲telnet这个配置文件。该文件需要被安装到xinet知道的一个目录中(Redhat发行的Linux通常是:/etc/xinetd.d),这样xinet就可以从中读取关于telnet服务的相关信息。下面就是这个配置文件中的选项(如图 4)。

图4 Telnet服务配置文件格式

从上面我们可以看到Telnet服务的配文件格式,xinet子服务的配置文件基本都是采用这种格式。

选项还有很多,这里就不多介绍了。了解了这些设置,对telnet服务的设置我们可以说是了如指掌了。最后要记得设置完这些选项,我们还要使它生效。理解了这种服务操作原理的朋友应该知道了,我们只要重新启动xinetd这个super daemon就可以了。

4 Telnet的安全性

Telnet是以明文传输信息的,包括用于登陆的用户信息。而互联网中,像sniffer网络嗅探器这种工具不计其数,而且很容易得到。我们在这种环境下使用Telnet,就像是在一个枪支泛滥治安很差的地区,提着百万现金当街而过,不被抢劫才奇怪了。随便看看网络上入侵远程计算器的文章,大都会介绍先探测目标机器是否开放telnet端口。即使通过其它方式进入远程主机,也会想方设法打开Telnet的服务端,只要让别人通过telnet成功登陆到你的主机,你的计算器对别人来说就无秘密可言了。所以不论是Windows系统还是linux系统对于telnet服务端的安装都是很慎重的。

Linux的Telnet服务安全设置主要是依靠对客户端主机地址的限制以及对root用户登陆的限制。当然这其实并不能像NTLM机制一样程度地保证安全。不过Linux世界出现了SSH之后可以说Telnet有了一个安全的替代品。

总的来说,Telnet在广域网中使用的越来越少了,但是在局域网中还在被广泛地应用着。所以使用Telnet是否安全,主要是看使用者的使用方法以及用途和目的。

[1]王 达.计算机网络远程控制[M].北京:清华大学出版社,2003.8-96.

[2]张 英王景新.网络安全基础[M].北京:中国电力出版社,2004.45-126.

[3]何牧泓.远程控制[M].重庆:重庆出版社,2002,77-123.

[4]张 雁.网络远程控制大师[M].重庆:重庆出版社,2002,15-160.

[5]崔彦锋,许小荣.VB网络与远程控制编程实例教程[J].重庆:北京希望电子出版社2003,24-156.

猜你喜欢

服务端端口客户端
一种有源二端口网络参数计算方法
一种端口故障的解决方案
多按键情况下,单片机端口不足的解决方法
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
新时期《移动Web服务端开发》课程教学改革的研究
卫星三端口DC-DC变换器技术综述
摸清黑客套路防范木马侵入