• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      自編防火墻控制圖書館查詢機(jī)

      2017-06-30 20:50:11黃金春梁爽
      科技視界 2017年5期
      關(guān)鍵詞:防火墻

      黃金春 梁爽

      【摘 要】針對圖書館查詢機(jī)在使用過程中出現(xiàn)的普遍問題,結(jié)合廣西中醫(yī)藥大學(xué)圖書館工作人員的工作經(jīng)驗(yàn)和多次實(shí)驗(yàn)嘗試,提出一種以自編防火墻程序?yàn)楹诵牟⒔Y(jié)合Windows系統(tǒng)服務(wù)來實(shí)現(xiàn)系統(tǒng)保護(hù)、瀏覽器控制訪問等功能的解決方案,同時詳細(xì)闡述該解決方案設(shè)計過程中的各個關(guān)鍵步驟。

      【關(guān)鍵詞】防火墻;查詢機(jī);Windows服務(wù)

      Design the Firewall to Control the Library Inquiry Machine

      【Abstract】Library inquiry machine has its special use requirements and several common problems during normal use.Combining the staff experience of GuangXi University of Chinese Medicine Library and their experiments,In this paper, we proposed a new method to control the Library inquiry machine.This paper discusses every step in this design.

      【Key words】Firewall; Library inquiry machine; Windows Servers

      0 引言

      圖書館查詢機(jī)是提供給讀者方便地檢索館藏資源、查看或辦理個人圖書借閱情況和續(xù)借手續(xù)等服務(wù)的工具,是圖書館日?;顒又凶畛S玫墓ぞ咧?,并且其數(shù)量也隨著圖書館的擴(kuò)大而增加。在其使用過程中,常常因?yàn)閿?shù)量較大、分布較散、讀者使用中較為隨意、網(wǎng)絡(luò)設(shè)置較為簡單等原因,時常出現(xiàn)很多問題而損壞,給讀者日常使用和工作人員的維護(hù)造成了很大的困擾。

      1 目前控制查詢機(jī)的常用方法

      基于以上的原因,許多管理人員使用到了各種辦法來加強(qiáng)對查詢機(jī)的控制,同時又由于圖書館的OPAC系統(tǒng)在使用時用瀏覽器來操作,因此也使用各種辦法加強(qiáng)對瀏覽器的控制。從本質(zhì)上來看這些控制分為兩大核心控制,一是對操作系統(tǒng)的控制,另一個是對網(wǎng)絡(luò)訪問的控制。

      1.1 常用控制操作系統(tǒng)的方法

      控制操作系統(tǒng)主要是對系統(tǒng)修改,刪除,格式化等破壞性操作進(jìn)行控制。在控制上有多種方法,(1)通過配置計算機(jī)的組策略實(shí)現(xiàn)[1]。(2)通過第三方軟件如:360等機(jī)器管理軟件[2]。(3)使用無盤工作,使用還原卡,或者自動還原軟件等辦法[3]。這些方法雖然都可以控制系統(tǒng),但也各有不足,如使用的是第三方軟件實(shí)現(xiàn)的辦法,在實(shí)際使用中發(fā)現(xiàn)許多第三方的軟件都附帶有其它程序,如各種廣告、彈窗等,使用起來不勝其煩。采用組策略的辦法配置較為麻煩,如配置錯誤還會出現(xiàn)其它問題,而采用還原卡的辦法會提高維護(hù)成本。因此都不是很好的辦法。

      1.2 常用控制網(wǎng)絡(luò)訪問的方法

      控制網(wǎng)絡(luò)訪問的辦法主要有,(1)通過劃分子網(wǎng),交換機(jī)隔離的辦法在機(jī)器的ip地址做限制實(shí)現(xiàn)。(2)通過設(shè)置單計算機(jī)的“路由和遠(yuǎn)程訪問”的辦法[4]。(3)利用webbrower控件自設(shè)計瀏覽器的辦法[5]。(4)使用第三方網(wǎng)絡(luò)管理軟件,如美萍電腦安全衛(wèi)士或超級兔子實(shí)現(xiàn)的辦法[6]。這些方法有的需要硬件配合如方法1,有的因?yàn)榈谌杰浖綆С绦蚨霈F(xiàn)其它問題,雖然自設(shè)計瀏覽器沒有附帶程序,但是因?yàn)槭褂玫目丶毕荻霈F(xiàn)功能不足,影響opac查詢系統(tǒng)的使用。

      1.3 其他方法

      使用影子系統(tǒng)[7]。是基于虛擬機(jī)原理的一種保護(hù)系統(tǒng),它可以產(chǎn)生出一個和原來系統(tǒng)一模一樣的虛擬系統(tǒng)(影子),所有的操作都針對這個影子,不會對真實(shí)系統(tǒng)產(chǎn)生影響。該方法比較實(shí)用但是安裝起來較為麻煩。

      2 自寫防火墻方法的原理

      2.1 Filter-hook驅(qū)動技術(shù)

      從Windows 2000開始微軟公司在操作系統(tǒng)里提供了一個可以進(jìn)行ip數(shù)據(jù)包過濾的驅(qū)動就是IP過濾驅(qū)動,其對應(yīng)即是ipfltdrv.sys文件。它擴(kuò)展了IP過濾驅(qū)動(IP Filter Driver)的功能。Filter-Hook 驅(qū)動并不是網(wǎng)絡(luò)驅(qū)動,它是一種內(nèi)核模式驅(qū)動(Kernel Mode Driver),它提供回調(diào)函數(shù)(callback)。這樣當(dāng)數(shù)據(jù)包發(fā)送和接收時,允許用戶注冊自己的ip數(shù)據(jù)報處理函數(shù)(鉤子驅(qū)動程序)判斷ip數(shù)據(jù)包的處理方式[8]。為了說明是如何實(shí)現(xiàn)的過濾,先看下Windows下IP數(shù)據(jù)包發(fā)送過程,如圖1所示發(fā)送過程主要有3個步驟,

      圖1 Windows下IP數(shù)據(jù)包發(fā)送過程

      1)IP 數(shù)據(jù)包形成后,系統(tǒng)就會將其傳遞給防火墻掛鉤驅(qū)動程序 (Ipnat.sys) 進(jìn)行處理。

      2)系統(tǒng)將數(shù)據(jù)包傳遞給ip篩選器驅(qū)動程序 (Ipfltdrv.sys) 進(jìn)行處理。

      3)系統(tǒng)將該數(shù)據(jù)包傳遞給 Ipsec.sys 進(jìn)行處理。

      從該過程可以看出,數(shù)據(jù)包發(fā)送的第2步要通過ipfltdrv進(jìn)行控制。編寫程序自定義過濾規(guī)則掛鉤在其上就可實(shí)現(xiàn)對ip數(shù)據(jù)包的過濾處理。

      3 自寫防火墻方法的具體實(shí)現(xiàn)

      3.1 設(shè)計鉤子驅(qū)動程序

      鉤子驅(qū)動程序?yàn)橄到y(tǒng)程序,用C++開發(fā),首先必須安裝與windows對應(yīng)系統(tǒng)DDK開發(fā)工具包,然后選擇為標(biāo)準(zhǔn)的sys項(xiàng)目。一個鉤子驅(qū)動程序是按照PacketFilterExtensionPtr數(shù)據(jù)類型定義的函數(shù),這個函數(shù)本質(zhì)上是ip數(shù)據(jù)包過濾器驅(qū)動。然后在系統(tǒng)提供的IP過濾驅(qū)動程序(ipfltdry.sys)中注冊該函數(shù)的實(shí)體指針。當(dāng)注冊成功后,ip數(shù)據(jù)包將會被IP過濾驅(qū)動程序發(fā)送給鉤子驅(qū)動程序來進(jìn)行過濾檢查,以便決定怎樣進(jìn)一步處理數(shù)據(jù)包。它的返回值有[8]:

      (1)PF-FORWARD表示IP過濾器驅(qū)動立即把ip數(shù)據(jù)包轉(zhuǎn)發(fā)到IP協(xié)議棧中,如果該數(shù)據(jù)包是本機(jī)需要的數(shù)據(jù)包,IP協(xié)議將其轉(zhuǎn)發(fā)給上層協(xié)議處理,否則,如果路由功能被打開,IP將路由該數(shù)據(jù)包。

      (2)PF-DROP表示IP過濾驅(qū)動將立刻向IP協(xié)議棧發(fā)出丟棄響應(yīng),IP協(xié)議將丟棄該ip數(shù)據(jù)包。

      (3)PF-PASS表示IP過濾驅(qū)動處理該ip數(shù)據(jù)包,并將結(jié)果動作回復(fù)給IP協(xié)議棧。 IP過濾器驅(qū)動如何過濾數(shù)據(jù)包由它本身和包過濾API接口的設(shè)置方式來決定;如果過濾器鉤子認(rèn)為自己不需要處理該數(shù)據(jù)包,而是讓IP過濾器驅(qū)動過濾包,則應(yīng)該返回該P(yáng)F-PASS。

      設(shè)計該程序?qū)嵸|(zhì)為設(shè)計兩大部分,一為設(shè)計按照PacketFilterExtensionPtr數(shù)據(jù)類型定義的函數(shù),其說明如下:

      Type PF_FORWARD_ACTION(*PacketFilterExtensionPtr)

      usigned char *PacketHeader, //數(shù)據(jù)包頭指針

      usigned char *Packet, //數(shù)據(jù)包緩沖區(qū)指針

      usigned int PacketLength, //緩沖區(qū)長度

      usigned int RecvInterfaceIndex,//接收數(shù)據(jù)包網(wǎng)卡序號

      usigned int SebdInterfaceIndex,//發(fā)送數(shù)據(jù)包網(wǎng)卡序號

      IPAddr RecvLinkNextHop, //多網(wǎng)卡使用

      IPAddr SendLinkNextHop, //多網(wǎng)卡使用

      );

      通過如下類似代碼設(shè)計過濾函數(shù)

      PF_FORWARD_ACTION FP(……)

      {……

      if(某個條件滿足){……

      return PF-FORWARD

      if() ……

      return PF-DROP

      if() ……

      return PF-PASS

      }

      }

      另一部分設(shè)計在系統(tǒng)提供的IP過濾驅(qū)動程序(ipfltdry.sys)中注冊該函數(shù)的函數(shù)指針。通過PF_SET_EXTENSION_HOOK_INFO結(jié)構(gòu)完成,它的定義如下,其中包含回調(diào)函數(shù)的指針ExtensionPointer:

      typedef struct _PF_SET_EXTENSION_HOOK_INFO

      {

      PacketFilterExtensionPtr ExtensionPointer;

      }PF_SET_EXTENSION_HOOK_INFO,*PPF_SET_EXTENSION_

      HOOK_INFO;

      3.2 設(shè)置驅(qū)動的I/O命令

      前面完成設(shè)計是系統(tǒng)程序,沒有控制界面,需要設(shè)計應(yīng)用程序來完成控制。當(dāng)應(yīng)用程序要控制驅(qū)動程序去操作時,通過使用Windows API的 ioctl函數(shù)(ioctl是設(shè)備驅(qū)動程序中對設(shè)備的I/O通道進(jìn)行管理的函數(shù))來控制驅(qū)動的操作功能,并且它們之間的通訊是通過IRP(I/O request package是操作系統(tǒng)內(nèi)核的一個數(shù)據(jù)結(jié)構(gòu))來完成,因此必須分兩步實(shí)現(xiàn):

      (1)先設(shè)定驅(qū)動程序的ioctl自定義操作命令,使用CTL_CODE宏來創(chuàng)建。函數(shù)原型如下:

      #define CTL_CODE(DeviceType設(shè)備類型, Function功能, Method I/O訪問內(nèi)存使用方式, Access訪問限制);

      例如:

      #define START_IP_HOOK CTL_CODE(0x3000, 0x900, METHOD_

      BUFFERED, FILE_ANY_ACCESS)

      (2)使用IoBuildDeviceIoControlRequest函數(shù)建立所需的IRP。然后應(yīng)用程序及可對驅(qū)動程序進(jìn)行控制。

      3.3 控制網(wǎng)絡(luò)訪問的設(shè)置

      設(shè)計好鉤子驅(qū)動程序后,還要設(shè)計具體的網(wǎng)絡(luò)訪問控制內(nèi)容,即對數(shù)據(jù)包的控制內(nèi)容,如協(xié)議號、ip地址、子網(wǎng)掩碼、端口號及對其的處理等等。為了方便操作,可設(shè)計一個結(jié)構(gòu)來存儲這些內(nèi)容。

      如:struct IPFilter {

      USHORT protocol; // 協(xié)議號

      ULONG sourceIP; // 源IP地址

      ULONG destinationIP; // 目標(biāo)IP地址

      ULONG sourceMask; // 源地址子網(wǎng)掩碼

      ULONG destinationMask; // 目的地址子網(wǎng)掩碼

      USHORT sourcePort; // 源端口號

      USHORT destinationPort; // 目的端口號

      BOOLEAN drop; // 包處理

      };

      如果有多個訪問控制那么就需要填寫多個結(jié)構(gòu),然后把這些結(jié)構(gòu)串成一個鏈表。在系統(tǒng)工作時,對的數(shù)據(jù)包和此結(jié)構(gòu)的匹配是從鏈表頭開始比較的。因此如何排列這些結(jié)構(gòu)就非常重要了,正確做法是把允許通過的放在前面,最后一個是拒絕所有的數(shù)據(jù)包。在此以我校圖書館為例來說明,我校圖書館的查詢機(jī)要求可以訪問內(nèi)網(wǎng)(172.16.0.0/16),還要求可以訪問學(xué)校主頁(210.36.99.12),除此之外均不能訪問。

      1)允許內(nèi)網(wǎng)段訪問

      pf2.protocol = 6;

      猜你喜歡
      防火墻
      筑牢防火墻 系緊安全帶
      全民總動員,筑牢防火墻
      水上消防(2020年1期)2020-07-24 09:26:12
      構(gòu)建防控金融風(fēng)險“防火墻”
      智慧防火墻
      海南新農(nóng)合有了“防火墻”
      在舌尖上筑牢抵御“僵尸肉”的防火墻
      IT時代周刊(2015年7期)2015-11-11 05:49:50
      下一代防火墻要做的十件事
      自動化博覽(2014年6期)2014-02-28 22:32:13
      新漢 HENGETM工業(yè)防火墻
      自動化博覽(2014年5期)2014-02-28 22:31:38
      筑起網(wǎng)吧“防火墻”
      中國火炬(2010年10期)2010-07-25 07:43:49
      自己選擇十大免費(fèi)防火墻
      宁陵县| 广平县| 鄂托克前旗| 洪雅县| 江阴市| 横山县| 电白县| 朝阳县| 莫力| 苍梧县| 壶关县| 甘南县| 天门市| 东海县| 清水县| 朝阳市| 克山县| 苏尼特左旗| 叶城县| 东乡县| 华容县| 新兴县| 余庆县| 哈巴河县| 永兴县| 麦盖提县| 勃利县| 黄平县| 镇平县| 宜都市| 通河县| 牡丹江市| 武义县| 丹寨县| 辽源市| 海林市| 明星| 泰宁县| 祁连县| 虹口区| 临沭县|