V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
UserName99
V2EX  ›  程序员

为什么通过 VPN 访问内网数据比直接把服务器暴露在公网更安全?

  •  
  •   UserName99 · 2023-04-23 01:31:50 +08:00 · 7085 次点击
    这是一个创建于 615 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到本站经常有人讨论把家里某台内网设备暴露在公网上时怎么增加安全性,很多人会建议使用 VPN 访问内网设备。很多企业也是使用 VPN 访问内网服务器数据的。但是为什么使用 VPN 就会更安全呢?我理解把内网设备暴露在公网从外面访问就跟平时访问网站是差不多的,而平时访问网站是能保证安全的。比如下面几个常见场景:

    场景 1:在家里登录公司 VPN ,通过 VPN 往公司内网 GitLab 服务器提交代码。 场景 2:把公司 GitLab 服务器暴露在公网上,直接在家往 GitLab 提交代码。 场景 3:假设家里光猫有公网 IP ,通过 DDNS 和端口映射,可以实现在外面访问家里的 NAS 管理页面。 场景 4:把场景 3 改造一下,NAS 不暴露在公网上,先在树莓派上搭个 VPN 服务器,从外面先连接树莓派上的 VPN ,然后再访问内网 NAS 。

    假设上面几种情况 VPN 、Git 、NAS 都是用账号密码的方式登录的,NAS 、GitLab 已开启 https 。

    场景 2 和往 GitHub 提交代码安全性应该是一样的,既然 GitHub 能保证安全,为什么换成公司的 GitLab 就不安全了呢? 场景 4 里面,别人获取到 VPN 的账号密码就能进入内网,在场景 3 里别人获取 NAS 账号密码就能拿到 NAS 上的数据,拿到 VPN 的账号密码和拿到 NAS 的账号密码难度应该也是一样的。

    此时场景 1 和场景 4 里面,VPN 增加的安全性体现在哪里?

    43 条回复    2023-04-23 15:51:48 +08:00
    ruxuan1306
        1
    ruxuan1306  
       2023-04-23 01:35:04 +08:00
    单点网关,好审计。
    mohumohu
        2
    mohumohu  
       2023-04-23 01:49:12 +08:00
    - 场景 1 GitLab 有未修复的漏洞,被公网扫描到该服务进行攻击。VPN 避免了这个情况。
    - 场景 2 Github 也无法保证安全,只是平台足够大修复漏洞更及时。
    - 场景 3 你说的问题是存在的,但现在的商用 VPN 都有动态口令功能,就是手机上下个谷歌验证器或者类似的验证器,你只拿账号密码登不上。
    - 场景 4 NAS 的系统有 0day ,甚至有被植入勒索木马的可能,VPN 避免了这个情况。
    sky96111
        3
    sky96111  
       2023-04-23 01:51:07 +08:00 via Android
    减小服务存在漏洞时的受攻击面,而不是保障密码泄露后的安全
    yfugibr
        4
    yfugibr  
       2023-04-23 01:51:38 +08:00 via Android   ❤️ 1
    越复杂的系统潜在漏洞越多吧,vpn 本身实现很简单,服务端只需要暴露 vpn 服务,攻击面小很多
    jones2000
        5
    jones2000  
       2023-04-23 01:53:57 +08:00
    公司和个人使用是不一样的。 出了问题公司是需要有人出来背锅的。
    放公网,出了问题, 是运维部门的问题, 如果是公司人员滥用 vpn 导致公司数据泄露, 是员工的问题。
    autoxbc
        6
    autoxbc  
       2023-04-23 01:54:31 +08:00
    VPN 一般是密钥验证,强度非常高,比绝大多数服务自行实现的验证好
    qmm0523
        7
    qmm0523  
       2023-04-23 02:08:56 +08:00   ❤️ 4
    “既然 Github 能保证安全,为什么换成公司的 Gitlab 就不安全了呢”
    恕我愚钝,这二者之间除了都使用了 Git 协议,还有什么共同点嘛?

    一个问题想要证伪,只需要一个反例就可以:
    - 把 Gitlab 暴露在公网上: Gitlab 未授权 RCE CVE-2021-22205
    - 把 NAS 暴露在公网上: Synology NAS Audio Station 未授权 RCE
    可见想通过这些公网的服务进入你的内网,获取密码并不是唯一途径,甚至不是最简单的途径。
    那么有人会说,VPN 也会出现这样的问题呀?确实如此, 但是城墙上只开一个门,远比城墙上开满大大小小的门要好得多。
    fzinfz
        8
    fzinfz  
       2023-04-23 02:34:27 +08:00   ❤️ 1
    通过 vpn 进内网只是 step 1 ,然后才能进行 step 2 hack app ; step 1->2 需要时间 = 补救时间
    如果直接服务暴露公网,等于直接帮黑客快进到 step 2
    dcsuibian
        9
    dcsuibian  
       2023-04-23 04:12:03 +08:00 via Android
    基本就如前几楼所说,可以减少攻击面。
    配 https 就挺麻烦的,本来就是内网服务,数量一多更是如此。
    另外,跟大公司没有可比性。人家是提供公开服务来盈利的,有安全部门,有冗余有备份,有漏洞还可以半夜找人来修。
    murmur
        10
    murmur  
       2023-04-23 08:07:39 +08:00
    你说的对,所以还有 vpn+跳板机,都是现成的产品,买就可以了
    msg7086
        11
    msg7086  
       2023-04-23 08:19:58 +08:00
    如果你家里也有像 GitHub 那么大的专门负责网络和系统安全的团队 24 小时盯着,那确实是可以保证安全的。

    你不会以为 GitHub 也是像你一样把网站往服务器上一放然后就不管了吧?
    masterclock
        12
    masterclock  
       2023-04-23 08:20:14 +08:00
    "而平时访问网站是能保证安全的"

    ??
    这个观点是怎么来的??
    huijiewei
        13
    huijiewei  
       2023-04-23 08:23:55 +08:00
    因为只暴露一个服务就只需要关注一个服务的漏洞修复即可
    sofukwird
        14
    sofukwird  
       2023-04-23 08:32:23 +08:00 via Android
    在使用 http 提供的服务时,你的账号密码会被中间人(路由器,运营商)看光光的,所以 http 需要在可信网络下使用,可信网络一般使用 VPN 搭建(毕竟拉专线不太可能)
    Chuck123
        15
    Chuck123  
       2023-04-23 08:40:56 +08:00
    公司只需要开启 VPN 服务即可,而且对 VPN 账号都有审计。
    Soler
        16
    Soler  
       2023-04-23 08:51:38 +08:00
    我认为所有的安全,都是让人不能简单的访问,增加访问步骤。
    Greenm
        17
    Greenm  
       2023-04-23 08:53:54 +08:00
    你以为的 Github: 没有漏洞,从来没被攻击过。

    实际上的 Github: 从 16 年到现在,在 hackerone 上共花了 395 万美元,一共修复了 1312 个漏洞报告,过去 3 个月中给白帽子 34 万美元奖励。来源: https://hackerone.com/github?type=team

    你们公司有多少做安全的人,Github 有多少安全研究人员,Github 尚且如此。
    MartinWu
        18
    MartinWu  
       2023-04-23 09:01:03 +08:00
    “我理解把内网设备暴露在公网从外面访问就跟平时访问网站是差不多的,而平时访问网站是能保证安全的。”: 那你说说是什么原因使得那些网站是安全的?
    nothingistrue
        19
    nothingistrue  
       2023-04-23 09:24:10 +08:00
    你以为的 VPN ,就是个用户名密码,而且登录完之后就不用了。实际上可不是这样,而且实际上怎么样一般人也不知道,要网络专家才能回答。
    Jhma
        20
    Jhma  
       2023-04-23 09:34:30 +08:00
    针对场景 4 ,很多商用 VPN 都有二次认证,如手机验证码,USB KEY 等,不过我用开源路由实现了用户+密码+证书+手机 APP 动态码,实现了 0 费用高安全的 VPN 接入
    lvzw
        21
    lvzw  
       2023-04-23 09:40:57 +08:00   ❤️ 1
    我的理解:
    VPN:入户门装锁,每个卧室不装锁
    公网暴露:入户门不装锁,每个卧室装锁
    AlisterTT
        22
    AlisterTT  
       2023-04-23 09:53:11 +08:00
    1.一般企业内网业务多,VPN 用来减少互联网暴露面,统一互联网出口也更方便部署别的设备防火墙 WAF 流量清洗之类的。
    2.现在 VPN 应该都在推零信任了,对连接用户的行为和权限进行实时确认,并不是你一个连接加密就完事的。
    nullpoint007
        23
    nullpoint007  
       2023-04-23 10:00:22 +08:00
    把安全问题汇聚到 VPN 这里, 而不用担心别的服务的漏洞, 当然了, 入户门加锁, 室内门也加锁那就更安全了, VPN 可以用证书加密码的方式增强安全性的, 非对称加密的安全性还是杠杠滴
    xpn282
        24
    xpn282  
       2023-04-23 10:05:24 +08:00
    @lvzw 很形象的比喻了,通俗易懂
    eb0c6551
        25
    eb0c6551  
       2023-04-23 10:11:09 +08:00
    楼主的想法很合理。谷歌就是淘汰 vpn ,访问内网不需要 vpn ,而是 zero trust model: https://cloud.google.com/beyondcorp
    riggzh
        26
    riggzh  
       2023-04-23 10:23:02 +08:00
    GitLab 没事就报漏洞
    qsnow6
        27
    qsnow6  
       2023-04-23 10:24:14 +08:00
    @lvzw #20
    不是
    VPN:入户门装锁,每个卧室装锁
    公网暴露:入户门不装锁,每个卧室装锁

    公网暴露相当于直接让别人直接来到你的卧室门前。
    weijancc
        28
    weijancc  
       2023-04-23 10:26:28 +08:00
    使用 vpn 后所有流量都通过 vpn, 无需单独在路由器配置端口转发, https 虽然安全, 但如果有人知道你的 ip 和端口, 且这个服务有网页, 直接访问那就有可能导致泄露一些隐私信息..
    Jhma
        29
    Jhma  
       2023-04-23 10:33:10 +08:00
    VPN 有全局代理和局部代理之分,不同种类 VPN 配置方法不同,可以通过策略路由指定你要访问的重要目标机器,而其他流量仍然走本地互联网
    Jhma
        30
    Jhma  
       2023-04-23 10:33:47 +08:00
    @weijancc VPN 有全局代理和局部代理之分,不同种类 VPN 配置方法不同,可以通过策略路由指定你要访问的重要目标机器,而其他流量仍然走本地互联网
    blankmiss
        31
    blankmiss  
       2023-04-23 10:33:53 +08:00
    7 楼的比喻的非常好
    blankmiss
        32
    blankmiss  
       2023-04-23 10:36:47 +08:00
    @dcsuibian 配置 https 其实不太麻烦 大部分家宽公网都没有 80 443 像我就是用 10443 来作为反向代理 根据域名不同 分发到不同的服务 https 就用阿里给的免费 1 年证书就行了 还有就是找那种支持自定义端口回源的 cdn 进行反向代理 不过这种情况增加了 成本
    blankmiss
        33
    blankmiss  
       2023-04-23 10:38:34 +08:00
    @eb0c6551 内网组网 我感觉好像也是 VPN
    blankmiss
        34
    blankmiss  
       2023-04-23 10:39:27 +08:00
    tailscale 通过自己 derp server 进行内网组网 也是一个不错的选择
    weijancc
        35
    weijancc  
       2023-04-23 11:19:47 +08:00
    @Jhma 这个我知道, 刚才回复有点急, 我重点是想说 vpn 和单独开放端口的区别
    lvzw
        36
    lvzw  
       2023-04-23 11:36:29 +08:00
    我的理解:
    VPN:入户门装锁,每个卧室不装锁
    公网暴露:入户门不装锁,每个卧室装锁
    @qsnow6 是的,你的理解更准确
    adoal
        37
    adoal  
       2023-04-23 12:10:39 +08:00
    维护一堆公网可访问系统的各自安全性,成本远大于维护一个访问接入服务的安全性。
    salmon5
        38
    salmon5  
       2023-04-23 12:37:57 +08:00
    分 2 种情况:
    1 ,个人:VPN 的漏洞极少,应用软件由于业务逻辑复杂,漏洞多。
    2 ,企业:理由包含个人,另外理由是统一管理
    3kkkk
        39
    3kkkk  
       2023-04-23 13:12:23 +08:00
    这是 GPT 的回答
    VPN:VPN 是一种建立安全连接的方式,可以用于远程访问内部网络。VPN 可以提供加密和身份验证等安全功能,因此在使用 VPN 时,用户可以通过一个安全的通道访问内部网络资源。VPN 通常被认为是比较安全的方式,因为它可以确保所有流量都通过安全的隧道传输,而且只有经过身份验证的用户才能访问内部网络。但是,VPN 也有其局限性,例如需要配置和管理 VPN 服务器以及客户端,并且可能需要使用额外的硬件或软件,这可能会增加管理和维护成本。

    OpenVPN:OpenVPN 是一种基于 SSL/TLS 协议的 VPN 解决方案,提供了加密和身份验证等安全功能。OpenVPN 可以在不同的操作系统和设备上运行,因此是一种比较灵活和可扩展的解决方案。OpenVPN 也可以提供访问控制和身份验证等功能,从而可以保护内部网络资源的安全性。但是,OpenVPN 的安全性也取决于配置和管理,如果没有正确配置和管理,仍然会存在安全风险。

    将 GitLab 暴露在公网:将 GitLab 暴露在公网上,可以让外部用户访问 GitLab 服务器,但这也会带来一些安全风险。如果没有采取适当的安全措施,GitLab 可能会受到恶意攻击,例如 SQL 注入,跨站点脚本( XSS )攻击和拒绝服务攻击等。因此,为了保护 GitLab 服务器的安全,必须采取适当的安全措施,例如使用访问控制和认证机制、定期更新软件和使用安全套接字层( SSL )等。

    谈谈我的认识伤公司使用 vpn 针对的不只是 GitLab ,有可能涉及多业务系统。多角色。通过角色划分:
    业务人员:包括运营、客服等他们有可能有远程查询内部业务系统的需要,这个可以提供 vpn 账号,比把一些做的比较垃圾的后台系统暴露在公网要安全。
    技术人员:涉及运维、开发、测试。涉及多个系统和业务服务,不可能每个都暴露在公网。
    管理销售人员:远程对一些系统查看,给客户提供展示。
    lyc8503
        40
    lyc8503  
       2023-04-23 14:25:57 +08:00
    内网的服务可能有很多,全部暴露的话要确保每一个都是安全的,否则有一个漏洞整个系统就可能被入侵。

    使用 VPN 相当于在所有服务前加了一层十分强的保护。(正确配置的 Wireguard / OpenVPN 很难被攻破)
    cuixiao603
        41
    cuixiao603  
       2023-04-23 14:31:18 +08:00
    vpn 可以理解成守一个要塞,居高临下易守难攻
    Les1ie
        42
    Les1ie  
       2023-04-23 15:22:09 +08:00   ❤️ 1
    三个字:攻击面。网络安全性取决于最薄弱的一环,边界安全是第一步,之后再谈内网的安全。

    只开启 VPN 的情况下,攻击面有且仅有 VPN 程序本身。
    如果不使用 VPN 方案,那么攻击面有大量的应用。

    一个应用出问题的概率和大量应用出问题的概率不言自明,常见的 OpenVPN 或者 WireGuard 之类的 VPN 应用在历史上也很少出现严重的漏洞,比三天两头出 RCE 的 gitlab 之类的 web 应用受攻击的概率小太多了。
    a1274598858
        43
    a1274598858  
       2023-04-23 15:51:48 +08:00
    sslvpn 了解一下,通过 CA 证书进行验证
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2671 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:53 · PVG 09:53 · LAX 17:53 · JFK 20:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.