一個(gè)網(wǎng)絡(luò)有多少IP和端口向外暴露,就有多少可以被攻擊的點(diǎn)。暴露面越小,網(wǎng)絡(luò)越安全。
零信任里面有一些可以實(shí)現(xiàn)“零暴露面”的隱身技術(shù),可以讓企業(yè)免疫網(wǎng)絡(luò)攻擊。
下面我就來介紹其中三種。
隱身技術(shù)1:SDP端口隱藏
SDP技術(shù)是用來實(shí)現(xiàn)零信任理念的最好的技術(shù)框架之一。SDP技術(shù)可以把攻擊面降低到最小,甚至完全不暴露端口,實(shí)現(xiàn)“零”攻擊面。
大家都知道,一個(gè)網(wǎng)站需要把端口映射到互聯(lián)網(wǎng)上,才能被外部用戶訪問。
SDP可以做到——讓一個(gè)網(wǎng)站只對(duì)合法用戶映射端口,不對(duì)非法用戶映射端口。
就像下圖這樣,只有合法用戶能連接到業(yè)務(wù)系統(tǒng)。非法用戶完全“看不到”被保護(hù)的業(yè)務(wù)系統(tǒng)和網(wǎng)絡(luò)。壞人去嘗試進(jìn)行連接的話,會(huì)發(fā)現(xiàn)這個(gè)IP地址上什么網(wǎng)站都沒有。但是同時(shí)好人卻可以完全正常地使用。
被保護(hù)的網(wǎng)絡(luò)就像隱身了一樣,壞人根本看不到,摸不著。包括下圖中列舉的各類網(wǎng)絡(luò)攻擊都無從發(fā)起。有了SDP就相當(dāng)于對(duì)所有網(wǎng)絡(luò)攻擊都免疫了。
這么神奇的效果是怎么實(shí)現(xiàn)的呢?介紹端口隱身的原理之前,我先科普一下啥是端口,黑客怎么攻擊端口。
什么是端口
如果一個(gè)服務(wù)器是一個(gè)大樓的話,端口就像大樓的各個(gè)出入口。不同的入口可以進(jìn)入不同的店鋪、不同的區(qū)域。對(duì)服務(wù)器來說,不同的端口對(duì)應(yīng)了不同的服務(wù)程序。
每個(gè)服務(wù)器程序都是通過“端口”跟外面的用戶通信的。例如,我們平時(shí)用瀏覽器打開百度的時(shí)候,就是通過百度的443端口跟百度的服務(wù)器程序通信的。瀏覽器地址欄里真實(shí)的URL是www.baidu.com:443,你一般看不到443,是因?yàn)闉g覽器把端口隱藏了,沒顯示出來。不信你在url后面輸入:443試試,打開的是同一個(gè)界面。
訪問https網(wǎng)站是通過服務(wù)器的443端口,訪問http網(wǎng)站是通過服務(wù)器的80端口,建立SSH連接是通過22端口,發(fā)送郵件是通過25端口……
黑客怎么攻擊端口
黑客一般會(huì)先收集服務(wù)器都開了哪些端口,猜測服務(wù)器提供什么服務(wù),然后分別制定相應(yīng)的攻擊計(jì)劃。
所以,端口是攻防的關(guān)鍵。各類網(wǎng)絡(luò)攻擊基本都是以“端口”為目標(biāo)的。如果端口沒有暴露出來的話,黑客就沒有可攻擊的目標(biāo)。
1、利用漏洞攻擊
黑客用端口掃描工具(例如Nmap)可以從端口的返回信息中了解到很多服務(wù)器的信息。例如,服務(wù)器的操作系統(tǒng)、中間件、通信協(xié)議等等。
壞人知道了目標(biāo)服務(wù)器的信息,就可以利用相應(yīng)的漏洞去攻擊?;ヂ?lián)網(wǎng)上有很多公開的漏洞庫。只要在漏洞庫里搜索,就能查到漏洞。
操作系統(tǒng)、中間件等軟件廠家會(huì)從漏洞庫里查找自己的漏洞,并進(jìn)行修復(fù)升級(jí)。但軟件出新版了,用戶不一定立馬跟著升級(jí)。大部分用戶用的都是帶著漏洞的舊版本。
對(duì)黑客來說,這些服務(wù)器和用戶,都成了靶子。黑客可以隨意攻擊,讓服務(wù)器癱瘓、或者竊取機(jī)密信息。
2、DDoS攻擊
除了利用漏洞,黑客還有更簡單粗暴的攻擊方法。
如果發(fā)現(xiàn)目標(biāo)服務(wù)器某個(gè)端口是暴露的,直接利用大批的肉雞傀儡機(jī)進(jìn)行流量攻擊,把服務(wù)器的資源占滿,直接就能給服務(wù)器搞癱瘓。
3、自動(dòng)信息收集
看到這,你可能會(huì)想,端口直接暴露在互聯(lián)網(wǎng)上確實(shí)危險(xiǎn),但是哪有那么多人這么無聊,每天在網(wǎng)上掃描漏洞、肆意進(jìn)攻啊。有的話也輪不到我吧。
我告訴你,錯(cuò)了!每天有很多爬蟲在大規(guī)模地自動(dòng)掃描。
就像百度會(huì)不斷地爬全世界的所有網(wǎng)頁一樣,很多黑客組織會(huì)搞一套集群每天去掃全世界所有的服務(wù)器。下圖就是某個(gè)國內(nèi)的公開的服務(wù)器搜索引擎。去搜一個(gè)漏洞的名字,馬上能把全世界所有有這個(gè)漏洞的服務(wù)器列出來。
所以,你可能已經(jīng)在別人的目標(biāo)列表里了,只不過還沒輪到,或者你還不知道而已。
一般的防御手段
網(wǎng)絡(luò)攻擊很恐怖,那現(xiàn)在一般公司是怎么防御的呢?一般有兩種手段。
一種是允許所有人訪問目標(biāo)網(wǎng)站,但是訪問時(shí)會(huì)進(jìn)行各種安全過濾。發(fā)現(xiàn)惡意代碼或者病毒木馬,則立即進(jìn)行阻斷。
這種方法依賴于識(shí)別惡意行為的規(guī)則庫。如果一種新型的攻擊剛剛被發(fā)明,破解方法還沒被發(fā)明出來,那么很大可能這種攻擊是防御不住的。這就是常說的零日攻擊。
而且,這種防御的思路有一個(gè)缺陷,就是只要目標(biāo)網(wǎng)站是暴露出來的,它就是一個(gè)靶子!壞人可以隨時(shí)去研究它,破解它。
例如,WAF是專門防御針對(duì)web的攻擊的設(shè)備,網(wǎng)上WAF的繞過教程有都很多。因?yàn)閃AF是所有人都可以看到的,所有人都可以不斷地去研究它,去測試有沒有辦法繞過它的防御。
正是因?yàn)榈谝环N方法有這種局限,所以很多重要的系統(tǒng)都是不暴露在公網(wǎng)上的。
如果需要遠(yuǎn)程訪問這種系統(tǒng)的話,企業(yè)一般選擇通過VPN接入。
VPN的特點(diǎn)是它可以減小暴露面。外部用戶看不到VPN保護(hù)的業(yè)務(wù)系統(tǒng)的端口。
但是VPN還是存在一個(gè)問題,就是VPN本身還是要暴露端口的。例如SSL VPN就要暴露443端口。有端口就有漏洞!例如下圖就是我在漏洞庫里搜到的各種VPN的漏洞。
所以VPN也不是一個(gè)完美的辦法。那么有沒有辦法一個(gè)端口都不暴露呢?有!方法就是——SDP。
SDP的隱身原理
回到最開始的圖。SDP設(shè)備通常會(huì)部署在網(wǎng)絡(luò)的入口進(jìn)行防御(下圖中“火”左邊的圓圈開關(guān))。被保護(hù)的網(wǎng)絡(luò)只有一個(gè)出入口。SDP就在這里把守。
1、SDP的組件
SDP需要兩個(gè)組件配合,才能實(shí)現(xiàn)隱身的效果。這兩個(gè)組件分別是SDP客戶端和SDP網(wǎng)關(guān)。
?。?)SDP客戶端安裝在用戶電腦上。
?。?)SDP網(wǎng)關(guān)部署在網(wǎng)絡(luò)入口。
2、默認(rèn)關(guān)閉所有端口
SDP網(wǎng)關(guān)的默認(rèn)規(guī)則是——關(guān)閉所有端口,拒絕一切連接。網(wǎng)關(guān)防火墻規(guī)則只有一條,就是deny all。默認(rèn)情況下,誰來他都不理。所有人都連不上它的端口。SDP網(wǎng)關(guān)就是這么“隱身”的。
3、端口敲門
這樣的話,壞人是連不上了,但是好人怎么連呢?好人要進(jìn)行一套特殊的流程才能連。這套流程叫做“端口敲門”。
打個(gè)比方,端口敲門的原理就像是,你要進(jìn)入一個(gè)秘密基地,基地的大門平時(shí)是緊閉的。里面有個(gè)人守著,外面怎么敲門都不給開,除非你敲對(duì)了暗號(hào),例如三長兩短。敲對(duì)了暗號(hào),就給開門了。
SDP技術(shù)要求好人在連接端口之前,也要“敲門”。
?。?)SDP客戶端在跟SDP網(wǎng)關(guān)通信之前,會(huì)先發(fā)一個(gè)“敲門”用的數(shù)據(jù)包。包中帶有用戶身份和申請?jiān)L問的端口。
?。?)SDP網(wǎng)關(guān)收到敲門包之后進(jìn)行驗(yàn)證,看看身份合不合法,看看申請的端口有沒有授權(quán)。
?。?)如果都合格了,那么SDP網(wǎng)關(guān)會(huì)在防火墻中添加一條規(guī)則——允許來自這個(gè)用戶的IP的流量訪問某某端口。這就相當(dāng)于把SDP網(wǎng)關(guān)這扇門給“敲”開了。
?。?)敲門完成之后,用戶再去訪問網(wǎng)關(guān)的端口就可以訪問通了。網(wǎng)關(guān)會(huì)把用戶的流量轉(zhuǎn)發(fā)給相應(yīng)的業(yè)務(wù)系統(tǒng)。
注意,這個(gè)時(shí)候,壞人去訪問“同一個(gè)端口”還是不能訪問。因?yàn)榫W(wǎng)關(guān)只對(duì)好人的IP做了放行,壞人的IP是沒有放行的。所以壞人還是掃不到端口,看不到,摸不著。
而且目標(biāo)端口,對(duì)好人也只是暫時(shí)開放,一旦好人停止操作超過一分鐘,端口就自動(dòng)關(guān)了。如果好人一直在操作,那么SDP客戶端會(huì)定期去敲門,保持端口是開放的。
你可能會(huì)發(fā)現(xiàn),這里面有個(gè)問題——如果SDP網(wǎng)關(guān)默認(rèn)所有的端口都是關(guān)閉的,那敲門包是怎么接收的呢?
其實(shí),SDP會(huì)留一個(gè)端口,處于半開放的狀態(tài),只接收,不響應(yīng)。(例如,隨便一個(gè)UDP端口)
(1)端口號(hào)是網(wǎng)關(guān)事先與客戶端協(xié)商好的,例如60001
(2)客戶端把敲門包發(fā)送到60001端口上
?。?)60001端口接收數(shù)據(jù)包后不做任何響應(yīng)
?。?)壞人的掃描工具探測60001端口時(shí),會(huì)認(rèn)為這個(gè)端口啥反應(yīng)都沒有,肯定是關(guān)閉的。
以上就是SDP的端口隱身機(jī)制。
4、隱身的效果
如果拿Nmap去掃描SDP網(wǎng)關(guān)的話,結(jié)果會(huì)發(fā)現(xiàn)所有端口都是關(guān)閉狀態(tài),如下圖。但是用SDP客戶端可以正常打開網(wǎng)站。
5、SDP和VPN的對(duì)比
Gartner預(yù)言SDP會(huì)替代VPN技術(shù),主要就是因?yàn)镾DP的隱身能力。VPN至少還是要暴露一個(gè)端口的(例如ssl vpn的443端口)。為什么總是聽到vpn爆出漏洞的新聞呢,就是因?yàn)関pn始終暴露端口,壞人可以隨時(shí)去嘗試攻擊,去研究你有沒有漏洞。
所以從這點(diǎn)來說,SDP的安全性確實(shí)更高。
隱身技術(shù)2:基于云的IP隱身
SDP可以做到端口隱藏,但I(xiàn)P還是需要對(duì)外映射的。不然好人也訪問不到了。
有沒有不用映射IP就能實(shí)現(xiàn)遠(yuǎn)程訪問的技術(shù)呢?有!很多基于云的零信任產(chǎn)品會(huì)帶有這種技術(shù)。
1、云隱身的原理
這種技術(shù)的架構(gòu)如圖,包括三個(gè)部分:客戶端、云端、連接器。
?。?)連接器先主動(dòng)跟云端建立隧道
?。?)客戶端的流量先發(fā)到云端,再沿隧道的回路,轉(zhuǎn)發(fā)到連接器
?。?)最后連接器再把流量轉(zhuǎn)發(fā)給內(nèi)網(wǎng)服務(wù)器
云端相當(dāng)于SDP的網(wǎng)關(guān)。連接器起到連接內(nèi)網(wǎng)和云端的作用。
這種架構(gòu)下,企業(yè)不用給連接器映射IP和端口。連接器能上網(wǎng)就行。企業(yè)內(nèi)網(wǎng)只有向外的連接,沒有向內(nèi)的連接。這樣,壞人就徹底進(jìn)不來了。
為什么連接器不需要對(duì)外映射IP和端口呢?
因?yàn)檫B接器是主動(dòng)向外建立隧道,連接器本身不對(duì)外提供服務(wù)。云端跟連接器通信,是沿著隧道的回路來進(jìn)行通信的。
如果想不明白的話,可以想想我們平時(shí)在家上網(wǎng)的場景。家里電腦是不對(duì)外映射IP和端口的,網(wǎng)站怎么把信息發(fā)給電腦呢?電腦主動(dòng)向網(wǎng)站發(fā)起連接,網(wǎng)站是順著連接的回路把網(wǎng)頁發(fā)下來的。
2、云隱身的好處
企業(yè)不用暴露IP和端口有很多好處。
?。?)首先就是不用備案了。
?。?)而且,各種DDoS攻擊和漏洞掃描都不可能了。掃描工具里要填寫目標(biāo)IP。企業(yè)什么IP都不暴露的話,壞人別說掃端口了,IP都不知道怎么填。
這樣,企業(yè)網(wǎng)絡(luò)就相當(dāng)于徹底隱身了,耶!
3、云隱身的缺陷
這種模式又省心又安全,看似完美。但其實(shí)是有個(gè)風(fēng)險(xiǎn)點(diǎn)的。風(fēng)險(xiǎn)點(diǎn)就是云端自身的安全。云端還是要對(duì)外映射IP的。
這種模式本質(zhì)上是把風(fēng)險(xiǎn)轉(zhuǎn)嫁了,轉(zhuǎn)嫁給云端了。
4、云+SDP的結(jié)合
如果要保護(hù)云端的話,可以考慮把SDP融入進(jìn)來。云端裝一個(gè)SDP的網(wǎng)關(guān)。云還是暴露IP,但是不暴露端口。
這樣,總共兩層防護(hù),第一層是SDP隱藏端口,第二層是連接器不暴露IP。整體的安全性就比較完美了。
隱身技術(shù)3:無端模式
SDP+連接器的方式在安全性上是很好的,但是在便捷性上有一個(gè)缺點(diǎn)——需要用戶安裝一個(gè)客戶端。因?yàn)榍瞄T是一個(gè)特殊的流程,有客戶端才能執(zhí)行。電腦上默認(rèn)瀏覽器沒法執(zhí)行。
有端的話就難推廣。一般終端的產(chǎn)品是比較難運(yùn)維的,用戶很排斥往自己的電腦上裝各種亂七八糟的東西。
能不能沒有端?能。
我看到過一個(gè)國外網(wǎng)友給自己公司DIY了一套無端的隱身方案。
1、無端模式的架構(gòu)
?。?)用戶先登錄SSO(單點(diǎn)登錄)系統(tǒng)
?。?)SSO通知防火墻添加一條規(guī)則——允許來自用戶IP的流量(規(guī)則標(biāo)簽里加上創(chuàng)建時(shí)間)
(3)后臺(tái)有一個(gè)回收程序,定期去檢查所有防火墻規(guī)則,對(duì)比創(chuàng)建時(shí)間,發(fā)現(xiàn)已經(jīng)過了10分鐘,就立即清除該規(guī)則。
2、無端模式的優(yōu)缺點(diǎn)
這種方案也能實(shí)現(xiàn)隱身的效果。用戶登錄SSO之前,防火墻是關(guān)閉的。業(yè)務(wù)系統(tǒng)在互聯(lián)網(wǎng)完全掃不到。
這種方案相當(dāng)于把敲門的邏輯放到SSO系統(tǒng)里去執(zhí)行了。好處是用戶不用安裝客戶端,但是代價(jià)是企業(yè)的SSO系統(tǒng)是暴露在外的。
所以,從這個(gè)角度看,體驗(yàn)上來了,但是安全性下去了。
總結(jié)
上面介紹了三種隱身技術(shù),各有利弊,各有適合的場景。三種技術(shù)還可以兩兩組合,產(chǎn)生更佳效果。
隱身技術(shù)企業(yè)帶來的價(jià)值也非常大。有隱身之后可以避免掉絕大多數(shù)的網(wǎng)絡(luò)攻擊、滲透測試。尤其是比較大的公司,內(nèi)部幾百個(gè)系統(tǒng),一個(gè)一個(gè)搞安全建設(shè)太累了,不如在統(tǒng)一入口上直接隱身,簡單有效。