使用lodine确立DNS地道
近来我在我的一个VPS上配置了DNS地道。这项手艺对于绕过captive portals(强制登录流派),过滤器等无比有效。由于DNS是互联网不可或缺的重要服务,因此在大多数收集中通常都会放行53端口的进出数据流量。
虽然无意这些DNS要求仅限于白名单服务器或特定域,但你通常会发现DNS几乎是完全不受制约的,要是我们能控制管道的两端,那么我们就可以通过地道来传输数据。
我们可以在端口53上配置一个SSH服务器或别的类似服务器,但在某些情形下ssh协定会被过滤,从而导致地道确立失败。因此,通过DNS确立地道才是我们最佳的选择。
Iodine
为此,我们将用到一款名为iodine的工具。Iodine是一款DNS地道建造工具,通过一台DNS服务器就可觉得我们确立一个IPv4的数据通道,该工具常被渗透排泄测试人员用于防火墙绕过等场景。
Iodine由我们在服务器上运行的DNS daemon(守护进程)组成,该守护进程侦听传入的DNS要求并解包地道数据。另外,我们还有一个客户端用于处理地道的另一端。
注册DNS服务器
起首,我们要做的就是将我们的服务器注册为DNS服务器。为此,我们需要一个域名。GoDaddy上有一些无比便宜的域名,并且支持隐衷选项。如许也避免了我们的小我私人具体信息,被通过whois轻松地查找到。
获取域名后,我们必须在域名控制面板中为其设置NS记录,例如:
t1 IN NS ourdomain.com. ; note the dot!
要是你手头已有一个现成的域,无线黑客,并希翼你的iodine服务器能够使用别的的服务器,那么你可以先配置子域并注册iodine服务器的IP,然后将你的NS记录指向此子域即可。
t1 IN NS t1ns.ourdomain.com.
t1ns IN A <iodine-server-ip>
配置daemon(守护进程)
接下来我们要做的是在服务器上装置iodine。要是你当前使用的体系是基于debian的发行版,那么你可以像我同样使用apt install iodine命令进行装置。
使用下列命令运行iodine daemon:
iodined -fcP secretpassword 10.0.1.1 ourdomain.com
-f 在前台运行
-c 禁用检查所有传入要求的客户端IP地址
-P secretpassword 客户端以及服务器之间用于身份验证的同享密钥详情
10.0.1.1 是服务器将在tun接口客户端上提供的IP。客户端将在该范围内给出下一个IP。
ourdomain.com 是我们之前配置的DNS服务器的域名。
要是你想要将iodine配置为在启动时运行,你可以使用下列命令启用该服务:
update-rc.d iodine enable
和
service iodine start
来启动该服务。但你会发现此时启动会失败。想要顺利启动服务,我们必须要在/etc/defaults/iodine文件中配置daemon参数,以下:
START_IODINED true
IODINED_ARGS -c 10.0.1.1 ourdomain.com
IODINED_PASSWORD secretpassword
设置检查
基本设置实现后,我们可以通过iodine check页面来检查我们的设置是否正确。
要是设置无误但仍没法正常工作,那么请检查流量是否有被服务器上的防火墙拿获的情形。
运行客户端
在客户端机器上,我们只要运行iodine客户端即可。iodine的装置要领与上面是同样的,然后运行:
iodine -fP secretpassword ourdomain.com
你应该能够看到像Connection setup complete, transmitting data如许的输出信息。
DNS地道已成功确立!
配置代办署理
为了使我们的阅读器或其他工具能够使用地道,我们必须配置代办署理。我们将行使SSH动态端口转发,在内陆创建SOCKS代办署理,所有的数据流量都将使用DNS tunnel并通过SSH连接到我们的服务器。
通过下列命令来配置代办署理:
ssh -N -D 8080 user@10.0.1.1
-N 唆使SSH不要启动shell,因为我们只是想创建代办署理
-D 配置动态端口转发,SOCKS代办署理端口为8080
user 我们服务器上的用户
10.0.1.1 tun接口上的iodine服务器
配置实现后,我们就可以在阅读器中使用代办署理了。例如我们可以使用Firefox或Chrome中的FoxyProxy。要是统统顺利,你应该能够在阅读器中检查你的IP并获取你服务器的IP。
*参考来源:jmpesp, secist 编译,