鉴于越来越多的指控TeamViewer 已被黑客入侵,犯罪分子以某种方式获取对启用 TeamView 的工作站的未经授权的访问,我们希望彻底屏蔽 TeamViewer。
TeamViewer 会话建立协议如何工作?我们可以使用哪些防火墙规则或其他措施来防止我们网络中的所有工作站通过 TeamViewer 进行控制?
我们有一个异构环境;控制必须在网络级别进行,而不是通过组策略之类的任何方式。
答案1
为了完整性,TeamViewer 按特定顺序使用三个不同的端口。
- TCP/UDP 端口
5938
是 TeamViewer 首选使用的端口。这也是目前 Android、Windows Mobile 和 BlackBerry 客户端使用的唯一端口。 - 如果连接失败,TeamViewer 将尝试TCP
443
接下来。这实际上是最成问题的部分,因为阻止默认 HTTPS 端口443
将阻止所有安全网站。篡改数据将涉及使用伪造的根 CA 并解密数据,如果没有它,就很难检测它是 TeamViewer 流量还是普通的 TLS 加密 HTTPS。 - 默认 HTTP 端口,TCP
80
是第三种选择。这很容易被阻止,例如使用透明代理,但完全没有必要,因为443
在此之前已经使用了。
因此,阻止网络级别来自任何客户端(包括 BYOD)将涉及:
伪造或阻止 DNS 查询
*.teamviewer.com
。如果您信任 TeamViewer GmbH 的单词(用于相反的目的):TeamViewer 软件可连接到我们位于世界各地的主服务器。这些服务器使用许多不同的 IP 地址范围,而且这些 IP 地址范围也经常变化。因此,我们无法提供我们的服务器 IP 列表。但是,我们所有的 IP 地址都有 PTR 记录,可以解析为
*.teamviewer.com
。您可以使用它来限制允许通过防火墙或代理服务器的目标 IP 地址。此外,阻止 TeamViewer 已知的 IP 地址范围,但我们很快就会发现,这可能会有问题并且难以维护:
178.77.120.0/25
;DE-HE-MASTER-EXT
; TeamViewer 有限公司159.8.209.208/28
;NETBLK-SOFTLAYER-RIPE-CUST-SS30641-RIPE
; TeamViewer 有限公司- 一些在
92.51.156.64/26
;由 Host Europe GmbH 拥有;存在误报风险... - 等等;也存在误报的风险以及将来需要删除的风险。
- 此外,非常偏执的管理员可能会利用一些深度数据包检测。
如果您不信任 TeamViewer GmbH,并且由于 TeamViewer 在端口上工作443
并且80
具有独立功能TeamViewerQS.exe
,因此组策略(例如软件限制策略) 将是一个很好的补充,它可以增强加入 AD 域的 Windows 机器的保护。
答案2
第一步 封锁DNS
TeamViewer 客户端使用端口 80 进行出站连接,很难通过端口进行阻止。因此,由于 TeamViewer 客户端必须先连接到 TeamViewer 服务器,我们可以使用另一种方法,即阻止对 *.teamviewer.com 和/或 *.dyngate.com 的每个 DNS 请求。
第二步 封锁IP地址范围
TeamViewer IP 地址范围是 178.77.120.0/24,但您必须再次检查。
答案3
当使用此方法重新访问我们的网络块时,我们发现 Teamviwer 连接到的子网和 DNS 名称与此处列出的不同。它现在连接到 router[1-16].teamviewer.com。
唯一的问题是主机遍布各地,因为他们在 ANEXIA Internetdienstleistungs 的全球各地都有服务器,而阻止子网会导致大量误报。根据 whois,这些似乎与专用服务器相关联,因此我们为这些域设置了基于 DNS 的 IP 阻止,这似乎阻止了 TeamViewr 再次连接。
如果需要获取 IP,可以使用以下脚本(基于上述脚本):
for i in $(seq 1 16);
do
a="router"$i".teamviewer.com"
b=$(dig +short $a)
echo "RESULT: $b"
if [[ "$b" == "" ]]; then
continue
fi
echo "$b" >> ip_to_block.txt
echo "$a" >> domains_to_block.txt
done
答案4
Teamviewer 应用程序始终通过 http\https 连接到其中一个服务器,例如 serverXXXXX.teamviewer.com。
运行类似这样的 bash 脚本
for i in `seq 10000 99999`;
do
a="server"$i".teamviewer.com"
b=`dig +short $a`
if [[ "$b" == "" ]]; then
continue
fi
echo "$b" >> ip_to_block.txt
done
脚本完成后,封锁 ip_to_block.txt 中的所有 IP。这将 100% 封锁所有 Teamviewer 客户端。