鄙人从事安全行业多年, 学习了很多当偷儿(不是), 是抓偷儿的本领, 年过中年深刻明白, 给公司打工拿到的薪水那是自己应得的, 只有摸鱼领到的工资才是自己赚到的。摸鱼有益身心健康自不必多说, 本文主要分享如何安全的摸鱼。
诸如后窗偷窥, 摄像头扫视, 喝水路过, 假扮保洁偷瞄这类依赖自然光散射的招数略显低级, 真正从容的老板应该躺着老板椅上拿着三折叠奏折就把员工们看个精光, 懂得都懂. 这依赖安全公司提供的各种监控软件。其中 DNS 服务就是一种常见的简单实施, 只需要在路由器的 DHCP 服务中通告自建的 DNS 服务 IP, 然后绑定员工工位和 IP, 这样就能获取员工访问的每个链接了。
HTTPS 推广开来 我们访问的内容不是加密的吗? 事实上上网笼共分三步, 第一步查询域名对应的 ip, 第二步与 IP 协商通信密钥, 第三步发送加密信息。摸鱼者千算万算不一定算得到其中第一步是未加密的, 这一步可以泄露什么信息呢, 其实就只是域名而已, 很多时候被人听到东京的小号或者加拿大的鼓点, 就已经足够了. 都说摸鱼, 没人会讨论摸的是红鲤鱼还是利捋驴, 这一步泄露的信息是足够的, 知道你在访问 _NSFW_(Not safe for work)就已经足够.
如何避免被老板或老板的爪牙抓包, 是我们当代打工人不得不认真面对的问题, 本文分享如何安全的摸鱼.
## 自行修改 DNS
由于 DHCP 通告 DNS 只是一种简单的网络检视实施, 我们也可以简单的绕过, 那就是不接受通告, 自行点开`网络`设置, 修改 DNS 为`223.5.5.5`, 这是阿里云的 DNS 服务, 污染较少, 也不会被老板怀疑.
可惜的是, `UDP:53` 是一个非常透明的远古方案, 只需要在上级路由器上设置一个简单规则, 就能把所有的 DNS 请求重定向到预设的 DNS 服务器上, 这样就能轻松的劫持 DNS 请求了.
这条规则是这样的:
```bash
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination
```
So easy, 老板还可以假装他不知道你知道他在监控你而且修改了 DNS 服务, 然后继续偷窥你到底摸了公司多少鱼.
## 使用加密 DNS
不同于 HTTPS 加密的是通信内容, DNS 加密的是通信的域名, 现今已有 DNS over HTTPS(`DoH`), DNS over TLS(`DoT`), DNS over QUIC(`DoQ`) 等加密方案.
使用加密 DNS 后唯一泄露的信息将只有加密 DNS 服务器的域名.
几大 DNS 服务商均已经支持`DoH`及`DoT`, 如 Cloudflare, Google, Quad9, Alibaba, Tencent 等.
下面列举其提供的 DoH 和 DoT 服务地址:
- Cloudflare
- DoH: `https://cloudflare-dns.com/dns-query`
- DoH: `https://one.one.one.one/dns-query`
- DoT: `tls:///cloudflare-dns.com`
- DoT: `tls://one.one.one.one`
- Google
- DoH: `https://dns.google/dns-query`
- DoT: `tls://dns.google`
- Quad9
- DoH: `https://dns.quad9.net/dns-query`
- DoT: `tls://dns.quad9.net`
海外的服务器可能会明显影响你的上网速度, 除非特殊需求, 应优先考虑国内的 DNS 服务,国内的 DNS 服务商也提供了加密 DNS 服务:
- Alibaba
- DoH: `https://dns.alidns.com/dns-query`
- DoT: `tls://dns.alidns.com`
- Tencent
- DoH: `https://doh.pub/dns-query`
- DoT: `tls://dot.pub`
这些免费服务的提供者基本都是广告大户, 用了它们的 DNS, 你的用户画像可能底裤都要画出来, 我会在其它文章分享即使 ip 变化仍能知道"你是你"的方法. 相较之下, 号称"赛博菩萨"的 Cloudflare 可能会稍微好点, 但它是如何利用用户的 DNS 查询数据我并不了解, 目前只是单纯的比较信任它.
## DNS 还能做什么
DNS 作为访问互联网的第一步, 是一个很好的监控点, 除了监控, 它还可以做一些访问控制, 如**过滤广告**, **拦截危险网站**, **拦截隐私窃取**等.
以上公开的 DNS 服务仅提供域名查询, 缺少访问控制, 这是一种应该允许自定义的能力, 每个人的需求不尽相同, 有的人能忍受一点广告, 有的人一点都忍受不了, 如果广告和内容混用域名, 甚至干脆内容都不看了. 还有很多人, 甚至无法识别广告, 看了就看了.
针对讨厌广告的人分享一个提供基础去广告能力的加密 DNS 服务,
- [AdGuardPrivate]( https://www.adguardprivate.com/)
- `DoH`: [https://public.adguardprivate.com/dns-query]( https://www.adguardprivate.com/)
- `DoT`: [tls://public.adguardprivate.com]( https://www.adguardprivate.com/)
## 如何设置
请先确认您的设备支持`DoH`或`DoT`:
- Windows 11 以后的系统已经支持`DoH`
- macOS Big Sur 以后的系统支持`DoH`及`DoT`
- iOS 14 以后的系统支持`DoH`及`DoT`
- Android 9 以后的系统支持`DoT`
- Chromium 79 以后的浏览器内核版本支持`DoH`
### Android
Android 自 Android 9 以后开始原生支持 DNS over TLS(`DoT`),2019 年以后的手机都支持。您可以通过以下方法开启:
1. 打开`设置`
2. 打开`更多连接`
3. 打开`加密 DNS`
4. 选中`指定加密 DNS 服务`, 填入: `public.adguardprivate.com`
自建 DNS 服务有各种实现方式, 如 Adguard, dnsmasq, clash 等, 只有原生 DoT 是对手机性能开销 0 影响, 它不依赖任何三方应用, 不需要任何权限, 不占用任何资源, 也不会影响手机的电量。所以推荐使用原生 `DoT` 加密 DNS 。
### Windows
Windows 11 21H2 之后的版本支持原生 Dns over HTTPS(`DoH`), 您可以通过以下方法开启:
1. 打开`设置`
2. 打开`网络和 Internet`
3. 打开`以太网`
4. 找到`DNS 服务器分配`, 点击`编辑`
1. 选择`手动`
2. 在`首选 DNS 服务器` IPv4 中填入: `111.229.178.206`
3. DNS over HTTPS(DoH)选择: 开(手动模板)
4. 在`DoH 模板`中填入: `https://public.adguardprivate.com/dns-query`
5. **不要**勾选`失败时使用未加密请求`
6. 备选 DNS 服务器您可以选填`223.5.5.5`(阿里云公共 DNS 服务), `DNS over HTTS 关`, 勾选`失败时使用未加密请求`.
### iPhone
iOS 14 以上版本支持原生 Dns over HTTPS(DoH)和 DNS over TLS(DoT)加密 DNS, 您可以通过以下方法开启:
1. 打开自带浏览器 Safari, 下载配置文件: [dot.mobileconfig]( https://www.adguardprivate.com/docs/startup/dot.mobileconfig)
2. 打开**设置**
3. 打开**通用**
4. 打开**VPN 和设备管理**
5. 选中**安装配置文件**
### macOS
macOS Big Sur 以上版本支持原生 Dns over HTTPS(DoH)和 DNS over TLS(DoT)加密 DNS, 您可以通过以下方法开启:
1. 打开自带浏览器 Safari, 下载配置文件: [dot.mobileconfig]( https://www.adguardprivate.com/docs/startup/dot.mobileconfig)
2. 打开**系统偏好设置**
3. 打开**网络**
4. 选中**VPN 和设备管理**
5. 选中**安装配置文件**
### Chromium 系浏览器(79+)
如果不希望引入系统级的加密 DNS ,或者使用的 Windows 10 及以前的版本, 可以只在浏览器中设置加密 DNS, Chromium 79+的浏览器版本支持`DoH`, 以下是 Chromium 系(Chrome/Edge/360/QQ 等)浏览器的设置方法:
1. 打开 Chrome 浏览器`设置`
1. 打开`隐私和安全`
1. 打开`安全`
1. 滚动到`高级`
1. 打开`使用安全 DNS`
1. 在`选择 DNS 提供商`中填入: `https://public.adguardprivate.com/dns-query`
## 其它信息
### Apple 设备配置文件内容
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>DNSSettings</key>
<dict>
<key>DNSProtocol</key>
<string>TLS</string>
<key>ServerName</key>
<string>public.adguardprivate.com</string>
</dict>
<key>PayloadDescription</key>
<string>Configures device to use AdGuard Home</string>
<key>PayloadDisplayName</key>
<string>public.adguardprivate.com DoT</string>
<key>PayloadIdentifier</key>
<string>com.apple.dnsSettings.managed.11b4d48d-8e9b-4e15-b7c1-45cb1c564c99</string>
<key>PayloadType</key>
<string>com.apple.dnsSettings.managed</string>
<key>PayloadUUID</key>
<string>e9819f0c-250e-49b7-ad89-c0db078c72f0</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</array>
<key>PayloadDescription</key>
<string>Adds AdGuard Home to macOS Big Sur and iOS 14 or newer systems</string>
<key>PayloadDisplayName</key>
<string>public.adguardprivate.com DoT</string>
<key>PayloadIdentifier</key>
<string>e0b7d7db-e0d1-4bce-bcf4-8ada45d2f5a3</string>
<key>PayloadRemovalDisallowed</key>
<false/>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>0404cb98-3621-4f97-9530-b18288633d40</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
```
### 终极监控方案
给员工设备装上根证书, 后边属于企业服务, 感兴趣的老板得多花些钱了.
或者把这些钱发给员工, 员工有了主人公精神, 自然就不会再摸鱼了. Maybe. |
|