写点什么

谷歌、Twitter 先后开始远程办公,工程师发文吐槽:VPN 都是垃圾

2020 年 3 月 03 日

谷歌、Twitter先后开始远程办公,工程师发文吐槽:VPN都是垃圾

前段时间,由于国内疫情严重,不少科技公司开启了远程办公,工程师吐槽 VPN 服务器因负载过高频频崩溃。如今,国外疫情严重,谷歌、Twitter 等大厂也开始进入远程办公。不料,国外工程师更加暴躁,直接评价:所有 VPN 都是垃圾。


因疫情全球蔓延,国外科技大厂开启远程办公

由于新冠病毒开始在全球肆虐,欧洲和亚洲各地区企业和组织开始效仿中国,采取远程办公的方式防止新冠病毒的传播。一些高风险地区,每天有数百万人在家办公,线上压力比以往任何时候都要大。而且有迹象表明,随着新冠病毒感染人群的攀升,未来几天或几周内大部分受波及地区都会采取在家远程办公的方式工作。


由于有员工报告出现流感症状,谷歌已要求其都柏林欧洲总部约 8000 名员工在家中工作。谷歌发言人称,将继续采取预防措施,以保护员工的健康和安全。Twitter 也在周一表示,由于担心新冠病毒疫情的蔓延,公司“强烈鼓励”所有近 5000 名全球员工在家办公。Twitter 此前表示,公司将暂停一切非重要的公司商旅活动,优化内部会议、全体员工大会以及其他重要任务安排,以确保远程办公人员参与进来。


一些公司已经拥有了内部 Slack 和 Zoom 系统,员工可以选择使用哪种办公方式办公。但是一组与新冠病毒相关的最新数据表明,拥有这类远程办公系统的公司少之甚少,绝大多数公司都是第一次使用远程办公系统。


这些远程办公软件的实际使用率是怎样的?Google 给了我们一些提示:



在搜索引擎反映出来的数据可以看出,Zoom、 Slack 和 Microsoft Teams 的关键词搜索数量在以惊人的速度增长。


  • Zoom 的搜索量在韩国增加了 525%,在日本增加了 150%,在意大利增加了 104%;

  • Slack 的搜索量在韩国增长了 17%,在日本保持平稳,在意大利增长了 19%;

  • Microsoft Teams 搜索量在韩国增长了 186%,在日本下降了 17%,在意大利增长了 108%;


疫情期间,远程办公软正经历着(或即将经历)销售、试用和新用户增长的繁荣期。尽管额外的流量基本上是免费的,营销效率却是飞速增长,但是有些软件服务团队却因用户体量如此巨大而不堪重负。由于疫情期间用户激增,许多市面上流行的远程办公工具存在着宕机、延迟或技术 bug 的问题,有员工也因此吐槽:远程工具实在是太难用了!


工程师激烈吐槽:企业 VPN 糟透了

当企业纷纷开启远程办公模式,为了访问企业内网,不少公司给员工提供了企业 VPN。然而,根据一些员工在社交网络上的反馈,企业 VPN 不太好用:一方面是因为突然之间要承受巨大的访问量,导致经常有员工被卡掉线;另一方面则是企业 VPN 的安全性有待提升。


技术专家 Matthew Sullivan 在自己的博客上专门写了一篇文章来吐槽企业 VPN 的安全性问题,当然更重要的是,他提出了一些可行的选择和搭建方案。


首先,他的观点是:


尽量别用 VPN。


为什么?因为:


所有的 VPN 都是垃圾。


他认为,VPN 也需要精心配置,否则黑客就能够找到可乘之机。更重要的是,这种精心配置只存在于理论层面,现实用户几乎不会在这方面下什么心思!


在 99.95%的情况下,VPN 的设置都采取以下方式:


  1. 桥接一台网络设备——例如笔记本电脑甚至是另一台服务器

  2. 接入更庞大的服务器网络——例如云端或者内部环境

  3. 跨越互联网——利用额外的加密层进行保护



在 Matthew 看来,这显然不是什么好主意。如果笔记本电脑存在恶意软件,而且通过 VPN 接入了生产网络,该怎么办?恶意软件会因此获得对生产基础设施的本地网络访问权限,后果显然相当严重。


此外,黑客也可以通过 VPN 设备或者软件漏洞入侵 VPN 本体,从而回避安全检查并直接接入目标网络,这种情况可不是没出现过,之前影响巨大的 Heartbleed 漏洞就可以被用于劫持 VPN 访问。


关于 VPN 安全漏洞的消息层出不穷,全球范围内的攻击者都在迅速利用这些漏洞访问目标网络。更要命的是,这些系统直接面向互联网公开,而且没有配备任何保护机制。再者,修复程序往往无法自动执行,而且要求运营者在专有操作系统上运行专有软件管理方案中的专有更新机制。


接下来的问题就是,在互联网上找到公司 VPN 设备的难度有多大?Matthew 说,在撰写本文之前,他并不是非常确定,所以就这个问题在 Shodan.io 上花了 30 分钟左右学习了一番。下面来看相关结论:


  • SAP Concur——入侵活动与开支管理服务,有大量个人身份信息与付款信息

  • Progressive Insurance——个人身份信息与个人健康信息,也包括一部分付款信息

  • Chevron Phillips Chemical——这是一家知名化工企业,其他的应该不用多谈了


简单一翻,就找到了这么多大公司直接暴露在互联网上的 VPN。问题确实很严重。那么,有没有可靠的解决办法?


如何保证 VPN 的安全性?

零信任

Matthew 给出的首个解决方法是“零信任”。


零信任的基本概念是对所有连接操作进行独立授权,也就是尽可能避免对网络之内的任何内容做出可信假设。


为了轻松实现对生产服务器的零信任登录,他给出了选择对应解决方案的三个理由:


1. 以 OpenSSH 核心完善而来

从底层来看,解决方案平台最好是一套拥有良好管理配置的 OpenSSH(即计算机上的 ssh 命令)部署方案。OpenSSH 经过严格测试,是一款相当安全的远程管理解决方案。自 2003 年以来,OpenSSH 从未因默认配置中的漏洞而遭遇未经授权的远程访问。


该网络入口点本身相当于一个基于 Amazon Linux 2 的单功能 EC2 实例,简单的结构意味着其攻击面非常有限。请注意:VPN 设备的一大问题,在于需要匹配专有软件/操作系统配置——这类配置正是阻碍自动修复程序的元凶。只要能够对网络入口点以及其他基础设施实现自动修复,就能在这场安全对抗当中占得先机。


2. 不存在网络桥接

之前提到过,大多数 VPN 在配置中都会将网络设备(例如笔记本电脑)桥接至互联网上规模更大的服务器网络当中。关于 VPN,Matthew 表示,他个人最接受不了的一点就是它劫持掉了用户的所有网络流量。虽然可以通过配置分出部分流量,但客户以及 NIST 800-53 SC-7(7)等安全控制条款往往要求采取这种全流量转发的方式。


可以看到,这里的安全控制思路已经远远落后于行业实际情况。在过去,VPN 可能是唯一的流量加密解决方案。审计人员往往认为,如果没有 VPN 的保护,用户可能会通过未经加密的通道发布保密信息。但在另一方面,这也意味着最终用户的普通 Slack 流量也会通过生产 VPC 进行传递。


好在还有更合理的办法。在 OASA(一种可行的解决方案)模式下,用户与服务器之间的连接拥有独立代理。例如,提交“我想加入 EC2 实例 i-028d62efa6f0b36b5”这条请求,会让系统首先跳至网络入口点,而后再次跳转至目标服务器。OASA 还会在单点登录供应商完成身份验证之后,再验证请求发出方是否在受信内部设备上预先注册并获得批准。最后,OASA 发布客户端凭证,在接下来的 10 分钟之内持续保护这些跃点。


这让接入后的活动空间变得非常有限。管理员可以登录至网络入口点,再根据需要将端口转至另一目标——但在建立任何连接时,操作者都需要明确请求,且系统在默认情况下会拒绝一切请求。最重要的是,因为这套体系跟 VPN 没关系,所以不需要通过生产 VPC 来路由一切有必要和没必要的网络流量。


3. 网络访问范围与随机 IP

这些网络入口点基于各个 VPC 进行部署(例如某个 VPC 用于生产、某个用于分段、某个用于开发等)。此外,主机保护解决方案会对每个应用程序进行严密监控,记录应用的所有活动并执行流量过滤。如此一来,即使攻击者成功侵入网络入口点位置,其实也没有什么后续空间可以利用。无论如何,这套安全模式都不会因为访问者已经进入 VPC 而允许其随意访问一切受保护资源。


企业端口敲门

实际应用场景中,几乎没人会使用端口敲门,但设置起来却非常有趣。简而言之,端口敲门是对各个封闭的网络端口建立命中序列,只有按正确顺序进行操作,才会打开“真实”端口供您的 IP 使用。听起来挺好,但在实际应用中缺乏可行性。


但端口敲门的基本原理给了 Matthew 启发,让他开始考虑如何对这个概念进行迭代,他将这种解决方法称为“企业端口敲门”。


Matthew 说,想创建一种机制,确保网络入口点与互联网防火墙始终保持隔离,直到有用户发起访问。这种机制必须易于使用、可靠性高,而且能够通过现有身份提供程序执行身份验证。


于是他草拟出这套机制的基础架构,然后把结果提交给工程技术团队。几周之后,方案就被投入生产环境。


这项服务非常简单,可通过 AWS API Gateway 访问 AWS Lambda 函数(无服务器架构),整个使用体验简单可靠。下面来看该机制的基本原理:


  1. 用户通过单点登录成功完成身份验证

  2. 应用遍历已经配置完成的 AWS 账户,找到带有特定标签的安全组(安全组,即 AWS 中的防火墙规则)

  3. 应用对安全组进行更新,批准访问者的 IP 地址。安全组规则拥有一个包含创建时间的标签。

  4. 清除 cron 定期运行,在可配置时间后删除之前的 IP 授权清单。


在这项服务的支持下,Matthew 团队建立起一套远程访问解决方案。这套方案与互联网完全隔离,砸到能够在开启防火墙端口之前通过的用户目录进行双因素身份验证。


简单易行的工具

虽然听起来有点复杂,但整个登录流程其实非常简单:


  1. 单点登录(如果尚未登录)

  2. 在 SSO 门户中点击企业端口敲门连接器

  3. 在终端内,使用 SSH 命令并将目的地声明为所需的 EC2 实例 ID。OASA 非常聪明,只需要指定要使用的网络入口点,其余流程都能自动完成!



对基础设施管理者来说,这套新方案给合规计划以及客户安全带来了巨大的提升。用户非常享受这种轻松易行的服务器访问体验,而且无需进行二次身份验证或者记住需要使用哪一个 VPN。


结 语

疫情的阴霾下,自由呼吸、平安出入的生活、工作环境显得弥足珍贵,但是现在,疫情的影响还在持续,全球科技企业受到的影响也在不断扩大,远程办公或许能解决一些问题,但毕竟不是良久之策。希望在全球医务、科研工作者的共同努力下,疫情能够得到及时控制。


2020 年 3 月 03 日 14:2313799

评论 8 条评论

发布
用户头像
公司如果统一要用VPN没有问题, 但是一定要在测试成功后, 做个人或者一般小牌子的VPN是没有办法承受公司级别的。 所以公司购买前需要特别注意VPN公司的背景和实力。还有他们更新的更新速度。推荐的两个公司级别是Nord Team和Surfshark. 我们现在国内分公司和德国总部都在使用。
2020 年 04 月 10 日 20:27
回复
用户头像
VPN提供的是安全接入方案,只是企业远程办公安全中的一环,并不能代替防火墙、IPS、旁路审计、堡垒主机等设施。
IPSec支持IP载荷直接传输的非桥接模式。该协议是经过大量安全研究者分析过的,其他协议不说实现本身协议安不安全就是个问题。而且协议问题的发现需要时间。
专家文中提到的企业外的电脑存在恶意软件的问题与是否使用VPN无关,黑客可以通过注入openssh、浏览器修改软件功能达到攻击目的。该问题目前主要还是靠企业内网的安全设施有限的被动解决。内网安全也是安全领域的一个研究热点。
VPN是计算密集型应用,不仅要进行流量加解密还有哈希防报文篡改,在线用户数过高算不过来必然导致丢包掉线,稍微复杂一点的网络设备都是这样。出现掉线首先应该考虑是不是超出了VPN设备的承载能力。
最后,涉密不联网,联网不涉密,因为安全漏洞总会有,防不胜防。
展开
2020 年 03 月 10 日 21:26
回复
用户头像
搞内网的公司都是垃圾
2020 年 03 月 07 日 18:44
回复
用户头像
企业端口敲门,有看明白的,交流一下,微q同号2338953
2020 年 03 月 04 日 22:29
回复
用户头像
Nebula 这样的 scalable & secure overlay network 用来替代 VPN 提供对基础架构的访问,更好。
2020 年 03 月 04 日 16:26
回复
用户头像
现有的 VPN 方案确实都垃圾 IPsec (基于 strongSwan 的算好的了),但 IPsec 本身的复杂度让配置变得麻烦,而且不同客户端的支持也有管理成本。OpenVPN 性能比较差。而商业的要特定的客户端...

WireGuard 和基于 WireGuard 的方案不错,性能好,配置相对简单。但无法做到对付 GFW ... 当然墙外没有这个需求。

另外,最
2020 年 03 月 04 日 16:25
回复
用户头像
翻译的很烂。还是写的很烂?如果VPN会暴露出来,那么没有VPN,把内网设备直接暴露在公网,是不是更恐怖😱
2020 年 03 月 04 日 14:55
回复
用户头像
公司网络不好,不是vpn的事情,用第三方vpn服务,钱不到位,没啥用
2020 年 03 月 03 日 17:00
回复
没有更多了
发现更多内容

Flink 1.10 SQL、HiveCatalog 与事件时间整合示例

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

读懂才会用 : 带你见识 Redis 的 zset

小眼睛聊技术

redis 学习 程序员 架构 redis6.0.0

ARTS 01 - 技术人的理想主义

jerry.mei

算法 Vue 练习 ARTS 打卡计划 ARTS活动

Java 走过的创新25年

田晓旭

Java25周年

Flink Weekly | 每周社区动态更新-20200520

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

千万别学编译原理

池建强

编译原理

产品的本质,知道却看不到

Neco.W

产品 产品经理 需求 产品开发

Docker 容器优雅终止方案

米开朗基杨

Docker

吉德热泵烘干机解放阳台,引领生活品质新风尚

infoq小陈

MyBatis之启动分析(一)

ytao

mybatis Java 面试

一周信创舆情观察(5.25~5.31)

统小信uos

基础软件 操作系统 新基建

Shell 文本处理一则

wong

Shell sed grep

如何挑选一份工作

池建强

求职 找工作

JAVA后端学习路线

敖丙

Java 学习 程序员 Java25周年

分享一份阿里架构师 651 多个技术分支的脑图

奈学教育

大数据

这场大数据+AI Meetup,一次性安排了大数据当下热门话题

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Mobaxterm (安装 、汉化、使用)入门教程

Geek_Offset

centos7分区命令parted的用法(大于2T)

唯爱

普通二本,毕业三年,北漂之后,我是怎么成为程序猿的。

why技术

个人成长 程序人生 随笔杂谈 北漂

奈学教育:Hadoop源码编译全流程分享

奈学教育

原创 | TDD工具集:JUnit、AssertJ和Mockito (十六)编写测试-有条件执行测试

编程道与术

Java 编程 TDD 单元测试 JUnit

浅谈敏捷开发中的设计

czjczk

敏捷开发

OFD版式技术解析系列(一):开篇

华宇法律科技

深入理解JVM内存管理 - 堆和栈

WANDEFOUR

堆栈 深入理解JVM VM参数

入门到放弃:理清前端技术概念

大伟

Java ecmascript 前端 Node

CSS Tricks网站创始人作序推荐,这本书助你成为Web开发高手

图灵社区

CSS Web 开发 设计思维

LeetCode | 2. Reverse Integer 整数反转

Puran

Python C# 算法 LeetCode arts

手撕编译原理:汇编语言不会编

贾献华

缓存与存储的一致性策略:从 CPU 到分布式系统

伴鱼技术团队

缓存 系统设计 cpu 系统架构 架构模式

游戏夜读 | 如何管理公司?

game1night

【大厂面试02期】Redis过期key是怎么样清理的?

NotFound9

Java 数据库 redis 架构 后端

谷歌、Twitter先后开始远程办公,工程师发文吐槽:VPN都是垃圾-InfoQ