◆韓星越
基于樹莓派的內(nèi)網(wǎng)穿透技術(shù)研究與實(shí)現(xiàn)
◆韓星越
(77526部隊(duì) 西藏 850000)
內(nèi)網(wǎng)穿透是進(jìn)行內(nèi)網(wǎng)訪問的基礎(chǔ),本文研究了iptables及SSH等兩種內(nèi)網(wǎng)穿透技術(shù),結(jié)合日常應(yīng)用場景,構(gòu)建內(nèi)網(wǎng)穿透模擬環(huán)境,并基于樹莓派Zero W這一便攜式、低功耗計(jì)算平臺(tái),進(jìn)行內(nèi)網(wǎng)穿透測(cè)試,結(jié)果表明上述兩種方案都能實(shí)現(xiàn)內(nèi)網(wǎng)穿透。
內(nèi)網(wǎng)穿透;樹莓派;iptables;SSH端口轉(zhuǎn)發(fā)
由于部分內(nèi)網(wǎng)存在防火墻或者IP地址限定,有的甚至還存在物理隔離,導(dǎo)致外部設(shè)備無法對(duì)其進(jìn)行訪問。如何進(jìn)行內(nèi)網(wǎng)穿透就顯得尤為重要,本文利用樹莓派Zero W這一微型計(jì)算平臺(tái),研究內(nèi)網(wǎng)滲透技術(shù)并構(gòu)建出一個(gè)功能強(qiáng)大的便攜式的內(nèi)網(wǎng)穿透工具。
2017年3月,樹莓派基金會(huì)發(fā)布了一款代號(hào)為樹莓派Zero W(Raspberry Pi Zero W)的微型計(jì)算平臺(tái)。樹莓派Zero W是樹莓派Zero的升級(jí)款,二者主要配置相同,區(qū)別在于樹莓派Zero W加入了WIFI和藍(lán)牙模塊,使其具備了無線通信能力[1]。其硬件外觀如圖1所示。
樹莓派Zero W的處理器為BCM2385,通過USB接口供電,可進(jìn)行OTG擴(kuò)展,通過mini HDMI接口可進(jìn)行視頻輸出,使用BCM43438芯片實(shí)現(xiàn)無線WIFI和藍(lán)牙功能,可外接攝像頭[2]。
樹莓派Zero W具有功耗低、尺寸小、價(jià)格便宜、功能全面等優(yōu)點(diǎn),完全可以勝任對(duì)性能要求不高的項(xiàng)目。對(duì)于本文的內(nèi)網(wǎng)穿透應(yīng)用場景,樹莓派Zero W能實(shí)現(xiàn)相應(yīng)功能且性能足夠。樹莓派Zero W主要參數(shù)見表1。
圖1 樹莓派Zero W硬件外觀
表1 樹莓派Zero W主要參數(shù)
“內(nèi)網(wǎng)”顧名思義,區(qū)別于“外網(wǎng)”或者“公網(wǎng)”,一般是指企業(yè)或者團(tuán)隊(duì)內(nèi)部使用的局域網(wǎng),從外部一般無法直接訪問。因此,如果打算從外部網(wǎng)絡(luò)訪問內(nèi)部網(wǎng)絡(luò),就必須進(jìn)行跨網(wǎng)段數(shù)據(jù)轉(zhuǎn)發(fā),即內(nèi)網(wǎng)“穿透”,基本模型如圖2所示。
內(nèi)網(wǎng)穿透的主要任務(wù)是實(shí)現(xiàn)數(shù)據(jù)的跨網(wǎng)段轉(zhuǎn)發(fā),因此該模型包含A、B兩個(gè)網(wǎng)段,分別代表“內(nèi)網(wǎng)”和“外網(wǎng)”。模型中A網(wǎng)段(內(nèi)網(wǎng)),為192.168.79.0/24,包含服務(wù)器A1、主機(jī)A2;B網(wǎng)段(外網(wǎng))為192.168.101.0/24,包含主機(jī)B1、主機(jī)B2。A網(wǎng)段的主機(jī)與B網(wǎng)段的主機(jī)分別處于不同的局域網(wǎng),中間可能還存在物理隔離,因此兩個(gè)網(wǎng)段的主機(jī)之間無法直接通信。
當(dāng)前部分內(nèi)網(wǎng)為達(dá)到物理隔離的效果,甚至沒有預(yù)留可用的網(wǎng)口。對(duì)于內(nèi)網(wǎng)滲透測(cè)試而言,進(jìn)行內(nèi)網(wǎng)穿透是前提條件,因此必須創(chuàng)造條件進(jìn)行跨網(wǎng)段數(shù)據(jù)轉(zhuǎn)發(fā)。
圖2 內(nèi)網(wǎng)穿透基本模型
而樹莓派Zero W可以基于USB實(shí)現(xiàn)RNDIS,實(shí)際上就是TCP/IP over USB,即在USB設(shè)備上執(zhí)行TCP/IP協(xié)議,使USB設(shè)備模擬成網(wǎng)卡。因此樹莓派Zero W可實(shí)現(xiàn)雙網(wǎng)卡功能,一端通過USB接口連接內(nèi)網(wǎng)主機(jī),模擬出USB有線網(wǎng)卡(網(wǎng)卡A3),另一端則通過WIFI(網(wǎng)卡B3)與外網(wǎng)主機(jī)相連。此時(shí)樹莓派Zero W同時(shí)接入了兩個(gè)網(wǎng)段,關(guān)鍵是如何在樹莓派上選擇合適的方式進(jìn)行跨網(wǎng)段數(shù)據(jù)轉(zhuǎn)發(fā),最終實(shí)現(xiàn)內(nèi)網(wǎng)穿透。
樹莓派Zero W是一個(gè)微型的計(jì)算平臺(tái),可運(yùn)行定制版的Linux系統(tǒng),在諸多跨網(wǎng)段數(shù)據(jù)轉(zhuǎn)發(fā)方式中,本文選擇其中兩種合適的方式:第一種是基于iptables的轉(zhuǎn)發(fā)方案,第二種是基于SSH的轉(zhuǎn)發(fā)方案,方案細(xì)節(jié)見后文。
iptables是由最新的3.5 版本 Linux 內(nèi)核集成的IP信息包過濾系統(tǒng),該系統(tǒng)有利于在Linux上更好地控制IP信息包過濾和防火墻配置。在日常工作中,部分網(wǎng)絡(luò)運(yùn)維人員也將iptables稱為Linux防火墻,但這樣稱呼并不準(zhǔn)確。嚴(yán)格來說,iptables是一個(gè)對(duì)防火墻進(jìn)行配置的工具,運(yùn)維人員可借助該工具來對(duì)內(nèi)存中的包過濾規(guī)則執(zhí)行查詢、添加、刪除、修改等操作[3]。iptables是在IPV4環(huán)境中使用,而IPV6環(huán)境中需要使用ip6tables。
(1)NAT原理
絕大多數(shù)情況下,內(nèi)網(wǎng)主機(jī)使用的是私有IP地址,而外網(wǎng)或公網(wǎng)主機(jī)一般是公有IP地址,私有IP地址在公網(wǎng)上會(huì)被丟棄,導(dǎo)致數(shù)據(jù)無法正常傳輸。因此為達(dá)到內(nèi)網(wǎng)與外網(wǎng)正?;ネǖ男Ч?,必須引入NAT機(jī)制。
NAT是Network Address Translation的縮寫,意即“網(wǎng)絡(luò)地址轉(zhuǎn)換”,實(shí)現(xiàn)IP數(shù)據(jù)報(bào)中的源IP地址和目的IP地址的轉(zhuǎn)換,其基本原理如圖2所示。
圖2描述了NAT網(wǎng)絡(luò)地址轉(zhuǎn)換的基本流程,內(nèi)網(wǎng)主機(jī)IP地址為192.168.79.2,NAT主機(jī)包含兩張網(wǎng)卡分別為eth0和eth1。其中eth1與內(nèi)網(wǎng)處于同一網(wǎng)段,其IP地址為192.168.79.1,eth0與外網(wǎng)連接,其IP地址為10.10.10.1,經(jīng)過若干路由節(jié)點(diǎn)后可與IP地址為1.2.3.4目標(biāo)主機(jī)通信。
圖2左側(cè)為一個(gè)請(qǐng)求數(shù)據(jù)包從內(nèi)網(wǎng)發(fā)送至外網(wǎng)過程中源IP的目的IP的轉(zhuǎn)換情況,右側(cè)為響應(yīng)數(shù)據(jù)包從外網(wǎng)返回至內(nèi)網(wǎng)過程中源IP和目的IP的轉(zhuǎn)換情況。數(shù)據(jù)包從內(nèi)網(wǎng)主機(jī)發(fā)出時(shí),源IP為192.168.79.2,目的IP為1.2.3.4。數(shù)據(jù)包傳送至eth1時(shí),源IP和目的IP不變。經(jīng)NAT轉(zhuǎn)換后,數(shù)據(jù)包從eth0出來時(shí),目的IP不變,源IP由192.168.79.2變?yōu)?0.10.10.1(圖中左側(cè)灰色部分),這是分配給eth0的IP。數(shù)據(jù)包再經(jīng)過干路由節(jié)點(diǎn)后抵達(dá)外網(wǎng)主機(jī)1.2.3.4。
外網(wǎng)主機(jī)的響應(yīng)數(shù)據(jù)包發(fā)出時(shí),源IP為1.2.3.4,目的IP為10.10.10.1。數(shù)據(jù)包經(jīng)過若干路由節(jié)點(diǎn)后到達(dá)eth0時(shí),源IP和目的IP不變,經(jīng)NAT轉(zhuǎn)換后,數(shù)據(jù)包由eth1轉(zhuǎn)發(fā)至內(nèi)網(wǎng)時(shí),源IP不變,目的IP由10.10.10.1變換為192.168.79.2(圖中右側(cè)灰色部分)。依照IP地址,數(shù)據(jù)包最終返回至內(nèi)網(wǎng)主機(jī)192.168.79.2。以上則是圖3所描述的NAT機(jī)制基本原理和總體工作流程[4]。
圖3 NAT基本原理
(2)SNAT與DNAT原理
NAT機(jī)制在工作過程中,有兩個(gè)重要概念即SNAT和DNAT。改變Source IP的環(huán)節(jié)稱為SNAT,改變Destination IP的環(huán)節(jié)稱為DNAT。這屬于NAT內(nèi)部的工作原理,如圖4所示。最外層的方框代表一個(gè)包含兩張網(wǎng)卡的主機(jī),假設(shè)有一個(gè)數(shù)據(jù)包由eth1接口進(jìn)入,從eth0接口離開,該數(shù)據(jù)包會(huì)經(jīng)過3個(gè)不同的環(huán)節(jié),其先后順序分別為PREROUTING、路由表、POSTROUTING。類似的,若數(shù)據(jù)包是由eth0接口進(jìn)入并由eth1接口離開,數(shù)據(jù)包同樣會(huì)經(jīng)過這三個(gè)環(huán)節(jié),并且順序相同。
PREROUTING主要是按照預(yù)置規(guī)則去修改數(shù)據(jù)包的Destination IP,執(zhí)行DNAT任務(wù)。從圖4可知,PREROUTING總是在NAT機(jī)制的最前端,數(shù)據(jù)包一旦進(jìn)入NAT機(jī)制其目的地址就會(huì)按規(guī)則進(jìn)行更新。
POSTROUTING與PREROUTING正好相反,該環(huán)節(jié)主要是按照預(yù)置規(guī)則去修改數(shù)據(jù)包的Source IP,且位于NAT機(jī)制的最末端,數(shù)據(jù)包在離開NAT機(jī)制前,其源地址也會(huì)按規(guī)則進(jìn)行更新[5]。
NAT機(jī)制既可應(yīng)用在服務(wù)器端也可應(yīng)用在客戶端,除了進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換外,NAT機(jī)制還有更深遠(yuǎn)的意義。在客戶端的NAT機(jī)制可達(dá)到隱藏客戶端IP和節(jié)省公網(wǎng)IP的效果,從而保護(hù)客戶端主機(jī)免遭來自互聯(lián)網(wǎng)的網(wǎng)絡(luò)攻擊。在服務(wù)器端的NAT機(jī)制主要用途是保護(hù)服務(wù)端主機(jī)在互聯(lián)網(wǎng)上的安全。
圖4 數(shù)據(jù)包流向與SNAT和DNAT之間的關(guān)系
(1)測(cè)試環(huán)境
根據(jù)常見內(nèi)網(wǎng)穿透應(yīng)用場景,搭建如圖5的實(shí)驗(yàn)環(huán)境,利用樹莓派Zero W對(duì)A網(wǎng)段和B網(wǎng)段進(jìn)行內(nèi)網(wǎng)穿透。樹莓派Zero W通過USB接口與A網(wǎng)段進(jìn)行網(wǎng)絡(luò)通信,通過WIFI與B網(wǎng)段建立網(wǎng)絡(luò)通信。
圖5 iptables內(nèi)網(wǎng)穿透方案
(2)配置指令
如果將A網(wǎng)段視為內(nèi)網(wǎng),B網(wǎng)段視為外網(wǎng),則一般認(rèn)為主機(jī)B準(zhǔn)備穿透內(nèi)網(wǎng)訪問服務(wù)器A。從主機(jī)B發(fā)出的請(qǐng)求數(shù)據(jù)包經(jīng)過由eth1進(jìn)入樹莓派時(shí),目的IP不更新,而從eth0離開前要進(jìn)行源IP的更新,即經(jīng)過POSTROUTING環(huán)節(jié),執(zhí)行SNAT操作。對(duì)應(yīng)的iptables配置語句如下:
“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.0/24 -j SNAT --to 192.168.79.1”,指令具體解釋見表2。該配置語句對(duì)請(qǐng)求數(shù)據(jù)包執(zhí)行了SNAT操作,iptables會(huì)自動(dòng)執(zhí)行響應(yīng)數(shù)據(jù)包的DNAT操作,簡化了用戶配置流程。
表2 iptables配置指令解釋
上述方案中樹莓派的兩張網(wǎng)卡IP地址默認(rèn)是固定的,而實(shí)際應(yīng)用場景中,網(wǎng)卡IP地址可能會(huì)隨機(jī)分配,因此iptables配置語句可以更新為:“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.0/24 -j MASQUERADE”該語句中的“MASQUERADE”表明源地址與對(duì)應(yīng)網(wǎng)卡地址始終保持一致。
(3)測(cè)試結(jié)果
按照?qǐng)D5的iptables內(nèi)網(wǎng)穿透方案執(zhí)行,從主機(jī)B訪問服務(wù)器A(IP:192.168.79.128)上IIS7的Web服務(wù),可見IIS7的歡迎界面,表明iptables內(nèi)網(wǎng)穿透成功,如圖6所示
圖6 服務(wù)器A響應(yīng)的IIS7歡迎界面
SSH 為 Secure Shell 的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定,SSH為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議,是一種專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議[6]。SSH 會(huì)自動(dòng)加密所有 SSH 客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)。但同時(shí)還提供了一個(gè)非常有用的功能,即端口轉(zhuǎn)發(fā)。它能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過 SSH 鏈接來轉(zhuǎn)發(fā),并且自帶相應(yīng)的加解密服務(wù)。這一過程有時(shí)也被稱為“隧道”(tunneling),這是因?yàn)?SSH 為其他 TCP 鏈接提供了一個(gè)安全的數(shù)據(jù)傳輸通道。例如,Telnet,SMTP,LDAP 這些 TCP 應(yīng)用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時(shí),如果防火墻限制了一些網(wǎng)絡(luò)端口的使用,但允許 SSH 的連接,那么也能將 TCP進(jìn)行端口轉(zhuǎn)發(fā),進(jìn)而使用 SSH 進(jìn)行通訊。
SSH 端口轉(zhuǎn)發(fā)能夠提供兩大功能:一是加密 SSH Client 端至 SSH Server 端之間的通訊數(shù)據(jù),二是突破防火墻的限制完成一些之前無法建立的 TCP 連接[7]。
SSH端口轉(zhuǎn)發(fā)主要分為本地端口轉(zhuǎn)發(fā)和遠(yuǎn)程端口轉(zhuǎn)發(fā)兩大類。
(1)SSH本地端口轉(zhuǎn)發(fā)
圖7左側(cè)是本地端口轉(zhuǎn)發(fā)基本模型,主機(jī)A與主機(jī)B之間能相互訪問,主機(jī)B與主機(jī)C之間能相互訪問,但由于防火墻規(guī)則限制或者網(wǎng)段不同等原因?qū)е轮鳈C(jī)A無法訪問主機(jī)C。此時(shí),主機(jī)A可以通過SSH的方式連接上主機(jī)B,將數(shù)據(jù)包通過主機(jī)B轉(zhuǎn)發(fā)至主機(jī)C。對(duì)于端口轉(zhuǎn)發(fā)而言,將主機(jī)A的8080端口內(nèi)容映射至主機(jī)C的80端口。所有對(duì)主機(jī)A的8080端口訪問都將被主機(jī)B自動(dòng)轉(zhuǎn)發(fā)至主機(jī)C的80端口。其中,主機(jī)A與主機(jī)B之間的通信是SSH協(xié)議,因此也被稱為安全隧道,而主機(jī)B與主機(jī)C之間的通信則是普通的HTTP協(xié)議。由于是主機(jī)A發(fā)起SSH連接,同時(shí)也在主機(jī)A上開啟監(jiān)聽端口,因此該模式被稱為SSH本地端口轉(zhuǎn)發(fā)。
(1)SSH遠(yuǎn)程端口轉(zhuǎn)發(fā)
圖7右側(cè)是遠(yuǎn)程端口轉(zhuǎn)發(fā)基本模型,與本地端口轉(zhuǎn)發(fā)不同的是,受限于防火墻等規(guī)則限制,主機(jī)A無法連接主機(jī)B,但主機(jī)B可以連接主機(jī)A,主機(jī)B和主機(jī)C可以相互通信,主機(jī)A與主機(jī)C之間無法通信。這種情況下,從主機(jī)A向主機(jī)B發(fā)送SSH請(qǐng)求是無法實(shí)現(xiàn)的,因此本地端口轉(zhuǎn)發(fā)不可行,只能采用遠(yuǎn)程端口轉(zhuǎn)發(fā)。在主機(jī)B上使用SSH連接主機(jī)A,并在主機(jī)A上建立一個(gè)socket監(jiān)聽8080端口,它是主機(jī)C上80端口的映射端口,所有訪問主機(jī)A上8080端口的請(qǐng)求都將由主機(jī)B轉(zhuǎn)發(fā)至主機(jī)C上的80端口。與本地端口轉(zhuǎn)發(fā)類似,主機(jī)A和主機(jī)B之間的通信采用SSH協(xié)議,主機(jī)B和主機(jī)C之間的通信是HTTP協(xié)議[8]。由于是主機(jī)B發(fā)起SSH連接,但監(jiān)聽端口卻是在主機(jī)A上開啟,因此該模式被稱為SSH遠(yuǎn)程端口轉(zhuǎn)發(fā)模式。
圖7 兩類端口轉(zhuǎn)發(fā)模型
(1)測(cè)試環(huán)境
根據(jù)常見內(nèi)網(wǎng)穿透應(yīng)用場景,搭建如圖8的測(cè)試環(huán)境,利用樹莓派Zero W使用SSH端口轉(zhuǎn)發(fā)的方式對(duì)A網(wǎng)段和B網(wǎng)段進(jìn)行內(nèi)網(wǎng)穿透。樹莓派Zero W通過USB網(wǎng)卡以eth0的名稱接服務(wù)器A,通過WIFI以eth1的名稱連接主機(jī)B??赏瑫r(shí)使用SSH本地轉(zhuǎn)發(fā)和SSH遠(yuǎn)程轉(zhuǎn)發(fā)兩種方式進(jìn)行內(nèi)網(wǎng)穿透測(cè)試。
圖8 SSH內(nèi)網(wǎng)穿透方案
(2)配置語句
配置語句基本結(jié)構(gòu)為:“ssh [-配置指令] 準(zhǔn)備開啟監(jiān)聽端口的IP地址:準(zhǔn)備開啟的監(jiān)聽端口號(hào):目標(biāo)IP地址:目標(biāo)端口號(hào)登錄名@本命令執(zhí)行端IP地址”。
SSH本地轉(zhuǎn)發(fā)的配置語句為:“ssh -L 0.0.0.0:8080:192.168.79.128:80 -fgN root@192.168.79.1”,該語句應(yīng)當(dāng)在eth1端執(zhí)行。
SSH遠(yuǎn)程轉(zhuǎn)發(fā)的配置語句為:“ssh -R 192.168.101.1:8080:192.168.79.128:80 -fgN root@192.168.101.1”,該語句應(yīng)當(dāng)在eth0端執(zhí)行。
表3 SSH端口轉(zhuǎn)發(fā)指令解釋
(3)測(cè)試結(jié)果
按照上述SSH內(nèi)網(wǎng)穿透方案執(zhí)行,若要從主機(jī)B訪問服務(wù)器A(IP為192.168.79.128:80)上IIS7的Web服務(wù),實(shí)際應(yīng)訪問代理地址192.168.101.1:8080(eth1上的8080端口),結(jié)果展示了IIS7的歡迎界面,表明SSH內(nèi)網(wǎng)穿透成功,與圖5類似。
本文對(duì)內(nèi)網(wǎng)穿透基本模型以及iptables、SSH兩種內(nèi)網(wǎng)穿透方式進(jìn)行了研究,并以樹莓派Zero W為橋接載體,對(duì)兩種方案進(jìn)行了實(shí)現(xiàn),能達(dá)到預(yù)期的內(nèi)網(wǎng)穿透效果。在實(shí)際工作中,通過樹莓派Zero W實(shí)現(xiàn)來內(nèi)網(wǎng)穿透的方案具兼具便攜性和功能性,可為內(nèi)網(wǎng)穿透的實(shí)踐提供參考。
[1]張璘,許自程,馮陳偉.基于樹莓派的遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2018,42(10):92-97.
[2]薛海彬,彭小苗,顏錦奎.基于樹莓派的頻率合成器系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2018,41(16):125-131.
[3]趙亞楠,馬兆豐.Linux中Netfilter/iptables的研究與應(yīng)用[J].中國科技論文,2014,9(10):1174-1177+1187.
[4]黃云澤.用iptables在云主機(jī)上實(shí)現(xiàn)端口轉(zhuǎn)發(fā)[J].網(wǎng)絡(luò)安全和信息化,2020(09):60-64.
[5]余飛,楊波.Linux下基于Netfilter/Iptables防火墻的研究與應(yīng)用[J].齊齊哈爾大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,31(03):53-58.
[6]曾德愚.利用SSH實(shí)現(xiàn)多種端口轉(zhuǎn)發(fā)[J].數(shù)字技術(shù)與應(yīng)用,2016(09):214.
[7]李鴻揚(yáng). 基于SSH反向隧道技術(shù)的智能家居遠(yuǎn)程安防監(jiān)控系統(tǒng)的設(shè)計(jì)與研究[D].福州大學(xué),2018.
[8]陶曉玲,伍欣,亢蕊楠.基于樹莓派的隱蔽式滲透測(cè)試方法[J].電子技術(shù)應(yīng)用,2016,42(06):94-97.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年10期