文/賴清楠 郭強 錢杰
VPN在高校中的廣泛使用,極大方便了高校師生校內資源、電子期刊、學術資源的獲取。用戶使用學校統一身份認證登錄VPN后,會隨機獲得校內VPN IP地址池的某一個IP,再去訪問資源的時候就和校內用戶沒有任何的差別。然而,VPN系統僅僅是記錄的用戶的登錄日志,并沒有用戶的訪問日志,VPN系統分配給下一個VPN用戶的IP地址可能是上一個VPN用戶使用過的IP地址,從而就很難知道下一個用戶登錄VPN之后,訪問了哪些資源。
如果用戶身份認證賬號泄露,被用來惡意訪問學術資源,將可能會導致VPN地址池中的IP被封禁,同時會給學校帶來負面的影響,下一個VPN用戶如果獲取到這個IP地址的話,將無法正常獲取所需的學術資源。因此分析VPN用戶的訪問行為,有助于VPN用戶的管理以及問題的發現與解決。
日志分析方面,本文主要收集的是VPN的登錄日志,從日志中提取出與用戶登錄相關的信息。武凌[1]設計了一個基于Hadoop的VPN訪問日志分析平臺,獲取VPN的日志,并且將VPN日志與流量進行關聯,根據不同情境的管理需求產生所需的軌跡追蹤報表,找出資源濫用者和潛在的安全威脅。系統雖然將VPN日志與流量進行關聯,但是應用場景在于公司等小型管理部門,數據流量并不大,并且用戶登錄VPN之后流量單一,分析較為簡單。韓瑞丁[2]將VPN日志從VPN系統中導出并且存入數據庫,進行查詢搜索,得到VPN每小時登錄次數排行、用戶登錄VPN排行等分析結果。僅僅分析了VPN的登錄日志,而沒有將登錄日志和流量數據進行關聯,進一步分析用戶的行為。Visbal A[3]使用VPN登錄日志從安全角度來分析,比如某個VPN賬號登錄失敗次數過多的話,說明這個VPN賬戶有可能受到攻擊。
用戶行為分析方面,本文將VPN登錄日志和流量數據,按照IP地址和時間進行匹配,分析VPN用戶在登錄之后的行為。李威[4]通過檢測、分析移動互聯網絡底層數據包,通過深度包分析獲取用戶訪問頁面并采用分類算法得到用戶行為特征,實現了移動互聯網用戶行為數據的采集、處理及用戶行為分析的仿真實驗,本文所關注的主要是VPN用戶的訪問行為,比如訪問數據庫資源,與一般用戶的行為有所區別。Zhao D[5]提出了一種基于分類的流量分析方法,用于檢測僵尸網絡的活動,在VPN用戶中,VPN賬號如果被盜用的話,VPN用戶的行為必然也會有所異常,因此也能夠間接找出VPN用戶中的安全隱患。Li Y[6]和Yang J[7]主要探索研究了移動用戶的用戶行為,前者比較了不同系統Android、iOS和Windows Phone在行為方面的不同和相似之處,后者從數據使用,移動特征和App情況進行分析, Liang S S[8]提出了一種基于不同地域的用戶行為分析方法。
用戶在登錄VPN的過程中,會有一臺負載均衡設備將用戶的請求分配到不同的服務器上,再通過VPN服務器接入交換機,進行校內或者校外資源的訪問,流程如圖1所示。

圖1 VPN用戶資源訪問
本文的數據主要包括兩部分,一部分是從VPN系統里面的VPN登錄日志,按照如下格式提取出需要的信息,用戶賬號,用戶IP地址,登錄后IP地址,登錄時間,退出時間。如下所示,登錄日志大約50M每天,本文收集一周的VPN登錄日志,每天存一個VPN登錄日志文件。
***12136**,***.**.111.182,***.**.112.71,2018-07-24 00:00:04,2018-07-24 00:00:28
另一部分是用tcpdump從校園網出口上抓取的流量數據包,提取出源IP,目的IP,目的端口,域名,路徑,包大小,并且加上數據包捕獲的時間,如下所示。流量日志大約1G每分鐘,每分鐘存一個流量文件。
2018-07-24 00:00:05,***.**.112.71,***.***.131.195,80,***.pku.edu.cn, /about/index.htm,120
VPN用戶登錄分析,從每日不同用戶數、最高同時在線用戶數、VPN使用時長、登錄失敗四個方面進行分析,前三個方面對于VPN服務器負載的調整、license的購買提供參考,登錄失敗行為分析,可以找出一些潛在的VPN賬號密碼泄露風險。
從每天的VPN日志中,提取去一天當中的VPN用戶列表,對列表進行去重,得到每日使用VPN的不同用戶數,圖2為從2018.7.9~2018.7.15每日用戶數情況,每日用戶數最高達到了將近2600,這對于服務器負載均衡的調整,有一定的參考價值。

圖2 每日VPN用戶數量
對于同時最高用戶數的計算,采用的是以秒為單位的時間窗口滑動的計算方法。算法過程如下:
1 basetime = 1531584000;
2 maxcount=0;
3 for s=0;s<86400;s++;
4遍歷所有VPN用戶
5 if 登錄時間>=basetime+s and 登出時間<basetime+s
6 當前在線用戶數++
7 if 當前在線用戶>maxcount
8maxcount = 當前在線用戶數
9 end
圖3為2018年7月9日~2018年7月15日之間最高同時在線用戶數,可以看出,每日最高同時在線用戶數在350左右,最高能達到近400,最低在250左右,圖4為2018年7月15日最高在線用戶數隨時間的變化趨勢,基本上從早上10點到晚上10點是使用VPN的高峰時間,與教師學生工作時間基本上保持一致,而且在這段時間內VPN用戶數量基本穩定在一個較高的水平。了解最高同時在線用戶數,可以為VPN服務器license的購買提供參考。

圖3 每日同時在線最高用戶數

圖4 最高同時在線用戶數變化趨勢
定義VPN使用時長為用戶登出VPN的時間減去登錄VPN的時間。如圖5所示為2018年7月10日中,用戶VPN使用時長情況分布,這里統計的是一次的使用時間,比如某個用戶退出VPN之后,再次連接VPN使用,則統計了2次。80%的用戶使用VPN的時間都在1個小時以內,極其少數的用戶使用VPN時間特別長,甚至超過10個小時,通過日志找到這部分用戶的ID,如表1所示。

圖5 用戶VPN使用時長分布

表1 使用時長前10用戶列表
除了用戶登錄成功的日志,還有一部分需要重點關注的是VPN的登錄失敗的日志,特別是認證失敗的情況,有可能是在嘗試破解用戶賬號的密碼。表2所示的是7月15日一天內登錄失敗次數前10的VPN賬號,大部分的失敗驗證都發生在晚上22:00~23:00之間,從登錄失敗的IP地址來看,屬于運營商動態分配的IP地址。表中最后一列表示,在嘗試登錄失敗之后,是否有登錄成功的日志,如果有的話則說明賬號極大可能密碼已經泄露,因此需要及時提醒用戶修改密碼,可以為VPN安全防護提供參考。
通過抓取校園網出口上的流量來分析用戶的行為,用戶在連接VPN之后,訪問的主要是學術資源。北京大學圖書館購買的數據庫列表(http://dbnav.lib.pku.edu.cn/),共 845個數據庫,從VPN流量中過濾出訪問這些數據庫的流量,2018年7月15日一共訪問了845個中的103個,訪問次數超過10次的有21個。中國知網訪問次數更是達到了150次,如表3所示,這對于圖書館數據庫的維護購買可以提供一定的參考。

表2 失敗登錄次數前10的賬號和IP

表3 數據庫訪問次數排名

表4 數據庫下行流量排名
用戶在訪問數據庫主要進行學術資源的檢索以及下載,進一步分析各個數據庫的流量大小。如表4所示為數據庫下行流量大小,可以看出,訪問次數多,但是相應的流量不一定大,下行流量可以一定程度反應用戶對各個數據庫的使用情況。
VPN方便了校外用戶對校內資源的訪問,但同時也造成了管理上的一些麻煩,用戶登錄VPN系統后,將從VPN地址池中隨機分配一個IP給用戶,當用戶退出VPN后,IP地址將釋放,VPN服務器只是記錄了用戶的登錄日志,登錄日志里面提供的信息有限,很難知道用戶登錄VPN之后,訪問了哪些網站,下載了哪些學術資源等等。因此將VPN登錄日志與流量行為,按照時間進行匹配,明確哪個用戶訪問了哪些資源,能夠給管理帶來很大方便。
登錄日志提供了用戶賬號,用戶IP地址,分配后的IP地址,登錄時間,退出時間??梢詮牧髁恐刑崛〉降氖?,源IP地址,目的IP地址,目的端口,域名,路徑,包的大小等信息。本文以時間和IP地址作為key來將兩者進行匹配,登錄日志中有兩個時間,登錄時間,退出時間,那么在登錄時間和退出時間范圍內,流量中源IP地址與登錄日志中分配后的IP地址相匹配的訪問,就是登錄日志中該用戶賬號產生的行為,具體算法如下:
1. for line in vpn_log:
2. for line in vpn_flow and flow_time>= vpn_login_time and flow_time<=vpn_logout_time:
3. if vpn_flow_sourceip = vpn_log_login_ip:
4. vpn_flow = vpn_flow + vpnaccount
5. end

表5 某賬號對外訪問情況
為每條流量加上用戶賬號標簽之后,就能夠輕松分析出VPN用戶的行為。以使用時長排名第2的賬號為例,通過分析流量,得到如表5所示,訪問域名數量157,但是卻并沒有訪問數據庫資源。
表6為該用戶訪問域名上行流量的排行,表7為訪問域名下行流量排行,這些域名當中有阿里巴巴、淘寶、百度、搜狐等,并沒有一些異常的域名。該賬號雖然連接VPN的時間比較長,但是并沒有下載任何的數據庫當中的論文,所訪問的域名也屬于正常域名,因此可以認為該VPN用戶行為并沒有異常。
對2018年7月15日用戶訪問數據庫行為進行整體分析,90%的用戶訪問數據庫數量在4個以下,訪問次數在6次以下。表8為用戶訪問數據庫數量排名,表9為用戶訪問數據庫次數排名,從數量和次數上看,最高的用戶訪問了20個不同數據庫,總共訪問了35次,這個數量還在正常范圍之內。用這種方式可以監測用戶訪問數據庫的行為,如果出現訪問次數過高、訪問數據庫數量過多,則該賬號可能出現異常。

表6 上行流量排行

表7 為訪問域名下行流量排行

表8 訪問數據庫數量排名

表9用戶訪問數據庫次數排名
本文對VPN用戶的訪問行為進行分析,獲取了VPN用戶的登錄日志,以及在出口網關處抓取了相應的流量。取得的主要成果如下:
1.獲取VPN用戶的登錄日志,從每日不同用戶數、最高同時在線用戶數、VPN使用時長、登錄失敗等方面進行分析,結果可以為VPN服務器負載調整,VPN license購買提供參考,還可以找出一些可能被盜取的VPN賬號。
2.從校園網出口的流量中,統計了VPN用戶對學術資源的訪問情況,為圖書館學術資源的維護購買提供一定的參考。
3.將VPN登錄日志和流量按照時間和IP地址進行匹配,掌握每個用戶登錄VPN之后的訪問行為,分析了某一天VPN使用時長最長的用戶,以及整體VPN用戶對學術資源的訪問情況,可以發現一些潛在的異常VPN賬號。
由于從校園網出口抓取的流量,僅僅是有VPN用戶訪問校外資源的情況,并沒有對校內資源的訪問進行分析。下一步,我們將對VPN賬號的訪問分析,做成常規化的系統,對VPN用戶的行為進行監測,如果有異常則及時提醒管理員進行處理。