華龍
(天津機電職業技術學院,天津 300131)
所謂的計算機遠程控制,是指一臺計算機通過互聯網,局域網,電話線等手段,以某種方式連接到另外一臺計算機,同時可以在本機上對另外的計算機進行操控,這樣的方式就可以被稱之為遠程控制。
遠程控制只是實現這類技術的一個統稱,目前,能實現遠程控制功能的技術和工具也非常的多,而且這些技術工具在用途和功能上也存在非常大的區別。根據用途和功能的不同,我們可以將相關的遠程控制技術分為三類:Shell(命令行)方式,Desktop(桌面)方式,Non-OS(無盤工作站)方式。下面就簡要介紹一下Shell方式的工作原理。
Shell更具體的來說應該是Remote Shell,從windows的角度來說我們可以理解為命令行方式。之所以叫shell方式是因為我沿用了linux系統的操作思路,對于linux來說圖形桌面只是linux的一個應用程序,應該說linux對于用戶的真正的界面就是shell,linux的所有功能都可以在shell中完成,掌握了shell就等于掌控了整個linux系統。
從架構上講,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下的設置情況。
Telnet是非常方便實用的遠程控制工具,而且是跨平臺的,無論在WINDOWS或者是LINUX平臺上都可以運行server服務程序或者是client程序。下面就來介紹有關Telnet協議的知識。
Telnet協議是TCP/IP協議族中的一員,是Internet遠程控制服務的標準協議。應用Telnet協議能夠把本地用戶所使用的計算器變成遠程主機系統的一個終端。它提供了三種基本服務:
(1)Telnet定義一個網絡虛擬終端為遠程的系統提供一個標準接口。客戶機程序不 必詳細了解遠程的系統,他們只需構造使用標準界面的程序;
(2)Telnet包括一個允許客戶端和服務端協商選項的機制,而且它還提供一組標準選項;
(3)Telnet對稱處理連接的兩端,即Telnet不強迫客戶機從鍵盤輸入,也不強迫客戶機在屏幕上顯示輸出。
我們要更好的理解設置,還要說說整個Telnet運作流程。數據信息被用戶從本地鍵盤鍵入并通過操作系統傳到客戶端,客戶端將其處理成網絡虛擬終端NVT(Net Virtual Terminal)格式后經過網絡傳送到遠程主機,遠程操作系統將所接收數據再從NVT格式轉換為遠地系統需要的格式并傳給服務端程序,并經服務程序再次處理后,返回到操作系統上的偽終端入口點,最后,操作系統將數據傳送到用戶正在運行的客戶端程序,結果返顯至客戶端的屏幕上。這便是一次完整的輸入過程。具體結構如圖1所示。

圖1 Telnet運作流程圖
基本上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這樣的服務有指導性的作用?,F在,我們應該知道了,要使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就可以了。
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.