實(shí)戰(zhàn)案例:運(yùn)營(yíng)商逐步封殺 VPN
本期分享的案例是VPN的相關(guān)問(wèn)題。
一、問(wèn)題背景
不能說(shuō)近期,準(zhǔn)確來(lái)說(shuō)應(yīng)該是這兩年起,政策更注重網(wǎng)絡(luò)安全,直接表現(xiàn)是運(yùn)營(yíng)商線(xiàn)路開(kāi)始檢測(cè)并封殺標(biāo)準(zhǔn)的VPN協(xié)議:IPSEC、PPTP和L2TP。一般情況下是如何檢測(cè)和封殺的?如下:
IPSEC VPN:
- 偵測(cè)UDP 500和4500端口,過(guò)濾掉對(duì)應(yīng)的UDP流讓SA無(wú)法建立
- 偵測(cè)ESP加密封裝報(bào)文,中間鏈路直接攔截
PPTP VPN:
- 偵測(cè)TCP 1723端口并封殺。端口用于 PPTP 控制消息的傳輸,像連接的建立、維護(hù)和終止等操作都通過(guò)該端口進(jìn)行通信
L2TP VPN:
- 偵測(cè)UDP 1701端口并封殺。此端口用于建立L2TP的控制鏈路
今天便和大家分享一個(gè)案例,拓?fù)淙缦拢?/p>
總部和A、B、C三個(gè)分支之間兩兩做IPSEC VPN隧道即:
- 總部<——>A分支
- 總部<——>B分支
- 總部<——>C分支
問(wèn)題描述:總部與A之間有SA(安全聯(lián)盟)但是內(nèi)網(wǎng)無(wú)法正常通信。而總部與B、C通信完全正常。
二、排查思路
從直接的現(xiàn)象來(lái)看SA能正常建立,說(shuō)明主模式/野蠻模式和快速模式的階段握手全部走完了的,UDP 500和UDP 4500大概率沒(méi)有被封,數(shù)據(jù)通信已經(jīng)走了ESP隧道加密封裝了
而總部和分支之間無(wú)法互訪(fǎng),說(shuō)明ESP封裝的數(shù)據(jù)報(bào)文大概是過(guò)不去的,所以基于這點(diǎn)抓取兩邊出口路由的WAN口報(bào)文比對(duì)即可;
三、基礎(chǔ)分析
第一步:檢查安全聯(lián)盟
在路由器的頁(yè)面中,可以看到IPSEC VPN的安全聯(lián)盟是已經(jīng)正常建立的,所以基本可以驗(yàn)證上述猜想:UDP 500和4500端口是允許放行的。
下一步直接抓WAN口報(bào)文,確認(rèn)ESP封裝的數(shù)據(jù)包是否有正常發(fā)出并被對(duì)方的WAN口接收。
第二步:對(duì)比手機(jī)和筆記本同時(shí)http拉取文件的情況
監(jiān)控的接口分別為總部的出口路由器和A分支的出口路由WAN口:
這邊是通過(guò)Tcpdump直接打印看的報(bào)文:
可以很顯性的看到:
A分支發(fā)出的MSS=800字節(jié)(最大數(shù)據(jù)長(zhǎng)度)的報(bào)文經(jīng)過(guò)ESP封裝后得到的864字節(jié)包從A路由發(fā)出去了,但是總部的WAN口沒(méi)收到。說(shuō)明中間鏈路丟包了。這邊分別測(cè)試了MSS=1000、1200的都是如此。
四、問(wèn)題總結(jié)和解決方案
問(wèn)題總結(jié):運(yùn)營(yíng)商線(xiàn)路封殺VPN相關(guān)的數(shù)據(jù)流。
解決方案:公眾文在此我不提供任何解決方案,僅提供你處理問(wèn)題的排查思路。