作者:陳啟煌 / 臺灣大學計算機及資訊網路中心程式設計組程式設計師
為了防止疫情的擴散,各公司行號、公家機關開始WFH,但在家工作難免需要遠端登入辦公室的電腦,開啟遠端桌面會不會不安全?會不會有駭客登入而不自知?
前言
為了在家工作的需要,辦公室的電腦可能需要開啟遠端桌面功能,或設置跳板機連到工作區域內網。這些電腦會不會因為防堵防疫的破口而造成開啟了資安的破口? 在疫情嚴峻時很多應急的措施都存在一些資安疑慮,不過看起來人們還是比較怕實體的病毒。這些雖有資安疑慮但是最後還是不得不採行。其中一項是遠端桌面:遠端桌面連線很方便也很危險,為了小心使用這項功能,限制防火牆的IP存取設定、通訊埠的更換、特定帳號的改名、密碼強度的提升、錯誤密碼的鎖定機制、存取紀錄的檢核等等資安相關措施都一再的提醒同仁注意。但是還是覺得有點害怕,會不會還是不安全?會不會有駭客登入而不自知?
最佳的防範是建置雙因子認證(TFA: Two-factor authentication),多一道認證的密碼保護防止其他人得知帳密後登入;不過這需要更動個人電腦的設定,且短期內自行建置的難度頗高。退而求其次;如果有人遠端登入我的電腦,馬上我會收到通知警示,這樣至少可以確定是否有人曾透過遠端桌面使用電腦。在確定有效性跟可行性後,接下來就是程式師的工作,建置遠端登入警示系統。
這個警示系統分成三部分,第一個部分是使用者電腦的代理程式(Security Agent);其次是通報模組,事件發生後通知使用者警示的發送,用來檢視遠端桌面的事件;最後為警示系統的使用者介面,讓使用者設定通知管道及查詢登入紀錄。
代理程式(Security Agent)
因為要安裝在使用者的電腦上,為了消弭使用者的疑慮,最好是使用script語言讓使用者可以清楚看到程式碼會做什麼事,確認是否是木馬之類的惡意程式?這個程式最主要的目標是偵測到遠端登入的事件,主動觸發程式通知通報模組進行通報。透過網路上的豐富資源找到林宏文先生[1]所撰寫的文章Windows 監控遠端桌面登入發郵件通知一文。透過文章的介紹可以一步一步手動建置遠端桌面通知;雖不失為一個讓使用者自行設置的方法;不過程序還是太繁瑣。最後決定使用windows工作排程器(schtasks),將先設定好的排程匯出程XML檔案。透過指令自動新增排程工作。搞定了探測器,再來是撰寫呼叫通報模組的script。很簡單的使用了vbscript,利用microsoft.xmlhttp元件,透過SSL 加密通道呼叫通報模組的API,進行後續通報。為了防止有人濫用寄發不實通報,傳輸的內容需有個人ID和一組驗證碼。這個設定檔可以從警示系統的使用者介面登入後下載。
通報模組
通報模組的功能就是透過預設的管道傳送通知給使用者,除了警示系統的紀錄外,電子郵件是最通用的管道,另外簡訊和一些行動通訊的app也是好選擇。雖然簡訊在校務系統有現成的程式可以使用,不過因為需要發送費用,所以不在這個系統考慮範圍內。考量這幾年LINE的使用率很高,此系統決定介接LINE用來發送訊息給使用者。因為會用到LINE Message API[2]中的push 和reply功能,有一定的免費額度,之後視使用情形付費或變更其他免費管道。警示系統串接校務系統,所以可以知道使用者的Email,寄發Email通知並無技術難度。串接Line需要先申請官方帳號,設定聊天機器人(Bot),啟用自動回覆,取得Channel access token,再撰寫程式介接LINE Message API。通知其他LINE使用者需要加入好友,取得一組唯一的序號。因為校務系統過去並無收集使用者的LINE序號,所以需要在警示系統介面的設定程序多一道綁定LINE帳號的程序。透過LINE掃描設定介面QRcode,會自動跳轉至iNTU官方帳號,如之前未加入好友會提示加入好友,且通訊欄已打好例如@bind30840字樣,按送出,系統自動執行綁定程序,並提示所綁定的校內ID。如需解除綁定,可以在LINE介面輸入@解除綁定。系統會自動解除綁定。警示系統設定介面亦有解除綁定的連結可以點選,點選後會解除LINE帳號綁定。
警示系統介面
為了方面使用者,警示介面採iNTU一貫的設計畫面並整合至iNTU平台。功能如下圖所示:分別為我的通知、登入紀錄、通知設定、程式下載等。需要通過單一認證後方能使用。第一個動作要設定通知,目前開放Email和LINE(實驗性質,視費用多寡決定是否採用),Email和LINE皆一天只通知10次,以免造成濫用,所有紀錄均可以亦在系統的登入紀錄查詢。設定好通知管道後,需下載程式,程式目前打包成一個壓縮檔,下載後解壓縮後放入c:\intu\目錄;執行 install.bat 後開始安裝,程式會自動設定排程啟用監控Windows Terminal Services RemoteConnection Manager Event ID 1149,攔截遠端登入事件。如需驗證安裝結果可至Windows工作排程器,檢視是否有一個工作是RemoteLoginNotice排程,如果沒有可以檢查install.bat執行時是否有錯誤。
在執行rlogininfo.vbs之前需先下載設定檔,參考下圖填入電腦名稱,再按下載設定檔,設定檔名為setting.txt,請將此檔轉存到c:\intu\目錄下。
如需測試設定檔是否成功,可執行 rlogininfo.vbs,系統會觸發通知。
安裝設定完成後,一旦設定監控的電腦有遠端桌面登入,會依照設定的管道寄送Email and/or 發送LINE 訊息。希望透過這樣的警示機制能幫忙守護個人電腦的使用安全性,特別是需要遠端作業的使用者,才能在疫情中安心的遠端工作。
參考資料
- 林宏文(2017-12-06),Windows監控遠端桌面登入發郵件通知,取自: https://it867.wordpress.com/2017/12/06/windows-監控遠端桌面登入發郵件通知/
- 楊超霆, 林建興, 鍾皓軒(2019), “打造股市小秘書:聊天機器人x網路爬蟲x NoSQLxPython整合應用實務”,台北市, 碁峰資訊股份有限公司