基于树莓派的内网穿透技术研究与实现

2021-10-30 05:19韩星越
网络安全技术与应用 2021年10期
关键词:网段内网网卡

◆韩星越

基于树莓派的内网穿透技术研究与实现

◆韩星越

(77526部队 西藏 850000)

内网穿透是进行内网访问的基础,本文研究了iptables及SSH等两种内网穿透技术,结合日常应用场景,构建内网穿透模拟环境,并基于树莓派Zero W这一便携式、低功耗计算平台,进行内网穿透测试,结果表明上述两种方案都能实现内网穿透。

内网穿透;树莓派;iptables;SSH端口转发

由于部分内网存在防火墙或者IP地址限定,有的甚至还存在物理隔离,导致外部设备无法对其进行访问。如何进行内网穿透就显得尤为重要,本文利用树莓派Zero W这一微型计算平台,研究内网渗透技术并构建出一个功能强大的便携式的内网穿透工具。

1 树莓派Zero W简介

2017年3月,树莓派基金会发布了一款代号为树莓派Zero W(Raspberry Pi Zero W)的微型计算平台。树莓派Zero W是树莓派Zero的升级款,二者主要配置相同,区别在于树莓派Zero W加入了WIFI和蓝牙模块,使其具备了无线通信能力[1]。其硬件外观如图1所示。

树莓派Zero W的处理器为BCM2385,通过USB接口供电,可进行OTG扩展,通过mini HDMI接口可进行视频输出,使用BCM43438芯片实现无线WIFI和蓝牙功能,可外接摄像头[2]。

树莓派Zero W具有功耗低、尺寸小、价格便宜、功能全面等优点,完全可以胜任对性能要求不高的项目。对于本文的内网穿透应用场景,树莓派Zero W能实现相应功能且性能足够。树莓派Zero W主要参数见表1。

图1 树莓派Zero W硬件外观

表1 树莓派Zero W主要参数

2 内网穿透基本模型

“内网”顾名思义,区别于“外网”或者“公网”,一般是指企业或者团队内部使用的局域网,从外部一般无法直接访问。因此,如果打算从外部网络访问内部网络,就必须进行跨网段数据转发,即内网“穿透”,基本模型如图2所示。

内网穿透的主要任务是实现数据的跨网段转发,因此该模型包含A、B两个网段,分别代表“内网”和“外网”。模型中A网段(内网),为192.168.79.0/24,包含服务器A1、主机A2;B网段(外网)为192.168.101.0/24,包含主机B1、主机B2。A网段的主机与B网段的主机分别处于不同的局域网,中间可能还存在物理隔离,因此两个网段的主机之间无法直接通信。

当前部分内网为达到物理隔离的效果,甚至没有预留可用的网口。对于内网渗透测试而言,进行内网穿透是前提条件,因此必须创造条件进行跨网段数据转发。

图2 内网穿透基本模型

而树莓派Zero W可以基于USB实现RNDIS,实际上就是TCP/IP over USB,即在USB设备上执行TCP/IP协议,使USB设备模拟成网卡。因此树莓派Zero W可实现双网卡功能,一端通过USB接口连接内网主机,模拟出USB有线网卡(网卡A3),另一端则通过WIFI(网卡B3)与外网主机相连。此时树莓派Zero W同时接入了两个网段,关键是如何在树莓派上选择合适的方式进行跨网段数据转发,最终实现内网穿透。

树莓派Zero W是一个微型的计算平台,可运行定制版的Linux系统,在诸多跨网段数据转发方式中,本文选择其中两种合适的方式:第一种是基于iptables的转发方案,第二种是基于SSH的转发方案,方案细节见后文。

3 利用iptables实现内网穿透

3.1 iptables概述

iptables是由最新的3.5 版本 Linux 内核集成的IP信息包过滤系统,该系统有利于在Linux上更好地控制IP信息包过滤和防火墙配置。在日常工作中,部分网络运维人员也将iptables称为Linux防火墙,但这样称呼并不准确。严格来说,iptables是一个对防火墙进行配置的工具,运维人员可借助该工具来对内存中的包过滤规则执行查询、添加、删除、修改等操作[3]。iptables是在IPV4环境中使用,而IPV6环境中需要使用ip6tables。

3.2 NAT机制基本模型

(1)NAT原理

绝大多数情况下,内网主机使用的是私有IP地址,而外网或公网主机一般是公有IP地址,私有IP地址在公网上会被丢弃,导致数据无法正常传输。因此为达到内网与外网正常互通的效果,必须引入NAT机制。

NAT是Network Address Translation的缩写,意即“网络地址转换”,实现IP数据报中的源IP地址和目的IP地址的转换,其基本原理如图2所示。

图2描述了NAT网络地址转换的基本流程,内网主机IP地址为192.168.79.2,NAT主机包含两张网卡分别为eth0和eth1。其中eth1与内网处于同一网段,其IP地址为192.168.79.1,eth0与外网连接,其IP地址为10.10.10.1,经过若干路由节点后可与IP地址为1.2.3.4目标主机通信。

图2左侧为一个请求数据包从内网发送至外网过程中源IP的目的IP的转换情况,右侧为响应数据包从外网返回至内网过程中源IP和目的IP的转换情况。数据包从内网主机发出时,源IP为192.168.79.2,目的IP为1.2.3.4。数据包传送至eth1时,源IP和目的IP不变。经NAT转换后,数据包从eth0出来时,目的IP不变,源IP由192.168.79.2变为10.10.10.1(图中左侧灰色部分),这是分配给eth0的IP。数据包再经过干路由节点后抵达外网主机1.2.3.4。

外网主机的响应数据包发出时,源IP为1.2.3.4,目的IP为10.10.10.1。数据包经过若干路由节点后到达eth0时,源IP和目的IP不变,经NAT转换后,数据包由eth1转发至内网时,源IP不变,目的IP由10.10.10.1变换为192.168.79.2(图中右侧灰色部分)。依照IP地址,数据包最终返回至内网主机192.168.79.2。以上则是图3所描述的NAT机制基本原理和总体工作流程[4]。

图3 NAT基本原理

(2)SNAT与DNAT原理

NAT机制在工作过程中,有两个重要概念即SNAT和DNAT。改变Source IP的环节称为SNAT,改变Destination IP的环节称为DNAT。这属于NAT内部的工作原理,如图4所示。最外层的方框代表一个包含两张网卡的主机,假设有一个数据包由eth1接口进入,从eth0接口离开,该数据包会经过3个不同的环节,其先后顺序分别为PREROUTING、路由表、POSTROUTING。类似的,若数据包是由eth0接口进入并由eth1接口离开,数据包同样会经过这三个环节,并且顺序相同。

PREROUTING主要是按照预置规则去修改数据包的Destination IP,执行DNAT任务。从图4可知,PREROUTING总是在NAT机制的最前端,数据包一旦进入NAT机制其目的地址就会按规则进行更新。

POSTROUTING与PREROUTING正好相反,该环节主要是按照预置规则去修改数据包的Source IP,且位于NAT机制的最末端,数据包在离开NAT机制前,其源地址也会按规则进行更新[5]。

NAT机制既可应用在服务器端也可应用在客户端,除了进行网络地址转换外,NAT机制还有更深远的意义。在客户端的NAT机制可达到隐藏客户端IP和节省公网IP的效果,从而保护客户端主机免遭来自互联网的网络攻击。在服务器端的NAT机制主要用途是保护服务端主机在互联网上的安全。

图4 数据包流向与SNAT和DNAT之间的关系

3.2 iptables内网穿透方案实现

(1)测试环境

根据常见内网穿透应用场景,搭建如图5的实验环境,利用树莓派Zero W对A网段和B网段进行内网穿透。树莓派Zero W通过USB接口与A网段进行网络通信,通过WIFI与B网段建立网络通信。

图5 iptables内网穿透方案

(2)配置指令

如果将A网段视为内网,B网段视为外网,则一般认为主机B准备穿透内网访问服务器A。从主机B发出的请求数据包经过由eth1进入树莓派时,目的IP不更新,而从eth0离开前要进行源IP的更新,即经过POSTROUTING环节,执行SNAT操作。对应的iptables配置语句如下:

“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.0/24 -j SNAT --to 192.168.79.1”,指令具体解释见表2。该配置语句对请求数据包执行了SNAT操作,iptables会自动执行响应数据包的DNAT操作,简化了用户配置流程。

表2 iptables配置指令解释

上述方案中树莓派的两张网卡IP地址默认是固定的,而实际应用场景中,网卡IP地址可能会随机分配,因此iptables配置语句可以更新为:“iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.0/24 -j MASQUERADE”该语句中的“MASQUERADE”表明源地址与对应网卡地址始终保持一致。

(3)测试结果

按照图5的iptables内网穿透方案执行,从主机B访问服务器A(IP:192.168.79.128)上IIS7的Web服务,可见IIS7的欢迎界面,表明iptables内网穿透成功,如图6所示

图6 服务器A响应的IIS7欢迎界面

4 利用SSH端口转发实现内网穿透

4.1 ssh端口转发概述

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定,SSH为建立在应用层基础上的安全协议,是一种专为远程登录会话和其他网络服务提供安全性的协议[6]。SSH 会自动加密所有 SSH 客户端与服务端之间的网络数据。但同时还提供了一个非常有用的功能,即端口转发。它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自带相应的加解密服务。这一过程有时也被称为“隧道”(tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的数据传输通道。例如,Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果防火墙限制了一些网络端口的使用,但允许 SSH 的连接,那么也能将 TCP进行端口转发,进而使用 SSH 进行通讯。

SSH 端口转发能够提供两大功能:一是加密 SSH Client 端至 SSH Server 端之间的通讯数据,二是突破防火墙的限制完成一些之前无法建立的 TCP 连接[7]。

4.2 SSH端口转发基本模型

SSH端口转发主要分为本地端口转发和远程端口转发两大类。

(1)SSH本地端口转发

图7左侧是本地端口转发基本模型,主机A与主机B之间能相互访问,主机B与主机C之间能相互访问,但由于防火墙规则限制或者网段不同等原因导致主机A无法访问主机C。此时,主机A可以通过SSH的方式连接上主机B,将数据包通过主机B转发至主机C。对于端口转发而言,将主机A的8080端口内容映射至主机C的80端口。所有对主机A的8080端口访问都将被主机B自动转发至主机C的80端口。其中,主机A与主机B之间的通信是SSH协议,因此也被称为安全隧道,而主机B与主机C之间的通信则是普通的HTTP协议。由于是主机A发起SSH连接,同时也在主机A上开启监听端口,因此该模式被称为SSH本地端口转发。

(1)SSH远程端口转发

图7右侧是远程端口转发基本模型,与本地端口转发不同的是,受限于防火墙等规则限制,主机A无法连接主机B,但主机B可以连接主机A,主机B和主机C可以相互通信,主机A与主机C之间无法通信。这种情况下,从主机A向主机B发送SSH请求是无法实现的,因此本地端口转发不可行,只能采用远程端口转发。在主机B上使用SSH连接主机A,并在主机A上建立一个socket监听8080端口,它是主机C上80端口的映射端口,所有访问主机A上8080端口的请求都将由主机B转发至主机C上的80端口。与本地端口转发类似,主机A和主机B之间的通信采用SSH协议,主机B和主机C之间的通信是HTTP协议[8]。由于是主机B发起SSH连接,但监听端口却是在主机A上开启,因此该模式被称为SSH远程端口转发模式。

图7 两类端口转发模型

4.3 SSH内网穿透方案实现

(1)测试环境

根据常见内网穿透应用场景,搭建如图8的测试环境,利用树莓派Zero W使用SSH端口转发的方式对A网段和B网段进行内网穿透。树莓派Zero W通过USB网卡以eth0的名称接服务器A,通过WIFI以eth1的名称连接主机B。可同时使用SSH本地转发和SSH远程转发两种方式进行内网穿透测试。

图8 SSH内网穿透方案

(2)配置语句

配置语句基本结构为:“ssh [-配置指令] 准备开启监听端口的IP地址:准备开启的监听端口号:目标IP地址:目标端口号登录名@本命令执行端IP地址”。

SSH本地转发的配置语句为:“ssh -L 0.0.0.0:8080:192.168.79.128:80 -fgN root@192.168.79.1”,该语句应当在eth1端执行。

SSH远程转发的配置语句为:“ssh -R 192.168.101.1:8080:192.168.79.128:80 -fgN root@192.168.101.1”,该语句应当在eth0端执行。

表3 SSH端口转发指令解释

(3)测试结果

按照上述SSH内网穿透方案执行,若要从主机B访问服务器A(IP为192.168.79.128:80)上IIS7的Web服务,实际应访问代理地址192.168.101.1:8080(eth1上的8080端口),结果展示了IIS7的欢迎界面,表明SSH内网穿透成功,与图5类似。

5 结束语

本文对内网穿透基本模型以及iptables、SSH两种内网穿透方式进行了研究,并以树莓派Zero W为桥接载体,对两种方案进行了实现,能达到预期的内网穿透效果。在实际工作中,通过树莓派Zero W实现来内网穿透的方案具兼具便携性和功能性,可为内网穿透的实践提供参考。

[1]张璘,许自程,冯陈伟.基于树莓派的远程网络视频监控系统[J].电视技术,2018,42(10):92-97.

[2]薛海彬,彭小苗,颜锦奎.基于树莓派的频率合成器系统设计[J].电子测量技术,2018,41(16):125-131.

[3]赵亚楠,马兆丰.Linux中Netfilter/iptables的研究与应用[J].中国科技论文,2014,9(10):1174-1177+1187.

[4]黄云泽.用iptables在云主机上实现端口转发[J].网络安全和信息化,2020(09):60-64.

[5]余飞,杨波.Linux下基于Netfilter/Iptables防火墙的研究与应用[J].齐齐哈尔大学学报(自然科学版),2015,31(03):53-58.

[6]曾德愚.利用SSH实现多种端口转发[J].数字技术与应用,2016(09):214.

[7]李鸿扬. 基于SSH反向隧道技术的智能家居远程安防监控系统的设计与研究[D].福州大学,2018.

[8]陶晓玲,伍欣,亢蕊楠.基于树莓派的隐蔽式渗透测试方法[J].电子技术应用,2016,42(06):94-97.

猜你喜欢
网段内网网卡
部署Linux虚拟机出现的网络故障
单位遭遇蠕虫类病毒攻击
可变编组动车组制动系统TCN网络信号传输需求研究*
Server 2016网卡组合模式
网上邻居跨网段访问故障
企业内网中的数据隔离与交换技术探索
内外网隔离条件下如何实现邮件转发
挑战Killer网卡Realtek网游专用Dragon网卡
三层交换技术在大型医疗设备互联时的应用
USB故障又一原因