本發(fā)明屬于計算機網(wǎng)絡(luò)
技術(shù)領(lǐng)域:
,具體涉及到一種基于Telnet協(xié)議的會話解析方法及系統(tǒng)。
背景技術(shù):
:Telnet協(xié)議是TCP/IP族中的成員之一,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。Telnet協(xié)議能夠為用戶提供在本地計算機上完成遠(yuǎn)程工作的能力。在終端使用者的電腦上使用Telnet客戶端來連接到服務(wù)器。終端使用者可以在Telnet客戶端輸入命令,這些命令會在服務(wù)器上運行,就像直接在服務(wù)器的控制臺上輸入一樣。為了適應(yīng)異構(gòu)環(huán)境,Telnet協(xié)議定義了數(shù)據(jù)和命令在Internet上的傳輸方式,此定義為網(wǎng)絡(luò)虛擬端NVT。Telnet是常用的遠(yuǎn)程控制網(wǎng)頁服務(wù)器的方法。隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)安全問題也更加突出,在某些企業(yè)或者機構(gòu)的業(yè)務(wù)系統(tǒng)中,需要對用戶端的登陸和操作行為進行監(jiān)控和記錄,用于業(yè)務(wù)審計。對用于行為的監(jiān)控一般采用在服務(wù)端和客戶端之間加入中間人來實現(xiàn)。對Telnet協(xié)議而言,中間人截獲的均為明文數(shù)據(jù),對明文數(shù)據(jù)解析,并根據(jù)系統(tǒng)功能要求,完成密碼代填與命令黑名單功能,并生成解析日志。密碼代填可以根據(jù)主賬號等信息,實現(xiàn)代填密碼的功能,命令黑名單功能則可以實時阻斷一些預(yù)設(shè)的命令。明文解析后會生成解析日志,審計人員可以通過日志重現(xiàn)客戶端的所有操作行為。協(xié)議解析的效率是中間人處理非常重要的一步,而中間人的處理效率直接影響到客戶端和服務(wù)端的通信質(zhì)量,因此高效的協(xié)議解析是非常必須的。Telnet協(xié)議解析的關(guān)鍵在于還原用戶命令,目前,基于Telnet協(xié)議的解析較少,對于Telnet命令的還原,一般采用分析客戶端數(shù)據(jù)的方法,這種方法對用戶輸入為可打印字符時效果較好,但當(dāng)Telnet登錄和操作過程中出現(xiàn)控制鍵或快捷鍵時,如上翻、下翻、刪除時,較難還原正確的命令,另外一種方法則過濾服務(wù)端回顯數(shù)據(jù),利用回顯數(shù)據(jù)還原用戶命令,這種方法能夠以較高的準(zhǔn)確率還原用戶命令,但在沒有回顯數(shù)據(jù)的Telnet通信中則無能為力。技術(shù)實現(xiàn)要素:本發(fā)明的目的在于克服目前Telnet協(xié)議解析方法中存在的上述缺陷,提出了一種基于Telnet協(xié)議的會話解析方法,該方法將Telnet會話通信過程分為不同階段,構(gòu)造會話解析狀態(tài)轉(zhuǎn)移圖,對不同階段的數(shù)據(jù)包作差異化處理;提高了數(shù)據(jù)處理的速度和效率。為了實現(xiàn)上述目的,本發(fā)明提供一種基于Telnet協(xié)議的會話解析方法,所述方法包括:步驟101)接收基于Telnet協(xié)議會話的數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包特征與會話解析狀態(tài)轉(zhuǎn)移圖判定當(dāng)前會話所處階段;步驟102)根據(jù)會話所處的階段對數(shù)據(jù)包進行解析,獲取日志信息數(shù)據(jù);步驟103)將日志信息數(shù)據(jù)封裝到固定格式的日志中,生成解析日志。上述技術(shù)方案中,所述步驟103)之后還包括:步驟104)將生成的解析日志采用流式發(fā)送模式發(fā)送至存儲服務(wù)器;步驟105)所述存儲服務(wù)器收到日志信息數(shù)據(jù)后,根據(jù)日志類型和結(jié)束段信息拼湊出完整的日志并存儲在服務(wù)器中。上述技術(shù)方案中,所述步驟101)中的會話解析狀態(tài)轉(zhuǎn)移圖包括:協(xié)商階段,用戶名處理階段,密碼處理階段,請求輸入階段和請求完成階段;若會話解析狀態(tài)為初始狀態(tài),連接建立收到Telnet會話數(shù)據(jù)包后,置會話解析狀態(tài)為協(xié)商階段;若會話解析狀態(tài)為協(xié)商階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有登陸標(biāo)識,則完成相應(yīng)解析后將會話解析狀態(tài)置為用戶名處理階段;若會話解析狀態(tài)為用戶名處理階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有密碼輸入標(biāo)識,則完成相應(yīng)解析后將會話解析狀態(tài)置為密碼處理階段;若會話解析狀態(tài)為密碼處理階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有登陸標(biāo)識,則上次登陸失敗,重新進入用戶名處理階段,否則登陸成功,完成相應(yīng)解析后將會話解析狀態(tài)置為請求輸入階段;若會話解析狀態(tài)為請求輸入階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為客戶端發(fā)向服務(wù)端且含有請求輸入完成標(biāo)識,則完成相應(yīng)解析后將會話解析狀態(tài)置為請求完成階段,若會話解析狀態(tài)為請求完成階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為客戶端發(fā)向服務(wù)端,則完成相應(yīng)解析后將會話解析狀態(tài)置為請求輸入階段。上述技術(shù)方案中,所述步驟102)具體包括:步驟102-1)若會話解析狀態(tài)為用戶名處理階段,將客戶端發(fā)向服務(wù)端的數(shù)據(jù)或服務(wù)端發(fā)向客戶端的回顯數(shù)據(jù)進行緩存,用戶名處理完成后,利用緩存的數(shù)據(jù)還原用戶名;步驟102-2)若會話解析狀態(tài)為請求輸入階段,利用客戶端發(fā)向服務(wù)端的數(shù)據(jù)或者服務(wù)端向客戶端的回顯數(shù)據(jù)還原用戶命令。上述技術(shù)方案中,所述步驟102-1)之后還包含:步驟102-1-1)若會話解析狀態(tài)為密碼處理階段,而且系統(tǒng)功能要求密碼代填,則將TCP/IP四元組、會話ID、登陸主賬號和登陸用戶名信息進行處理,獲取處理后的返回值;若返回值表示仍需用戶自行輸入密碼,則由用戶自行輸入密碼;若返回值表示可以進行密碼代填,則返回密碼并將返回的密碼替換用戶輸入的密碼,發(fā)送至服務(wù)器;若返回值表示必須終止會話,則返回錯誤終止會話信息。上述技術(shù)方案中,所述步驟102-2)之后還包含:步驟102-2-1)若會話解析狀態(tài)為請求完成階段,而且系統(tǒng)功能要求命令黑名單,則將還原的用戶命令信息與系統(tǒng)設(shè)定的黑名單進行匹配;獲取返回值;若返回值表示命令符合要求,則該命令通過;若返回值表示該命令可以通過,但需要生成告警日志,則生成告警日志;若返回值表示阻斷命令,則將命令輸入完成標(biāo)識“\r\n”替換為“Ctrl+c”發(fā)送至服務(wù)端,不執(zhí)行該命令;若返回值,表示阻斷會話,則返回錯誤終止會話。上述技術(shù)方案中,所述步驟103)中的日志信息數(shù)據(jù)包括:TCP/IP四元組、流標(biāo)識、登陸會話的用戶名、登陸時間、登出時間、流標(biāo)識、操作標(biāo)識、客戶端請求的命令、命令開始時間、服務(wù)端返回客戶端的響應(yīng)數(shù)據(jù)和響應(yīng)結(jié)束時間,并將日志字段信息封裝成固定格式的日志;日志字段采用AVP編碼,AVP編碼由AttributeType值、AttributeLength值、Value值構(gòu)成,日志每一字段的AttributeType值固定,AttributeLength值為Value域的長度,Value為日志數(shù)據(jù);特別地,對于無法一次獲取的日志字段信息,采取AVP嵌套模式,即第一層Value類型仍為AVP封裝,第一層Value值為封裝的第二層AVP數(shù)據(jù),封裝的第二層AVP數(shù)據(jù)為日志字段數(shù)據(jù),但由于日志字段數(shù)據(jù)不完整,需加入分段號標(biāo)識當(dāng)前數(shù)據(jù),存儲服務(wù)器收到多條日志后,根據(jù)分段號進行排序拼接獲取完整日志字段。上述技術(shù)方案中,所述步驟104)中的流式發(fā)送模式為:當(dāng)解析到一條完整日志中的部分字段或一個完整日志字段的部分?jǐn)?shù)據(jù)時,向日志服務(wù)器發(fā)送解析日志信息,而無需緩存生成一條完整日志或完整字段再發(fā)送。本發(fā)明還提供了一種基于Telnet協(xié)議的會話解析系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)包接收模塊:用于接收基于Telnet協(xié)議會話的數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包特征與會話解析狀態(tài)轉(zhuǎn)移圖判定當(dāng)前會話所處階段;數(shù)據(jù)包解析模塊:用于根據(jù)會話所處的階段對數(shù)據(jù)包進行解析,獲取日志信息數(shù)據(jù);將日志信息數(shù)據(jù)發(fā)送到日志封裝模塊;所述日志封裝模塊,用于將日志信息數(shù)據(jù)封裝到固定格式的日志中,生成解析日志;日志發(fā)送模塊,用于將生成的解析日志采用流式發(fā)送模式發(fā)送至存儲服務(wù)器。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)勢在于:1、本發(fā)明將Telnet會話通信過程分為不同階段,構(gòu)造會話解析狀態(tài)轉(zhuǎn)移圖,對不同階段的數(shù)據(jù)包作差異化處理;提高了數(shù)據(jù)處理的速度和效率;2、本發(fā)明將Telnet命令的還原在會話解析狀態(tài)為請求輸入階段完成,可根據(jù)不同應(yīng)用場景,選擇性地利用客戶端數(shù)據(jù)或服務(wù)端回顯數(shù)據(jù),區(qū)分客戶端數(shù)據(jù)或服務(wù)端回顯數(shù)據(jù)依靠方向即可,無需復(fù)雜改動,可擴展性好;3、本發(fā)明的命令黑名單功能使得系統(tǒng)可以實時阻斷命令或阻斷會話,實現(xiàn)實時審計;日志傳輸采用流式發(fā)送的方式,無需緩存大量數(shù)據(jù),節(jié)約了內(nèi)存空間,提高了日志發(fā)送的效率。附圖說明圖1為本發(fā)明一個實施例的解析系統(tǒng)的各模塊的邏輯結(jié)構(gòu)示意圖;圖2為本發(fā)明一個實施例的應(yīng)用場景示意圖;圖3為本發(fā)明一個實施例的會話解析狀態(tài)轉(zhuǎn)移圖。具體實施方式下面結(jié)合附圖和具體實施例對本發(fā)明做進一步詳細(xì)的說明。如圖1和圖2所示,一種基于Telnet協(xié)議的會話解析方法,所述方法包括:步驟101)接收基于Telnet協(xié)議會話的數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包特征與會話解析狀態(tài)轉(zhuǎn)移圖判定當(dāng)前會話所處階段;如圖2所示,初始化時置Telnet會話狀態(tài)為初始階段,連接建立收到數(shù)據(jù)包后,則將會話解析狀態(tài)置為協(xié)商階段,Telnet的協(xié)商操作用以協(xié)商通信過程中細(xì)節(jié),格式如表1所示,其中IAC為保留碼,用以區(qū)分協(xié)商數(shù)據(jù)還是普通數(shù)據(jù),SB為子選項開 始,SE為子選項結(jié)束;若會話解析狀態(tài)為協(xié)商階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有登陸標(biāo)識(如“l(fā)ogin:”),則完成相應(yīng)解析后將會話解析狀態(tài)置為用戶名處理階段,否則不變;若會話解析狀態(tài)為用戶名處理階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有密碼輸入標(biāo)識(如“password:”),則完成相應(yīng)解析后將會話解析狀態(tài)置為密碼處理階段,否則不變;若會話解析狀態(tài)為密碼處理階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為服務(wù)端發(fā)向客戶端且含有登陸標(biāo)識(如“l(fā)ogin:”),則上次登陸失敗,重新進入用戶名處理階段,否則登陸成功,完成相應(yīng)解析后將會話解析狀態(tài)置為請求輸入階段;若會話處于請求輸入階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為客戶端發(fā)向服務(wù)端且含有請求輸入完成標(biāo)識(如“\r\n”或“Ctrl+c”),則完成相應(yīng)解析后將會話解析狀態(tài)置為請求完成階段,否則不變;若會話處于請求完成階段,收到數(shù)據(jù)包后,若數(shù)據(jù)包為客戶端發(fā)向服務(wù)端,則完成相應(yīng)解析后將會話解析狀態(tài)置為請求輸入階段,否則不變。若連接斷開,則該Telnet會話結(jié)束,解析完畢。表1Telnet選項協(xié)商命令格式IAC命令碼選項碼Telnet子選項協(xié)商命令格式IACSB選項碼參數(shù)IACSE步驟102)根據(jù)會話所處的階段對數(shù)據(jù)包進行解析,獲取日志信息數(shù)據(jù);若會話解析狀態(tài)為密碼處理階段,而且系統(tǒng)功能要求密碼代填,則將TCP/IP四元組、會話ID、登陸主賬號和登陸用戶名信息進行處理,獲取處理后的返回值;若返回值表示仍需用戶自行輸入密碼,則由用戶自行輸入密碼;若返回值表示可以進行密碼代填,則返回密碼并將返回的密碼替換用戶輸入的密碼,發(fā)送至服務(wù)器;若返回值表示必須終止會話,則返回錯誤終止會話信息;若會話解析狀態(tài)為用戶名處理階段,將客戶端發(fā)向服務(wù)端的數(shù)據(jù)或服務(wù)端發(fā)向客戶端的回顯數(shù)據(jù)進行緩存,用戶名處理完成后,利用緩存的數(shù)據(jù)還原用戶名;在會話解析狀態(tài)處于請求輸入階段時,根據(jù)方向區(qū)分客戶端數(shù)據(jù)與服務(wù)端發(fā)向客戶端的回顯數(shù)據(jù),該實施例中利用服務(wù)端向客戶端的回顯數(shù)據(jù)還原用戶命令;用戶請求輸入完成后,則將還原的用戶命令信息與系統(tǒng)設(shè)定的黑名單進行匹配;獲取返回值。例如,用戶輸入字符‘1’,服務(wù)端回顯數(shù)據(jù)‘l’,用戶輸入‘s’,服務(wù)端回 顯數(shù)據(jù)‘s’,用戶繼續(xù)輸入回車,此時命令輸入完畢,通過回顯數(shù)據(jù)還原用戶命令為“l(fā)s”,將該命令與系統(tǒng)設(shè)定的黑名單進行匹配,獲取返回值;若返回值為0,表示“l(fā)s”命令符合要求,命令通過;若返回值為1,表示“l(fā)s”命令可以通過,但需要生成告警日志;若返回值為2,表示“l(fā)s”命令需要被阻斷,則將用戶輸入回車后客戶端所產(chǎn)生的“\r\n”替換為0x03,服務(wù)端收到0x03后,則判斷為“Ctrl+c”,取消該命令的執(zhí)行,并繼續(xù)Telnet會話;若返回值為3,表示需要阻斷會話,則返回錯誤終止會話。在該實施例中,用戶可能會較多的借助各種功能鍵或快捷鍵,且數(shù)據(jù)傳輸中存在服務(wù)端的回顯數(shù)據(jù),因此選擇在請求輸入階段利用服務(wù)端的回顯數(shù)據(jù)來還原命令,還原的關(guān)鍵在于識別回顯數(shù)據(jù)中的轉(zhuǎn)義字符,該實施例的回顯數(shù)據(jù)中的轉(zhuǎn)義字符集見表2:表2操作字符功能07無意義,直接忽略左移08光標(biāo)向左移一位右移1b5b43光標(biāo)向右移一位刪除至行尾1b5b4b刪除當(dāng)前光標(biāo)至行尾的字符插入字符1b5bPn40在當(dāng)前光標(biāo)出插入Pn個空字符刪除字符1b5bPn50從當(dāng)前光標(biāo)開始向后刪除Pn個字符回顯數(shù)據(jù)中包括用戶輸入的數(shù)據(jù)與轉(zhuǎn)義字符,通過對轉(zhuǎn)義字符的解析能夠準(zhǔn)確的還原用戶命令。步驟103)獲得日志信息數(shù)據(jù),并將數(shù)據(jù)封裝到固定格式的日志中;在該實施例中,日志分為會話日志和操作日志,每一個基于Telnet協(xié)議的會話產(chǎn)生一條會話日志與多條操作日志。一條完整的會話日志和操作日志都包含多個字段,且部分字段獲取的時間會很晚,如會話日志中的登出時間,在會話結(jié)束時才能獲得,若按照普通方法生成完整日志后再發(fā)送,則需要緩存大量信息,且緩存的時間可能較長。本實施例中日志字段均采用AVP封裝,每個字段都有特定的TYPE值,收到該字段后,即可封裝發(fā)送給存儲服務(wù)器,特別地,對于無法一次獲取的的日志字段信息,如返回數(shù)據(jù)等,采取AVP嵌套模式,即第一層Value類型仍為AVP封裝,第一層Value值為封裝的第二層AVP數(shù)據(jù),封裝的第二層AVP數(shù)據(jù)為日志字段數(shù)據(jù),但 由于日志字段數(shù)據(jù)不完整,需加入分段號標(biāo)識當(dāng)前數(shù)據(jù),存儲服務(wù)器收到多條日志后,根據(jù)分段號進行排序拼接獲取完整日志字段。將第一層AVP封裝的TYPE值高位置1即表示該類型為AVP嵌套;表3是本發(fā)明的一個實例中會話日志AVP定義;表4是本發(fā)明的另一個實例中操作日志AVP定義;表3表4如表5所示,本實施例的日志格式為:會話標(biāo)識是網(wǎng)絡(luò)會話的唯一標(biāo)識;協(xié)議標(biāo)識區(qū)分不同協(xié)議;日志類型0x01表示會話日志,0x02表示操作日志;本段長度,是封裝在本段的網(wǎng)絡(luò)會話日志的長度;會話日志內(nèi)容,必須包含一個或多個完整的AVP封裝。當(dāng)總長度為12字節(jié)時,沒有載荷,代表一路網(wǎng)絡(luò)會話日志結(jié)束。表5步驟104)將生成的解析日志采用流式發(fā)送模式發(fā)送至存儲服務(wù)器;所述流式發(fā)送模式為:當(dāng)解析到一條完整日志中的部分字段或一個完整日志字段的部分?jǐn)?shù)據(jù)時,就向日志服務(wù)器發(fā)送解析日志信息,而無需緩存生成一條完整日志或完整字段再發(fā)送。該步驟不僅提高了日志發(fā)送的效率,還減少了緩存日志的開銷。步驟105)所述存儲服務(wù)器收到日志信息數(shù)據(jù)后,根據(jù)日志類型和結(jié)束段信息拼湊出完整的日志并存儲在服務(wù)器中。本發(fā)明還提供了一種基于Telnet協(xié)議的會話解析系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)包接收模塊:接收基于Telnet協(xié)議會話的數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包特征與會話解析狀態(tài)轉(zhuǎn)移圖判定當(dāng)前會話所處階段;數(shù)據(jù)包解析模塊:根據(jù)會話所處的階段對數(shù)據(jù)包進行解析,獲取日志信息數(shù)據(jù);將日志信息數(shù)據(jù)發(fā)送到日志封裝模塊;所述日志封裝模塊,用于將日志信息數(shù)據(jù)封裝到固定格式的日志中,生成解析日志;日志發(fā)送模塊,用于將生成的解析日志采用流式發(fā)送模式發(fā)送至存儲服務(wù)器。當(dāng)前第1頁1 2 3