SSH隧道及其使用

SSH隧道及其使用,第1张

SSH隧道是一种通过加密的SSH连接传输任意网络数据的方法。它可以用来为任何应用程序添加加密通道;也可以用它来实现和跨防火墙访问局域网的服务。

SSH是一个通过不受信任的网络进行安全远程登录和文件传输的标准。通过SSH隧道传输TCP/IP数据,它还提供了一种使用端口转发保护任何给定应用程序数据流量的方法。采用了这种方法后,应用程序的数据流量都会走SSH的加密连接,从而不会被窃听或拦截。对于本身不支持加密的应用程序来说,使用SSH隧道可以很方便地添加网络安全性。

上图简要介绍了SSH隧道。不可信网络的安全连接建立在SSH客户端和SSH服务器之间。这个连接是加密的,可用于保护机密性和完整性,并且可以对通信方进行身份验证。

客户端应用使用SSH来连接到服务端应用。隧道启用后

通过上面的转发,无需修改应用程序,就能保证应用程序客户端和服务端通信的安全。

这个方式的缺点是,任何能登陆服务器的用户都可以启用端口转发。内部IT人员经常在他们的家里的机器或云上的服务器上启用转发,从而能在企业内网中,从工作机器上访问家里的机器或云上的服务器。黑客或恶意软件会利用类似的方式在局域网中留一个后门。还可以在多个设备上开启隧道,攻击者通过在这些隧道中跳来跳去来隐藏踪迹。

本地代理用于将端口从客户端计算机转发到服务端计算机。SSH客户端监听来自某个端口的连接,当它收到连接时,将请求通过隧道转发到SSH服务器;然后SSH服务器将请求转到目标端口。

本地转发比较常见的场景有:

在OpenSSH中,使用 -L 参数开启本地转发

这个命令工作的过程如下图

默认情况下,其他的机器都能够连接到本地的SSH客户端指定的端口;为了安全起见,一般绑定地址,将连接来源限制在同一主机的程序

也可以在 OpenSSH客户端的配置中 配置本地转发,这样就不用单独输入命令行了

比如在~/ssh/config中这样写

这样在开启转发的时候只需要输入 ssh serverfw 而不用再输入完整的命令了

如果希望通过本地计算机,让远程服务器 remote 可以连接到 server 上的服务,可以使用SSH远程转发。

使用SSH远程转发一个典型的用途是,在企业内部开一个后门,让公网的计算机可以访问到企业的某个内部服务,这个是有一定风险的,使用的时候需要特别小心。

在OpenSSH中,远程转发通过 -R 参数开启,在本地计算机上输入命令

上面命令的工作过程如下

默认情况下,OpenSSH仅允许从服务器主机(上图的 remote )连接到远程转发端口 server:p2 ,如果想要其他的主机也能连上 server:p2 ,需要在 sshd_config 文件中设置

如果需要指定来源IP,可以将配置改为

比如

将只允许52192173到端口8080的连接

OpenSSH的远程转发支持多个规则,比如

同样的,可以在 ~/ssh/config 配置host,比如

hw马上就开始了,突然心血来潮想做DNS Beacon上线的实验,万一hw碰上了不至于两眼黑,最起码能扯扯淡

随着目前攻击者越来越多地利用DNS通道来建立隧道与C2通信。从本地计算机到Internet的任何通信(不包括基于静态IP的通信)都依赖于DNS服务,限制DNS通信可能会导致合法远程服务的断开,因此,企业防火墙通常配置为允许UDP端口53(由DNS使用)上的所有数据包。

为了进一步做仿真模拟实验,在win7虚拟机上设置防火墙出网策略,只允许访问内网以及dns出网,但是因为windows防火墙的策略是阻断优先于放行,导致一直没有配置好环境,最终通过将阻断策略分为两条得以解决:

主机记录可以将DNS中的域名称对应到IPv4地址。

PTR可以定义某个对应的域名。

CNAME记录可以将注册的不同域名都转到一个域名记录上,由这个域名记录统一解析管理,与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址。

NS记录用来指定该域名是由哪个DNS服务器来进行解析的,可以把一个域名的不同二级域名分别指向到不同的DNS系统来解析。

TXT记录一般是为某条记录设置说明,比如你新建了一条acom的TXT记录,TXT记录内容"this is a test TXT record",然后用nslookup -qt=txt acom ,你就能看到"this is a test TXT record"的字样了。

DNS协议解析过程分为两种,迭代查询和递归查询。

本机查询本地域名服务器,这部分属于递归查询。
本地域名服务器查询根域名服务器,这部分属于迭代查询。

DNS隧道是隐蔽信道的一种,通过将其他协议封装在DNS协议中进行通信。封装由客户端完成,将DNS流量还原成正常的流量由服务器完成。DNS隧道攻击利用了防火墙放行DNS的特点以及协议解析流程来实现的。

1)直连型DNS隧道:

2)域名型DNS隧道(中继):

DNS隧道建立的过程:

DNS Beacon原理:

发送端将隐蔽数据信息切分并且编码后封装到DNS报文域名中进行传输,每一级域名长度为63,域名总长度不超过253,接收端收到DNS报文后提取域名中的隐蔽信息字段进行解码重组还原得到IP报文。主要的工具有DNSCat,Iodine等

首先配置域名的记录。将自己的域名 >分类: 电脑/网络 >> 互联网
解析:

什么是

(Virtual Private Neork):虚拟专用网络,是一门网络新技术,为我们提供了一种通过公用网络安全地对企业内部专用网络进行远程访问的连接方式。我们知道一个网络连接通常由三个部分组成:客户机、传输介质和服务器。同样也由这三部分组成,不同的是连接使用隧道作为传输通道,这个隧道是建立在公共网络或专用网络基础之上的,如:Inter或Intra。

要实现连接,企业内部网络中必须配置有一台基于Windows NT或Windows2000 Server的服务器,服务器一方面连接企业内部专用网络,另一方面要连接到Inter,也就是说服务器必须拥有一个公用的IP地址。当客户机通过连接与专用网络中的计算机进行通信时,先由ISP(Inter服务提供商)将所有的数据传送到服务器,然后再由服务器负责将所有的数据传送到目标计算机。使用三个方面的技术保证了通信的安全性:隧道协议、身份验证和数据加密。客户机向服务器发出请求,服务器响应请求并向客户机发出身份质询,客户机将加密的响应信息发送到服务器,服务器根据用户数据库检查该响应,如果账户有效,服务器将检查该用户是否具有远程访问权限,如果该用户拥有远程访问的权限,服务器接受此连接。在身份验证过程中产生的客户机和服务器公有密钥将用来对数据进行加密。

的基本配置:
工作原理:

一边服务器的网络子网为19216810/24

路由器为10010151

另一边的服务器为192168100/24

路由器为20020251。

执行下列步骤:

1 确定一个预先共享的密钥(保密密码)(以下例子保密密码假设为noIP4u)

2 为SA协商过程配置IKE。

3 配置IPSec。

配置IKE:

Shelby(config)#crypto isakmp policy 1

注释:policy 1表示策略1,假如想多配几个,可以写成policy 2、policy3┅

Shelby(config-isakmp)#group 1

注释:除非购买高端路由器,或是通信比较少,否则最好使用group 1长度的密钥,group命令有两个参数值:1和2。参数值1表示密钥使用768位密钥,参数值2表示密钥使用1024位密钥,显然后一种密钥安全性高,但消耗更多的CPU时间。

Shelby(config-isakmp)#authentication pre-share

注释:告诉路由器要使用预先共享的密码。

Shelby(config-isakmp)#lifetime 3600

注释:对生成新SA的周期进行调整。这个值以秒为单位,默认值为86400,也就是一天。值得注意的是两端的路由器都要设置相同的SA周期,否则在正常初始化之后,将会在较短的一个SA周期到达中断。

Shelby(config)#crypto isakmp key noIP4u address 20020251

注释:返回到全局设置模式确定要使用的预先共享密钥和指归另一端路由器IP地址,即目的路由器IP地址。相应地在另一端路由器配置也和以上命令类似,只不过把IP地址改成10010151。

配置IPSec

Shelby(config)#access-list 130 permit ip 19216810 000255 17216100 000255

注释:在这里使用的访问列表号不能与任何过滤访问列表相同,应该使用不同的访问列表号来标识规则。

Shelby(config)#crypto ipsec transform-set 1 ah-md5-hmac esp-des esp-md5-hmac

注释:这里在两端路由器唯一不同的参数是1,这是为这种选项组合所定义的名称。在两端的路由器上,这个名称可以相同,也可以不同。以上命令是定义所使用的IPSec参数。为了加强安全性,要启动验证报头。由于两个网络都使用私有地址空间,需要通过隧道传输数据,因此还要使用安全封装协议。最后,还要定义DES作为保密密码钥加密算法。

Shelby(config)#crypto map shortsec 60 ipsec-isakmp

注释:以上命令为定义生成新保密密钥的周期。如果攻击者破解了保密密钥,他就能够解使用同一个密钥的所有通信。基于这个原因,我们要设置一个较短的密钥更新周期。比如,每分钟生成一个新密钥。这个命令在两端的路由器上必须匹配。参数shortsec是我们给这个配置定义的名称,稍后可以将它与路由器的外部接口建立关联。

Shelby(config-crypto-map)#set peer 20020251

注释:这是标识对方路由器的合法IP地址。在远程路由器上也要输入类似命令,只是对方路由器地址应该是10010151。

Shelby(config-crypto-map)#set transform-set 1

Shelby(config-crypto-map)#match address 130

注释:这两个命令分别标识用于这个连接的传输设置和访问列表。

Shelby(config)#interface s0

Shelby(config-if)#crypto map shortsec

注释:将刚才定义的密码图应用到路由器的外部接口。

现在剩下的部分是测试这个的连接,并且确保通信是按照预期规划进行的。

最后一步是不要忘记保存运行配置,否则所作的功劳白费了。

附:参照网络安全范围,硬件设备应放置以下四个地点:

● 在DMZ的防火墙之外

● 连接到防火墙的第三个网卡(服务网络)

● 在防火墙保护的范围之内

● 与防火墙集成

的工作原理

用户连接的形式:

常规的直接拨号连接与虚拟专网连接的异同点在于在前一种情形中,PPP(点对点协议)数据包流是通过专用线路传输的。在中,PPP数据包流是由一个LAN上的路由器发出,通过共享IP网络上的隧道进行传输,再到达另一个LAN上的路由器。

这两者的关键不同点是隧道代替了实实在在的专用线路。隧道好比是在WAN云海中拉出一根串行通信电缆。那么,如何形成隧道呢?

建立隧道有两种主要的方式:客户启动(Client-Initiated)或客户透明(Client-Transparent)。客户启动要求客户和隧道服务器(或网关)都安装隧道软件。后者通常都安装在公司中心站上。通过客户软件初始化隧道,隧道服务器中止隧道,ISP可以不必支持隧道。客户和隧道服务器只需建立隧道,并使用用户ID和口令或用数字许可证鉴权。一旦隧道建立,就可以进行通信了,如同ISP没有参与连接一样。

另一方面,如果希望隧道对客户透明,ISP的POPs就必须具有允许使用隧道的接入服务器以及可能需要的路由器。客户首先拨号进入服务器,服务器必须能识别这一连接要与某一特定的远程点建立隧道,然后服务器与隧道服务器建立隧道,通常使用用户ID和口令进行鉴权。这样客户端就通过隧道与隧道服务器建立了直接对话。尽管这一方针不要求客户有专门软件,但客户只能拨号进入正确配置的访问服务器。

***错误619解决办法
详解:私设IP或路由器不支持ppTp pass through,或是此IP地址是私设IP。这种情况大数多原因为客户机连接Internet的网关(如家庭宽带路由或公司上网网关路由或防火墙)NAT-T功能关闭或对***支持性不好,主要是对GRE及PPTP协议的NAT-T不支持。可打开网关路由的NAT-T功能,如果还是出现错误,则需要更换网关设备,现在市面上大多数设备已经支持。
解决办法:更换路由器或使用L2TP协议的***连接 ,需要打L2TP***补丁!(点击这里下载)
***错误678解决办法
详解:不能建立***连接。***服务器不能到达或者此连接的安全参数没有正确配置
1打开您的路由器,***穿透打开
2更换支持***的路由器,TP-LINK 有标支持***隧道的路由器
***连接提示[错误691]解决办法
详解:由于域上的用户名或密码无效而拒绝访问
解决办法如下:
1请核对帐号密码是否输入正确,注意不要复制到空格。
2当***代理做了连接限制的时候,如果在确定账号和密码正确的情况之下提示691,很可能是因为你的帐号在别的地方登录,或者被盗用,“修改密码”稍等片刻再链接。
***连接提示[错误721]解决办法:
详解:远程计算机没反应。局域网中的机器有的可以访问***服务器,有的不能,仔细检查,发现出问题的机器是打了SP2补丁。
解决方法:
1、单击“开始”,然后单击“运行”。
2、在“打开”框中,键入 regedit,然后单击“确定”。
3、在注册表编辑器中,找到以下子项
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E972-E325-11CE-BFC1-08002bE10318}<000x>
其中 <000x> 是 WAN 微型端口 (PPTP) 驱动程序的网络适配器。
4、在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
5、键入 ValidateAddress,然后按 Enter。该值的默认设置为“1”(打开);因此,您可以通过将其设置为“0”将其关闭。
6、退出注册表编辑器。
7、重新启动计算机
***客户端拨入时出现733错误
详解:这种情况大数多原因为客户机拨入***服务器后无法获取IP地址
解决方法:可修复DHCP服务器或设置静态IP地址或地址池。
***服务器800错误解决方法
详解:不能建立***连接。***服务器不能到达或者此连接的安全参数没有正确配置
1检查配置中的“目的地的主机名或IP地址”使用的是域名而不是IP地址,
由于***隧道需要定期进行维护,我们有可能变更***隧道服务器的IP地址,但域名不会改变。
2您所在网络与我们的***隧道服务器没有正确的通道,
请尝试更换配置中的“目的地的主机名或IP地址”,将其调整为我们的登陆服务器IP地址或者域名。
3临时性故障,多半是由于您使用的DNS服务器繁忙无法对服务器IP地址
或者域名的名字进行解析所引起,可以使用以下 *** 作:开始->运行->打开:cmd->确定,执行命令ipconfig /flushdns后再进行***连接尝试。
4由于配置异常造成的无法连接,虽然用户没有做过任何的配置修改,
但由于系统内部的故障会导致配置(注册表信息)出现异常,这是Windows系统中常见的问题。
处理方法是删除原***隧道连接的配置,重新建立一个新的***隧道连接即可。
5检查连接的安全参数配置与配置要求一致。
6您机器上的防火墙规则设置过于严格,导致无法对外进行连接,请调整或关闭所有防火墙再进行尝试。
7如果有安装家庭网关的用户,也建议重启一下家庭网关设备。
另外一种情况:
由于Windows2000/XP/2003 系统缺省情况下启动了IPSec功能,因此在发起***请求时应禁止IPSec功能,需要更改注册表
Windows Registry Editor Version 500
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]
"ProhibitIPSec"=dword:00000001
修改后重启 *** 作系统即可连。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12716597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存