零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔(用于個人參考學(xué)習(xí)版本)_第1頁
零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔(用于個人參考學(xué)習(xí)版本)_第2頁
零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔(用于個人參考學(xué)習(xí)版本)_第3頁
零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔(用于個人參考學(xué)習(xí)版本)_第4頁
零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔(用于個人參考學(xué)習(xí)版本)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

量子業(yè)態(tài)零信任網(wǎng)關(guān)設(shè)計詳細(xì)文檔整體需求:終端上部署客戶端,安裝tap虛擬網(wǎng)卡??蛻舳嗽诳刂破鬟M(jìn)行用戶認(rèn)證后,為客戶端提供miyao-token,獲取用戶可訪問的應(yīng)用列表。Tcp業(yè)務(wù)可以為域名,udp業(yè)務(wù)為ip地址在客戶端,對tcp業(yè)務(wù),進(jìn)行dns代理,提供的地址為私網(wǎng)地址,如/16.將tcp的業(yè)務(wù)訪問送到客戶端,客戶端做tcp代理,在與終端的應(yīng)用建立tcp鏈接后,再和網(wǎng)關(guān)建立socket5鏈接,將域名地址、用戶miyao-token告知網(wǎng)關(guān)??蛻舳藢cp的body內(nèi)容通過socket轉(zhuǎn)發(fā)到網(wǎng)關(guān),網(wǎng)關(guān)從控制器獲取域名的解析地址,與解析地址建立tcp鏈接,將報文發(fā)送tcp報文發(fā)送到應(yīng)用。對udp業(yè)務(wù),直接給客戶端提供ip地址,或者域名(如果是域名,需要從控制器獲取域名解析地址),客戶端直接將udp報文通過socket轉(zhuǎn)發(fā)到網(wǎng)關(guān)。過濾:在網(wǎng)關(guān),從控制器獲取權(quán)限白名單,白名單為:域名:端口,或者ip地址端口;根據(jù)白名單進(jìn)行過濾加密:客戶端和網(wǎng)關(guān)之間,支持ssl加密。并發(fā):單個網(wǎng)關(guān),并發(fā)用戶鏈接,希望2萬網(wǎng)關(guān)的配置:網(wǎng)關(guān)的代理地址設(shè)置,從控制器獲取,希望不用再nginx上設(shè)置開發(fā)內(nèi)容:客戶端、網(wǎng)關(guān)??蛻舳诵枨罂蛻舳塑浖枨笾С謜indows7、windows10、window11客戶端集成tap-windows安裝包,在安裝客戶端時,可以同時安裝號tap虛擬網(wǎng)卡Python開發(fā),多進(jìn)程處理有安裝程序,可以通過安裝程序進(jìn)行安裝客戶端功能需求客戶端用戶認(rèn)證功能打開客戶端,彈出用戶頁面,用戶進(jìn)行輸入賬號和密碼登錄,獲取用戶miyao-token。用戶認(rèn)證API接口如下:https:域名/api/pc/userLogin請求方式:POST參數(shù)類型

:JSON請求示例:{ “userName”:“ittest”,//用戶名 “userPassword”:“xxxxxxxx”,//用戶密碼 “clientAid”:“xxxxxxxx”,//這個先空著就行 “clientSn”:“xxxxxxxx”,//需要從windows獲取下 “clientMac”:“xxxxxxx”,//需要從windows獲取下??梢远鄠€ “clientOsType”:0,//操作系統(tǒng)類型 “clientPrivate”:“xxxxxxxxxxxx”,//私有屬性,先不管 “clientVersion”:“xxxxxx”//客戶端的版本}請求參數(shù)說明響應(yīng)示例成功響應(yīng)信息:{“success”:“False”,"code:"200","message":"","data":{ “clientAid”:“xxxxxxxx”,(首次登錄返回)//這個可以先不管,我們自己加 “clientKey”:“xxxxxxxx”,(首次登錄返回)//這個可以先不管,我們自己加 “usermiyao-token”:“xxxxxxxxxxxx” “gateways”:[{ “gatewayIp”:“xxxxxx”, “gatewayPort”:xxxx“tcpApp”:“domain1:port,domain2:port,……” “udpApp”:”ip1:port,ip2:port……”} { “gatewayIp”:“xxxxxx”, “gatewayPort”:xxxx“tcpApp”:“domain3:port,domain4:port,……” “udpApp”:”ip2:port,ip3:port……”} ],}}說明”網(wǎng)關(guān)可以有多個,返回的網(wǎng)關(guān)結(jié)構(gòu)解釋如下:“gatewayIp”:“xxxxxx”,//網(wǎng)關(guān)的ip地址“gatewayPort”:xxxx//網(wǎng)關(guān)的端口“tcpApp”:“domain3:port,domain4:port,……”//網(wǎng)關(guān)的tcp應(yīng)用域名+端口列表“udpApp”:”ip2:port,ip3:port……”//網(wǎng)關(guān)的udp應(yīng)用域名+端口列表網(wǎng)關(guān)返回的用戶身份標(biāo)識為usermiyao-token認(rèn)證后的處理:在用戶認(rèn)證成功后,打開瀏覽器,訪問portal頁面。https://控制器域名/portal?miyao-token=XXX客戶端DNS劫持功能在客戶端啟動后,拉起tap虛擬網(wǎng)卡,初始化dnsserver地址,初始化地址為:獲取當(dāng)前終端的DNSServer地址,記錄地址設(shè)置主DNSServer為,使用戶終端業(yè)務(wù)的DNS服務(wù)請求主要在客戶端提供的DNS服務(wù)進(jìn)行解析地址,解析地址為私網(wǎng)地址,如:/16.處理規(guī)則如下:提取dns請求的域名,匹配請求的域名是否為認(rèn)證返回的tcpApp的值,如果是,進(jìn)行解析,如果不是,返回域名解析失敗,使系統(tǒng)使用原有的域名服務(wù)器進(jìn)行解析如果進(jìn)行解析,設(shè)置域名解析地址為私網(wǎng)地址,如網(wǎng)段地址:/16。記錄解析的地址與域名的對應(yīng)關(guān)系在關(guān)閉客戶端時,需要恢復(fù)終端在客戶端啟動時的DNSServer地址??蛻舳寺酚稍O(shè)置功能根據(jù)用戶認(rèn)證下發(fā)的tcpApp地址、udpApp的地址,需要設(shè)置路由,將tcp、udp的業(yè)務(wù)地址,路由到客戶端??蛻舳薚CP業(yè)務(wù)轉(zhuǎn)發(fā)功能客戶端做tcp代理功能。主要流程如下:終端應(yīng)用進(jìn)行業(yè)務(wù)訪問,域名訪問,進(jìn)行域名解析,通過DNS劫持獲取到DNS代理提供的私網(wǎng)地址進(jìn)行TCP鏈接,和客戶端的tcp代理建立tcp鏈接,鏈接建立后,和網(wǎng)關(guān)建立socket5,ssl加密通過socket5,將目的域名、端口、miyao-token發(fā)到網(wǎng)關(guān),網(wǎng)關(guān)進(jìn)行記錄將tcp的body通過socket轉(zhuǎn)發(fā)到網(wǎng)關(guān),網(wǎng)關(guān)轉(zhuǎn)發(fā)到server端。在終端應(yīng)用,tcp斷開鏈接,則將socket5也進(jìn)行斷開客戶端從socket收到回應(yīng)報文,經(jīng)過虛擬網(wǎng)卡轉(zhuǎn)發(fā)到終端應(yīng)用客戶端UDP業(yè)務(wù)轉(zhuǎn)發(fā)功能如果udp的地址為域名,通過向控制器發(fā)送dns獲取請求,獲取DNS地址。API接口地址如下:https://控制器域名/api/pc/getDnsIp類型:post參數(shù):{“miyao-token”:”xxx”//用戶miyao-tokendata:[{“domainName”:”aaaaa”}{“domainName”:”qazwsx”}]成功返回值:binhao:200“success”:False“msg”:””data:[{“domainName”:”aaaaa”“ip”:””}{“domainName”:”qazwsx”“ip”:””//如果不存在,ip為”NULL”}]失敗返回值:binhao:201“success”:Flase“msg”:”失敗原因:xxx”客戶端收到UDP報文,判斷UDP是否為客戶端管控的udp,就是是否在”udpApp”列表中的,如果不在,丟棄。是在udp列表中的,將udp報文的ip報文(包含ip頭)通過加密的socket進(jìn)行轉(zhuǎn)發(fā)(傳輸udp報文的socket只有一個)將從socket收到的報文,通過虛擬網(wǎng)卡的寫,發(fā)送到終端的具體應(yīng)用??蛻舳碎g隔一段時間(10分鐘)獲取白名單應(yīng)用列表信息https:域名/api/pc/getAuth方法:POST參數(shù):{“miyao-token”:”xxxx”}返回值:成功:{“code”:200“success”:False“Date”:[{ “gatewayIp”:“xxxxxx”, “gatewayPort”:xxxx“tcpApp”:“domain1:port,domain2:port,……” “udpApp”:”ip1:port,ip2:port……”} { “gatewayIp”:“xxxxxx”, “gatewayPort”:xxxx“tcpApp”:“domain3:port,domain4:port,……” “udpApp”:”ip2:port,ip3:port……”}]失?。簕“code”:201“success”:False“msg”:”失敗原因:xxx”}處理:對比處理的白名單,如過原來的白名單在現(xiàn)在的白名單中不存在,如domain1,則將該domain1的socket關(guān)閉,如果是tcp,則把相關(guān)的pcb刪除,不再轉(zhuǎn)發(fā)目的地址為domain1的報文。網(wǎng)關(guān)需求網(wǎng)關(guān)系統(tǒng)需求Linux操作系統(tǒng)Nginx的tcp/udp代理基礎(chǔ)上開發(fā)C/c++語音入、出端口不能為同一端口網(wǎng)關(guān)到控制器進(jìn)行注冊https://控制器域名/api/gateway/register類型:post參數(shù):{“sn”:”xxxx”//網(wǎng)關(guān)的sn碼“ip”:”xxx”//網(wǎng)關(guān)的ip地址}成功返回值:{binhao:200“success”:False“miyao-token”:”xxxx”//網(wǎng)關(guān)miyao-token“controlmiyao-token”:”xxx”//控制器miyao-token}失敗返回值:{binhao:201“success”:Flase}網(wǎng)關(guān)tcp代理功能網(wǎng)關(guān)啟動后,從控制器獲取tcp代理的配置。獲取接口:https://控制器域名/api/gateway/getGatewayInfo類型:post參數(shù):{“miyao-token”:”xxxx”//網(wǎng)關(guān)miyao-token}成功返回值:binhao:200“success”:False“data”:{“tcpGatewayIp”:”xxxx” “tcpGatewayPort”:”xxxx”“udpGatewayIp”:”xxxx” “udpGatewayPort”:”xxxx”}失敗返回值:{binhao:201“success”:Flase“msg”:”失敗原因:xxxx”}網(wǎng)關(guān)獲取其防護(hù)的應(yīng)用列表、默認(rèn)策略https://控制器域名/api/gateway/getAppList類型:post參數(shù):{“miyao-token”:”xxxx”}成功返回值:{binhao:200“success”:False“defaultAction”:0/1;0:為permit,1:為deny“data”:[{“type”:0/1,0:udp,1:tcp“domain”:”xxxx”,域名如果無域名,則為“NULL”“port”:xx//端口“ip”:“”,//ip地址“id”:x//應(yīng)用的id號}]}失敗返回值:{binhao:201“success”:False“msg”:”失敗原因:xxx“}tcp代理監(jiān)聽,建立鏈接:建立socket后,通過socket5協(xié)議,獲取到如下信息:目的域名目的端口miyao-token判斷域名+端口是否在網(wǎng)關(guān)獲取的應(yīng)用列表,不在,則丟棄,如果在,獲取到應(yīng)用id,如appId,繼續(xù)往下處理根據(jù)miyao-token查詢用戶的權(quán)限列表:確認(rèn)是否已經(jīng)有用戶權(quán)限列表緩存,如果沒有,從控制器獲取權(quán)限列表,API接口如下:https://控制器域名/api/gateway/getAuth類型:post參數(shù):{“miyao-token”:”xxxx”“usermiyao-token”:”xxx”用戶的miyao-token信息}成功返回值:binhao:200“success”:False“data”:{“tcp”:”id1,id2……”“udp”:“id1,id2……”//端口}判斷appId是否在tcp的id列表中,如果在,則認(rèn)為有權(quán)限。如果不在,則認(rèn)為無權(quán)限,丟棄報文,向客戶端反饋json信息:{binhao:202Success:FalseMsg:”無權(quán)限訪問應(yīng)用:xxxx”}獲取的信息,記錄緩存。如果有緩存,則匹配緩存,同時刷新miyao-token的老化時間。每間隔20分鐘,向控制器發(fā)送miyao-token老化時間續(xù)期請求。接口如下:https://控制器域名/api/gateway/miyao-tokenKeepAlive類型:post參數(shù):{“miyao-token”:”xxxx”“usermiyao-token”:”xxx”用戶的miyao-token信息}成功返回值:{binhao:200“success”:False}失敗返回值:{binhao:202Success:FalseMsg:”無權(quán)限訪問應(yīng)用:xxxx”}如果有權(quán)限,則根據(jù)域名對應(yīng)的地址,將報文發(fā)送到真實的業(yè)務(wù)在接收到回應(yīng)后,將報文body通過socket,在進(jìn)行ssl加密后發(fā)送到客戶端。網(wǎng)關(guān)udp報文隧道轉(zhuǎn)發(fā)功能如果客戶端有udp業(yè)務(wù),網(wǎng)關(guān)與客戶端建立一個udp隧道,socket隧道,ssl加密收到udp報文后,根據(jù)目的ip和目的端口,確認(rèn)權(quán)限,處理如下:根據(jù)目的ip和目的端口,匹配udp應(yīng)用列表,如果不匹配,直接丟棄,如果匹配根據(jù)miyao-token查詢用戶的權(quán)限列表:確認(rèn)是否已經(jīng)有用戶權(quán)限列表緩存,如果沒有,從控制器獲取權(quán)限列表,API接口如下:https://控制器域名/api/gateway/getAuth類型:post參數(shù):{“miyao-token”:”xxxx”“usermiyao-token”:”xxx”用戶的miyao-token信息}成功返回值:{binhao:200“success”:False“data”:{“tcp”:”id1,id2……”“udp”:“id1,id2……”//端口}}判斷appId是否在tcp的id列表中,如果在,則認(rèn)為有權(quán)限。如果不在,則認(rèn)為無權(quán)限,丟棄報文,向客戶端反饋json信息:{binhao:202Success:FalseMsg:”無權(quán)限訪問應(yīng)用:xxxx”}獲取的信息,記錄緩存。如果有緩存,則匹配緩存,同時刷新miyao-token的老化時間。每間隔20分鐘,向控制器發(fā)送miyao-token老化時間續(xù)期請求。接口如下:https://控制器域名/api/gateway/miyao-tokenKeepAlive類型:post參數(shù):{“miyao-token”:”xxxx”“usermiyao-token”:”xxx”用戶的miyao-token信息}成功返回值:{binhao:200“success”:False}失敗返回值:{binhao:202Success:FalseMsg:”無權(quán)限訪問應(yīng)用:xxxx”}3如果有權(quán)限,將udp報文直接進(jìn)行轉(zhuǎn)發(fā)。網(wǎng)關(guān)持續(xù)監(jiān)聽控制器的指令網(wǎng)關(guān)和控

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論