笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程,文章仅作为学习使用,切勿用于非法行为
文章目录
隧道技术 即使用多种加密技术在网络节点之间建立安全管道,在不受信任的网络环境中实现安全通信,它和代理功能容易混淆,简要区分如下:
- 代理:服务端处理socks、http(s)等协议请求时,将请求数据包和响应数据包进行转发,担任中间人的角色。使用代理可以利用缓存技术减少网络带宽,也可以搭建链路访问内部网络或原本无法访问的站点。
- 隧道:用ssh、http(s)、icmp、dns等协议将原始数据包进行封装,客户端和服务端在收到数据后首先要对其进行拆包,提取内部数据,相应地在发送数据前要对其进行封包。使用隧道可以在不兼容的网络上传输数据,也可以在不安全的网络上提供一个安全路径,确保客户端能与服务器能够安全通信。可以使用隧道对内部网络进行访问,本质上是流量经由隧道后再经过端口转发,搭建隧道和端口转发相当于两个过程。
本文主要介绍隧道技术,代理搭建的方法在另一篇文章讲述: 内网入口——代理搭建&端口转发
隧道大致可分为两类:
- 点到点(IP2IP):建立在网络层及以下,用于局域网之间的隧道通信,数据经过网络边界后变为明文传输
- 端到端(Port2Port):建立在传输层及以上,用于主机之间的隧道通信
可应用为PPTP、L2TP、IPSec、SOCK4/5、SSL等VPN隧道,其中PPTP和L2TP工作在链路层,IPSec工作在网络层,SOCK4/5工作在传输层,SSL工作在应用层,应根据不同的场景和需要选择相应的VPN隧道,VPN隧道技术这里不作介绍。
封装技术 即使用一种协议封装另一种协议(如:VoIP),利用网关设备拆包解析,实现不同类型网络的互连互通。
隧道和封装技术通常一起使用,下面介绍几种常见隧道&封装技术及实现方法:
(一)SSH隧道
SSH隧道提供端到端的加密,支持双向通信,主要用于:
- 将其他TCP端口的通信通过SSH连接进行转发
- 用SSH作为传输层协议,对流量自动加密
- 突破防火墙访问规则限制
注意:建立隧道(侦听端口)和访问端口(数据传输)是两个独立的过程。
1.本地端口转发
LAN主机运行SSH客户端并侦听本机端口,通过建立SSH隧道,将经过隧道的流量转发到远程主机Server指定端口,基本原理如下图所示:
图2 本地端口转发原理
实现方法:
首先修改Transfer主机SSH服务配置,在/etc/ssh/sshd_config
中配置:
PermitRootLogin yes # 默认情况下不允许以root权限登录
Port 53
PasswordAuthentication yes
systemctl restart ssh.service
重启SSH服务,然后在LAN主机 (10.10.11.131) 配置SSH隧道:
ssh -fCNg -L <listen port>:<server ip>:<server port> user@<transfer ip> -p <transfer port>
# -f:后台运行进程
# -C:压缩通信流量,提高访问速度
# -N:不执行登录shell
# -g:复用访问时作为网关,支持其他主机访问本地侦听端口
# -L:监听本机端口,SSH Client与监听端口位于同一侧
ssh -fCNg -L 7001:10.10.11.128:80 root@10.10.11.129 -p 53
# 随后LAN主机访问10.10.11.131主机的7001端口实现SSH隧道访问
2.远程端口转发
由于ACL、防火墙规则等原因,SSH与应用建立连接方向相反,此时需要SSH远程端口转发。此时,Transfer运行SSH客户端并侦听端口,通过建立SSH隧道,将LAN主机的访问流量转发到远程主机Server指定端口 (之所以称为远程端口转发,是因为SSH Client和侦听端口不在隧道同一端),基本原理如下图所示: