劉興民 李納 張煥蛟
(臨沂市中心醫(yī)院信息科 山東省臨沂市 276400)
隨著信息化的發(fā)展,醫(yī)療機(jī)構(gòu)基本都運(yùn)行著內(nèi)部和外部兩套網(wǎng)絡(luò),并且通過網(wǎng)閘等安全設(shè)備進(jìn)行物理網(wǎng)絡(luò)隔離,實(shí)施網(wǎng)絡(luò)安全[1]。內(nèi)部網(wǎng)絡(luò)用于醫(yī)院內(nèi)部業(yè)務(wù)系統(tǒng)運(yùn)行;而外部網(wǎng)絡(luò),主要是指的網(wǎng)絡(luò)架構(gòu)中的DMZ區(qū)(俗稱隔離區(qū)或非軍事化區(qū)),一般運(yùn)行用于提供公網(wǎng)服務(wù)的服務(wù)器,如醫(yī)院官網(wǎng)、患者手機(jī)支付、門診就診預(yù)約等服務(wù)。物理隔離的內(nèi)外網(wǎng)保障了內(nèi)部網(wǎng)絡(luò)的安全性的同時(shí),卻帶來了用戶內(nèi)外網(wǎng)文件交互不便的問題。為了解決這個(gè)問題,最簡單的方式,用U盤來手工進(jìn)行內(nèi)外網(wǎng)文件的轉(zhuǎn)發(fā)、交互。一般情況下,醫(yī)院的內(nèi)網(wǎng)主機(jī)都是封禁USB接口的,醫(yī)院職工無法直接在內(nèi)網(wǎng)主機(jī)插入U(xiǎn)盤讀寫文件,當(dāng)有需要轉(zhuǎn)發(fā)文件時(shí),就需要醫(yī)院信息部門的協(xié)助。信息部門在醫(yī)院內(nèi)部網(wǎng)絡(luò),通過OA(協(xié)同辦公系統(tǒng)或辦公自動(dòng)化)或是其他方式,接收到醫(yī)院其他部門發(fā)送的文件,再拷貝到U盤,插到外網(wǎng)電腦,通過微信、QQ或是郵箱等方式發(fā)送文件至接收人。當(dāng)有文件需要轉(zhuǎn)入到醫(yī)院內(nèi)網(wǎng)時(shí),醫(yī)院職工發(fā)送到信息部門工作人員微信、QQ或是郵箱等通訊工具,工作忙時(shí),其他科室人員需要電話通知信息部門工作人員,手工下載并通過U盤轉(zhuǎn)入到醫(yī)院內(nèi)網(wǎng),并通過OA或是網(wǎng)絡(luò)文件共享到工作人員電腦。此過程繁雜、效率低下,給信息部門人員和醫(yī)院其他科室?guī)順O大的不便。
為了解決手工實(shí)現(xiàn)內(nèi)、外網(wǎng)文件交互的問題,通??梢圆捎靡韵碌姆桨福?/p>
通過網(wǎng)閘設(shè)備同步內(nèi)網(wǎng)協(xié)同辦公平臺(tái)數(shù)據(jù)庫和數(shù)據(jù)文件,到非軍事化區(qū)(DMZ),同時(shí)在DMZ區(qū)運(yùn)行和內(nèi)網(wǎng)相同的OA(協(xié)同辦公)軟件服務(wù),從而實(shí)現(xiàn)內(nèi)網(wǎng)和外網(wǎng)的服務(wù)訪問[3]。OA大都有類似郵件的功能模塊如“傳閱”,當(dāng)用戶把文件上傳到內(nèi)網(wǎng)OA系統(tǒng)時(shí),網(wǎng)閘設(shè)備會(huì)自動(dòng)把文件同步到外網(wǎng)的OA系統(tǒng)相同目錄,用戶在公網(wǎng)訪問OA系統(tǒng)時(shí),自然可以訪問到文件。反之,從外網(wǎng)上傳文件到OA系統(tǒng),內(nèi)網(wǎng)也能訪問。從而實(shí)現(xiàn)內(nèi)外網(wǎng)的文件轉(zhuǎn)發(fā)。這種方式,用戶使用簡單,內(nèi)外網(wǎng)使用同一套系統(tǒng);系統(tǒng)維護(hù)人員,部署方便,維護(hù)簡單。但是,這卻帶來一定的安全隱患,內(nèi)網(wǎng)的OA系統(tǒng)暴露在公網(wǎng),增加了受到網(wǎng)絡(luò)攻擊的可能性,給醫(yī)院的網(wǎng)絡(luò)安全帶來隱患;在公網(wǎng),用戶可以簡單的上傳文件并通過網(wǎng)閘同步文件到內(nèi)網(wǎng)OA系統(tǒng),易把攜帶病毒的文件傳入內(nèi)網(wǎng)。
采用自建企業(yè)云盤或是商業(yè)企業(yè)云盤,經(jīng)過網(wǎng)閘、防火墻的策略配置,使得內(nèi)網(wǎng)和外網(wǎng)都能訪問企業(yè)網(wǎng)盤[2]。用戶通過賬號(hào)登錄,上傳文件到云盤,因服務(wù)通過網(wǎng)閘、防火墻打通,自然內(nèi)外網(wǎng)都能訪問。這種方式,對(duì)用戶友好,方便、快捷。但是,醫(yī)院需要額外增加硬件、軟件的費(fèi)用;對(duì)于醫(yī)院職工,又增加了一套信息系統(tǒng),同時(shí),需要多記憶一套用戶名、密碼。用戶在公網(wǎng)可以訪問企業(yè)網(wǎng)盤服務(wù),這增加了受到網(wǎng)絡(luò)攻擊的可能性,給網(wǎng)絡(luò)安全帶來隱患;同時(shí),企業(yè)云盤可能有自帶的文件殺毒功能,但是其病毒庫更新及殺毒能力讓人擔(dān)心,也給網(wǎng)絡(luò)安全帶來挑戰(zhàn)。
在內(nèi)網(wǎng)或DMZ區(qū)部署郵件服務(wù)器,并通過網(wǎng)閘、防火墻等安全設(shè)備的配置后,用戶能同時(shí)在內(nèi)、外網(wǎng)訪問郵件服務(wù)器,以達(dá)到文件在內(nèi)外網(wǎng)之間傳輸?shù)哪康?。電子郵件是企業(yè)溝通的主要的工具,也是黑客攻擊、病毒、垃圾郵件等的主要攻擊對(duì)象[4],當(dāng)郵件服務(wù)暴露到公網(wǎng)后,會(huì)給網(wǎng)絡(luò)安全帶來巨大壓力,受到網(wǎng)絡(luò)攻擊的可能性也會(huì)增加;這種方式對(duì)于醫(yī)院職工來說,增加了一套系統(tǒng),需要記憶一套醫(yī)院郵箱賬戶信息;醫(yī)院也需要購置相關(guān)的服務(wù)器及存儲(chǔ)設(shè)備等,需要投入一定的資金。
通過對(duì)比上述不同解決方案,其各有優(yōu)缺點(diǎn),但是共同的缺點(diǎn)都是依賴網(wǎng)閘直接打通醫(yī)院內(nèi)網(wǎng)和外網(wǎng),相關(guān)系統(tǒng)服務(wù)暴露到公網(wǎng),帶來方便的同時(shí),增加了受到網(wǎng)絡(luò)攻擊的可能性,給醫(yī)院網(wǎng)絡(luò)安全帶來壓力。因此,滿足醫(yī)院內(nèi)外網(wǎng)文件轉(zhuǎn)發(fā)的需求,同時(shí)為了保障網(wǎng)絡(luò)安全不受到攻擊,提出并設(shè)計(jì)了一種基于公網(wǎng)郵箱和OA系統(tǒng)的內(nèi)外網(wǎng)文件轉(zhuǎn)發(fā)、交互的方案。
本系統(tǒng)分為兩大子系統(tǒng):外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng)子系統(tǒng)和內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)子系統(tǒng)。
為了保障文件轉(zhuǎn)入流程的網(wǎng)絡(luò)信息安全,采用內(nèi)網(wǎng)主動(dòng)發(fā)起連接方式,外網(wǎng)無法訪問到內(nèi)網(wǎng)的程序服務(wù)。訪問公網(wǎng)郵箱服務(wù)器時(shí),可以有兩種方式:
方式一,內(nèi)外網(wǎng)完全物理隔離,沒有防火墻和網(wǎng)閘等安全設(shè)備的醫(yī)院,可以在內(nèi)網(wǎng)與外網(wǎng)邊界處部署一個(gè)代理服務(wù)器,如CCProxy軟件。但是,需要注意的是要按照網(wǎng)絡(luò)安全的要求,配置服務(wù)器主機(jī)防火墻、安裝殺毒軟件、及時(shí)更新系統(tǒng)補(bǔ)丁、配置上網(wǎng)代理的安全賬戶、IP限制等安全措施[5][6]。處于內(nèi)網(wǎng)的文件轉(zhuǎn)發(fā)程序,通過此代理登錄公網(wǎng)郵箱,下載收到的郵件內(nèi)容。
方式二,有相關(guān)網(wǎng)絡(luò)安全設(shè)備的醫(yī)院,可以通過防火墻、網(wǎng)閘等把公網(wǎng)郵箱的IMAP、SMTP網(wǎng)絡(luò)地址映射到醫(yī)院的內(nèi)部網(wǎng)絡(luò),內(nèi)網(wǎng)的文件轉(zhuǎn)發(fā)程序通過映射的內(nèi)網(wǎng)地址訪問公網(wǎng)郵件服務(wù)器。這兩種網(wǎng)絡(luò)訪問方式都可以盡可能的隔離醫(yī)院內(nèi)網(wǎng),避免外部公網(wǎng)能訪問醫(yī)院內(nèi)部局域網(wǎng)的操作,保障了醫(yī)院內(nèi)部網(wǎng)絡(luò)的安全。
由于我院有網(wǎng)閘、防火墻等網(wǎng)絡(luò)安全設(shè)備,因此,選擇的是第二種方式。
為了實(shí)現(xiàn)外網(wǎng)文件轉(zhuǎn)發(fā)到內(nèi)部OA,需要申請(qǐng)一個(gè)公網(wǎng)郵箱,并開通SMTP和IMAP服務(wù),即此郵箱能通過第三方客戶端訪問。
文件轉(zhuǎn)入到內(nèi)網(wǎng)OA系統(tǒng)的具體流程步驟如下:
(1)用戶向系統(tǒng)設(shè)定郵箱發(fā)送帶有需轉(zhuǎn)入文件的郵件,并在主題中填寫接收人的OA系統(tǒng)賬號(hào)。需要注意的是,目前系統(tǒng)只識(shí)別普通附件,當(dāng)作為超大附件時(shí)無法成功轉(zhuǎn)入文件。
(2)內(nèi)網(wǎng)轉(zhuǎn)發(fā)系統(tǒng),定時(shí)訪問系統(tǒng)設(shè)定郵箱,下載所有未讀郵件及其附件,并寫入到本地郵件數(shù)據(jù)庫。郵件下載模塊流程如圖1所示。
圖1:郵件下載模塊
(3)每一封郵件下載完成后,把郵件服務(wù)器端的郵件標(biāo)記為已讀,并調(diào)用本地服務(wù)器的殺毒軟件模塊對(duì)下載的文件進(jìn)行殺毒。
(4)異步調(diào)用郵件轉(zhuǎn)入模塊,把郵件轉(zhuǎn)入到OA系統(tǒng)內(nèi),在進(jìn)行轉(zhuǎn)入前會(huì)調(diào)用WinRAR壓縮包管理軟件對(duì)相關(guān)文件進(jìn)行壓縮,再把壓縮后的文件轉(zhuǎn)入OA系統(tǒng)內(nèi),并向OA相關(guān)接收人賬戶發(fā)送“傳閱消息”。郵件轉(zhuǎn)入模塊流程如圖2。
圖2:郵件轉(zhuǎn)入模塊
(5)郵件轉(zhuǎn)入結(jié)束。
在用戶整個(gè)文件轉(zhuǎn)入過程中,待轉(zhuǎn)入內(nèi)網(wǎng)的文件,被執(zhí)行了3次殺毒操作。第一次殺毒,用戶發(fā)送郵件,上傳文件到個(gè)人郵箱時(shí),公網(wǎng)郵箱服務(wù)提供商對(duì)其進(jìn)行了殺毒操作;第二次殺毒,特定郵件服務(wù)提供商,收到用戶發(fā)送過來的郵件后又對(duì)用戶的文件進(jìn)行了殺毒操作;第三次殺毒,郵件被下載到本地后,再次調(diào)用了殺毒軟件模塊執(zhí)行了殺毒操作。因此,在這個(gè)過程當(dāng)中盡最大努力的保障了文件的安全。
為了防止用戶惡意轉(zhuǎn)入文件,撐爆內(nèi)網(wǎng)OA服務(wù)器存儲(chǔ)資源,轉(zhuǎn)發(fā)系統(tǒng)會(huì)識(shí)別接收人賬號(hào),并記錄每日的轉(zhuǎn)入次數(shù),對(duì)OA的接收賬戶進(jìn)行了每日可接收轉(zhuǎn)發(fā)文件的次數(shù)限制。
為了減輕文件轉(zhuǎn)發(fā)系統(tǒng)的本地郵件庫的壓力,系統(tǒng)會(huì)定時(shí)掃描本地郵件數(shù)據(jù)庫,定時(shí)刪除不符合轉(zhuǎn)入規(guī)則的郵件附件(如主題中不是合法的OA賬戶),刪除多次轉(zhuǎn)入失敗的郵件附件,刪除轉(zhuǎn)入成功特定時(shí)間(目前設(shè)定的是一個(gè)月)之后的郵件附件。雖然,轉(zhuǎn)發(fā)系統(tǒng)進(jìn)行了垃圾郵件的清理,但是不影響文件轉(zhuǎn)入過程的溯源。轉(zhuǎn)發(fā)系統(tǒng)的特定郵箱中保存有完整的郵件記錄,轉(zhuǎn)發(fā)系統(tǒng)的本地?cái)?shù)據(jù)庫中保存有轉(zhuǎn)入的過程記錄;OA系統(tǒng)中保存有接收文件的轉(zhuǎn)入信息等。
在OA系統(tǒng)中,設(shè)計(jì)一個(gè)申請(qǐng)轉(zhuǎn)出文件的處理流程。當(dāng)用戶需要向外轉(zhuǎn)發(fā)文件時(shí),需要在信息采集表中填寫接收郵箱,及在表格中附加附件。轉(zhuǎn)發(fā)系統(tǒng)會(huì)定時(shí)訪問數(shù)據(jù)庫,當(dāng)有新的申請(qǐng)時(shí),程序通過調(diào)用SMTP協(xié)議模塊,把附件發(fā)送到接收人郵箱。
內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)目前偶爾會(huì)報(bào)“User Over flow”的故障。經(jīng)查,公網(wǎng)郵箱的郵件服務(wù)商一般會(huì)對(duì)第三方客戶端每日發(fā)送次數(shù)進(jìn)行限制。為了提高每日發(fā)送郵箱數(shù),可以使用企業(yè)級(jí)的公網(wǎng)郵箱服務(wù),提高每日可發(fā)送郵件次數(shù),當(dāng)然,這會(huì)增加成本。該系統(tǒng),為了解決此問題,采用了一個(gè)簡單的策略,增加多個(gè)備用郵箱。當(dāng)主郵箱發(fā)送失敗時(shí),會(huì)再一次嘗試使用其他備用公網(wǎng)郵箱進(jìn)行發(fā)送,當(dāng)全部備用郵箱都發(fā)送失敗后,即結(jié)束此郵件的發(fā)送,更新轉(zhuǎn)出申請(qǐng)次數(shù)+1,隨后,進(jìn)入下一循環(huán)。當(dāng)發(fā)送次數(shù)超過閾值時(shí)如3次,不再嘗試發(fā)送。
該系統(tǒng)采用python開發(fā)語言,以MongoDB作為本地郵件存儲(chǔ)數(shù)據(jù)庫,以pycharm作為程序集成開發(fā)平臺(tái)。由于當(dāng)前我院OA運(yùn)行在Windows操作系統(tǒng)環(huán)境下,為了便于通過網(wǎng)絡(luò)訪問OA的文件,該系統(tǒng)也運(yùn)行在Windows操作系統(tǒng)下。
為了實(shí)現(xiàn)異步調(diào)用郵件轉(zhuǎn)入模塊,采用Celery分布式任務(wù)隊(duì)列,以及高性能的K-V數(shù)據(jù)庫Redis作為消息中間件。需要注意的是在Windows平臺(tái)容易出現(xiàn)Celery版本的兼容問題,本系統(tǒng)采用的Celery版本號(hào)為3.1.26.post2,redis版本號(hào)為2.10.6,celery-withredis版本號(hào)為3.0。
執(zhí)行查詢轉(zhuǎn)文件申請(qǐng)或是向OA數(shù)據(jù)庫寫入用戶轉(zhuǎn)入文件記錄操作時(shí),采用SQLAlchemy ORM框架去訪問OA數(shù)據(jù)庫。
訪問郵箱時(shí)采用的是imap-tools模塊,進(jìn)行下載郵件及附件;發(fā)送郵件采用smtplib模塊,實(shí)現(xiàn)從內(nèi)網(wǎng)發(fā)送郵件到外網(wǎng)郵箱。
該系統(tǒng)采用Windows任務(wù)計(jì)劃的方式定時(shí)執(zhí)行外網(wǎng)文件轉(zhuǎn)入內(nèi)網(wǎng)OA和內(nèi)網(wǎng)OA文件轉(zhuǎn)出外網(wǎng)郵箱的操作。當(dāng)前設(shè)定的轉(zhuǎn)入任務(wù)計(jì)劃周期每2分鐘執(zhí)行一次,轉(zhuǎn)出任務(wù)計(jì)劃周期為每1分鐘執(zhí)行一次。
該測試過程分為兩個(gè)部分:外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng)和內(nèi)網(wǎng)轉(zhuǎn)外網(wǎng)。
首先,向系統(tǒng)設(shè)定郵箱發(fā)送測試郵件,主題為“ceshi”,即內(nèi)網(wǎng)的OA用戶賬號(hào),并添加普通附件“測試.txt”。其次,等待幾分鐘后,登錄內(nèi)網(wǎng)OA系統(tǒng),即會(huì)收到OA系統(tǒng)的內(nèi)部消息提醒,打開傳閱功能模塊,即可看到轉(zhuǎn)入的文件如圖3。
圖3:OA傳閱模塊中收到信息科賬號(hào)發(fā)送的傳閱信息
因此,經(jīng)過測試外網(wǎng)文件能成功轉(zhuǎn)入到OA系統(tǒng)接收人賬戶,成功實(shí)現(xiàn)文件的外網(wǎng)轉(zhuǎn)內(nèi)網(wǎng)功能。
在OA系統(tǒng)中填寫申請(qǐng)表,并添加附件。提交申請(qǐng)后,等待幾分鐘,登錄申請(qǐng)表中的郵箱服務(wù)器,即可查看到從內(nèi)網(wǎng)發(fā)送出來的文件。需要注意的是,為了提高發(fā)送效率,默認(rèn)對(duì)文件進(jìn)行壓縮。登錄個(gè)人郵箱后查看接收到的郵件及附件文件。因該過程較簡單,不再圖示及贅述。系統(tǒng)的內(nèi)網(wǎng)轉(zhuǎn)發(fā)外網(wǎng)郵箱模塊可以成功進(jìn)行轉(zhuǎn)發(fā)操作。
(1)目前沒有實(shí)現(xiàn)超大附件的外網(wǎng)文件轉(zhuǎn)入內(nèi)網(wǎng)的功能。因不同郵件服務(wù)提供商的超大附件協(xié)議不同,分析起來比較復(fù)雜,為盡快實(shí)現(xiàn)系統(tǒng)的轉(zhuǎn)入功能,故暫未支持此項(xiàng)功能。在未來進(jìn)行系統(tǒng)升級(jí),可以實(shí)現(xiàn)超大附件的文件轉(zhuǎn)入內(nèi)網(wǎng)功能。
(2)內(nèi)網(wǎng)轉(zhuǎn)發(fā)到外網(wǎng)郵箱對(duì)文件的大小有限制,目前是限制在50MB。這是基于公網(wǎng)郵箱普通附件的大小限制而設(shè)定的。在系統(tǒng)設(shè)計(jì)過程中,曾嘗試把大文件切分成小于50MB的多個(gè)文件,分多個(gè)郵件發(fā)送到接收人郵箱。但是,經(jīng)測試,順序發(fā)送相同接收人郵箱的多封郵件經(jīng)常會(huì)被郵箱服務(wù)提供商自動(dòng)拒絕服務(wù),判定為垃圾郵件。在未來進(jìn)行系統(tǒng)升級(jí),可以嘗試采用公網(wǎng)郵箱的超大附件功能。
目前,該系統(tǒng)已在我院運(yùn)行一年多,內(nèi)網(wǎng)文件轉(zhuǎn)外網(wǎng)日均40次,外網(wǎng)文件轉(zhuǎn)內(nèi)網(wǎng)OA日均53次,這給醫(yī)院職工的內(nèi)外網(wǎng)之間的文件的交互帶來極大的便利,提高了職工的工作效率,同時(shí),也減少了信息工作人員手工轉(zhuǎn)發(fā)文件的工作。