RouterOS上实现内网DNS劫持
因为互联网发展的早期阶段, 并没有太多的安全威胁, 因而为安全的考虑也比较少,
当时设计各种协议的时候首先考虑的"能用"! 先实现功能再说!
结果, dns这种极为重要的功能被设计成了明文的协议. 这也给某些邪恶的机构(比如? 长城宽带?)劫持DNS创造了可能.
本文就是通过ros演示如何实现这种劫持,让大家对DNS劫持有个更深入的了解.
什么是DNS劫持
DNS劫持就是通过技术手段,来控制用户解析域名的IP地址。举个例子,正常解析域名www.apple.com时应该返回IP:6.6.3.6;但现在通过DNS劫持,使域名www.apple.com解析返回IP:1.1.1.1,以达到控制www.apple.com该域名,进而控制访问www.apple.com所打开页面。这就是DNS劫持。
为什么要做DNS劫持
有了DNS劫持,我们就可以随意控制路由器下游用户的域名解析,从而达到限制、强制访问某些网站;或者在用户访问不存在的网站时给予友好的提示;或者把IIS上多个站点用主机头区分……
如何在Ros上做DNS劫持
在ROS上,可以通过对53端口的UDP访问进行dst-nat,to-address指向我们自己的dns服务器或如果Ros开启DNS服务,也可以指向Ros本身。
WinBox设置:
本例中使用ROS自带的DNS服务,ROS IP为192.168.27.254。
首先开启ROS的DNS服务:Winbox中选IP->DNS,在Static页面中点Settings,按下图设置,其中202.96.64.68和202.96.69.38按你所在地区和ISP的DNS填写。
DNS设置
确定后在Winbox中选IP->Firewall,选NAT页面,点红色加号“+”,按下图设置:
Chian=dstnat,Protocol=UDP,Dst.Port=53,Action=dst-nat,To Address=192.168.27
General页设置
Action页设置
命令行设置:
/ip firewall nat
add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=tcp to-addresses=192.168.0.1 to-ports=53
add action=dst-nat chain=dstnat disabled=no dst-address-type=!local dst-port=53 protocol=udp to-addresses=192.168.0.1 to-ports=53
/ip dns
set allow-remote-requests=yes cache-max-ttl=1w cache-size=4096KiB max-udp-packet-size=512 primary-dns=202.96.64.68 secondary-dns=202.96.69.38
设置成功的Firewall->Connections效果图:
DNS劫持效果图
可以看到去往202.96.64.68的DNS请求都被192.168.27.254回应了。
注意:如果要使用内网服务器做域名解析服务,必须在以上DNS劫持设置规则之上再添加一条允许该服务器访问外网DNS的规则,否则连内网DNS服务器的解析请求都被劫持了,就无法正常进行域名解析了。
例如内网DNS服务器IP是192.168.27.1,则需要在DNS劫持规则之上添加如下规则:
/ip firewall nat
add action=accept chain=dstnat disabled=no dst-port=53 protocol=udp src-address=192.168.27.1
排除DNS劫持
posted on 2017-10-10 09:25 kalamansi 阅读(5708) 评论(0) 编辑 收藏 举报