由于dns本身的缺陷,我们日常家用网络,每一级网络出口都有流量检测设备,各运营商都有自己的dns,随后带来的dns劫持(运营商广告),dns污染(无法访问),隐私泄露(通过dns分析流量构成)等一系列问题。
自此以后,衍生出来了很多的安全产品,比如“上网行为管理”和“dns威胁情报”系统用来分析个人上网流量以及安全监控。
那么在这种情况下,对于个人而言,如何解决上述问题,确保个人隐私不被监听?
加密dns试验
反正就一句话,
只要是涉及dns的地方,我们要做的就是加密。介于涉及到某些技术,安全和隐私之间的平衡,,下面举个例子点到为止:
通常我们的网络架构是这样的,
尽管我们使用了在前半部分使用了cdn,但后半部分没有安全措施,网络仍然可以监控到: 一般云服务器会自带默认dns,问题就出在这里,这个默认dns上部署了上面我们说的各种监控,现在我们把云服务器上的dns流量加密,也就是部署一个dns over https软件;
我们安装cloudflare的warp软件
root@pentest:~# dpkg -i cloudflare_warp_2022_10_116_1_amd64_bfe553cbb1.deb
doh软件都是基于2部分,首先让server端在本机启一个dns服务,该服务负责连接上级dns,这个过程
端到端加密;
- root@pentest:~# service warp-svc status
- ● warp-svc.service - Cloudflare Zero Trust Client Daemon
- Loaded: loaded (/lib/systemd/system/warp-svc.service; enabled; vendor preset: enabled)
- Active: active (running) since Thu 2022-12-08 12:32:25 CST; 24s ago
然后是client部分:注册,设置模式为doh,会自动连接本机的dns服务;
- root@pentest:~# warp-cli register
- ...
- Success
- root@pentest:~# warp-cli set-mode doh
- Success
- root@pentest:~# warp-cli connect
- Success
部署前,服务器默认dns为某云dns,它能够监控;
- root@pentest:~# nslookup baidu.com
- Server: 183.60.83.19
- Address: 183.60.83.19#53
部署后,服务器默认使用本机解析dns;
- root@pentest:~# nslookup baidu.com
- Server: 127.0.2.2
- Address: 127.0.2.2#53
- Non-authoritative answer:
- Name: baidu.com
- Address: 110.242.68.66
- Name: baidu.com
- Address: 39.156.66.10
那么,本机dns可以用到我们需要使用的任何地方, 比如:
使用
tcpdump抓取服务器出口流量;
- tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
- ^C7344 packets captured
- 7375 packets received by filter
- 0 packets dropped by kernel
至此,服务器所有出口dns流量已全部加密,无法被监听;
赞(57)