V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hconk
1.5D
0.54D
V2EX  ›  信息安全

建议给所有需要公网暴露的 web 服务套一层 authelia

  •  
  •   Hconk · 22 小时 47 分钟前 · 7749 次点击
    飞牛的漏洞应该让很多人认识到了公网暴露的安全性问题,挺多人推荐通过 VPN 的方式来保护想公网暴露的服务,VPN 的方式安全性肯定很高,但是很多时候也相对比较麻烦,需要安装 VPN 终端,有时还会和科学上网没法共用。

    很多人玩 NAS 就是为了部署各种 web 服务,像 openclaw, matrix, memos 之类的,对外暴露本身就是为了方便能随时访问,如果每次访问都还要切 VPN 着实有点麻烦了。

    这里推荐另外一种折中一些的方案,通过 frp 穿透把内网服务映射到服务端,注意自建 CA, 启用 token + TLS 双重认证,映射的端口在服务器上禁用掉,然后通过 NPM 来管理二级域名反向代理内网 ip:端口,通过二级域名访问这个服务,开启 https, 同时在 NPM 的 advance 里配置好 authelia 认证,这样直接访问二级域名会跳转到认证页面,认证后可以访问,和正常直接访问没什么区别。通过这种方式可以将所有对外暴露的服务统一管理,很多小众的 web 服务安全性并没有什么保证,但是经过 authelia 叠加一层之后可以减小很多的安全攻击面。

    authelia 的服务比较单一,也得到过国际安全标准认证,相对于 github 上各种大小项目,安全性肯定高很多 level.
    131 条回复    2026-02-06 09:05:27 +08:00
    1  2  
    Rorysky
        101
    Rorysky  
       17 小时 31 分钟前
    @cxin3813 这是什么软件
    lastxuan
        102
    lastxuan  
       17 小时 30 分钟前
    @wonderfulcxm 可以共存,各种代理软件都支持 ss ,wg ,会修改配置就行了。我现在是 nas 和阿里云组 wg 隧道,客户端通过 ss 连上阿里云,当初是为了绕过跨网 qos 才这样实践的,直接组 wg 隧道也可以
    concernedz
        103
    concernedz  
       17 小时 26 分钟前
    我的方案是 dns 配置通配符 *.nas.xxx.com ,服务器面板 1panel

    浏览器请求 https://home.nas.xxx.com

    DNS 解析:home.nas.xxx.com → 1Panel 服务器的公网 IP

    1Panel 的 OpenResty ( Nginx )接收 443 端口请求

    OpenResty 执行反向代理规则 → 转发到 FRPS 的 vhostHttpPort

    FRPS (运行在 1Panel 服务器)接收请求,匹配 FRPC 注册的 customDomains ( home.nas.xxx.com

    FRPS 通过 FRP 隧道( 7000 端口控制连接)转发请求到 NAS 上的 FRPC 客户端

    FRPC (运行在 NAS )接收请求 → 转发到 NAS 本地的 homepage 服务( 3000 端口)

    homepage 服务处理请求,生成响应

    响应沿原链路反向返回:NAS FRPC → 1Panel FRPS → OpenResty → 浏览器
    concernedz
        104
    concernedz  
       17 小时 25 分钟前
    @concernedz 我就部署了个 homepage 和 mt-photo ,就没弄授权了
    wonderfulcxm
        105
    wonderfulcxm  
       17 小时 21 分钟前 via iPhone
    @lastxuan ss 我知道可以,代理软件里可以用 openVPN ?
    js9528
        106
    js9528  
       17 小时 20 分钟前 via iPhone
    @9136347 我觉得你说的对,但为啥你就是 10%的人?墙为了保护你你却要破坏。因为你特殊?
    lastxuan
        107
    lastxuan  
       16 小时 57 分钟前
    @wonderfulcxm #105 不行,要在客户端共存肯定需要使用代理软件支持的协议,毕竟代理软件就那几个内核没得选,但是回家的方式可以选择 。openvpn 默认是 udp ,wireguard 应该更出色。指定 tcp 的话,也可以使用 ss 或者其他协议,封装 wireguard 作 tcp 的项目也可以折腾。
    zlbruce
        108
    zlbruce  
       16 小时 56 分钟前
    有个疑问,我当前是用 NPM 代理到后端服务的,认证都是每个服务自己的,不统一确实不太方便。
    用 authelia 后,后端服务应该不全都能用他带过来的 SSO 信息吧?这种有啥解决方法吗?
    wonderfulcxm
        109
    wonderfulcxm  
       16 小时 52 分钟前 via iPhone
    @lastxuan 那你和我的想法是一样的,家里自建梯子,当成众多节点的一员,代理软件分流。
    9136347
        110
    9136347  
       16 小时 47 分钟前
    @jhdxr “怎么互联网不安全内网就安全了?” 所以是不是你们公司的网络就没有区分内网外网,所有的服务器都直接暴露互联网相互连?
    ofnh
        111
    ofnh  
       16 小时 24 分钟前
    annotations:
    nginx.ingress.kubernetes.io/auth-method: 'GET'
    nginx.ingress.kubernetes.io/auth-url: 'http://authelia.default.svc.cluster.local/api/authz/auth-request'
    nginx.ingress.kubernetes.io/auth-signin: 'https://auth.example.com?rm=$request_method'
    nginx.ingress.kubernetes.io/auth-response-headers: 'Remote-User,Remote-Name,Remote-Groups,Remote-Email'


    在 ingress 上套一层即可
    Hconk
        112
    Hconk  
    OP
       16 小时 22 分钟前 via iPhone   ❤️ 1
    @zlbruce 这个可以分很多种情况来讨论,如果你的后端服务支持 OIDC ,那可以用 Authelia OIDC

    如果服务支持 LDAP ,你可以把身份源统一到 LDAP ,Authelia 也用同一套目录

    如果都不支持那可以用 oauth2-proxy 搞个中间件来做 OIDC 认证。

    如果都不支持你又不想/没法改代码那还是只用 authelia 来认证 web UI ,后端接口放行用 NPM 做白名单之类的访问限制。
    LnTrx
        113
    LnTrx  
       16 小时 2 分钟前
    看了下,感觉确实不错。而且中文圈现有的资料不多,在很多方向上都有进一步折腾的空间,例如:
    1. 结合各种系统、各种反代
    2. 替代各应用原有鉴权,实现自部署的真单点登录
    3. 融入到图形化的反代管理工具
    LnTrx
        114
    LnTrx  
       15 小时 18 分钟前   ❤️ 2
    @9136347 在民用的常见配置下,获得公网 IP 的一般是光猫或路由,不太可能会直接让存储敏感信息的系统直接暴露。即使默认给公网 IP ,对普通网民并不会构成显著的风险。运营商提供的设备也有不安全的风险,但连这一层都要考虑的话,以此推论,运营商的内网 IP 也不一定安全。
    作为一种保护,默认有 IPv4/v6 防火墙,允许需要的用户可自行调整就足够了,最多加一步授权确认。安全和方便是一种平衡,不应变成偏执。一刀切不给公网 IP 或者不允许开放公网,超出了保护的合理范畴,确实构成了对用户自由的限制。
    关于基础运营商将公网 IP 作为一种增值商品出售,是可行的方案。有的运营商默认给,有的运营商付费给,让用户自行选择即可。但需要注意到,中国大陆地区的基础运营商为国企垄断,因此有义务提供合理的价格。对于取之不尽的 IPv6 不应收费,对于 IPv4 也不宜高于商用云服务厂商的定价。另外,不应限制该公网 IP 进行 ICP 备案,否则合理的价格应该更低。
    IPIDEA 恰恰是单纯依赖 NAT 不足以保护家庭网络安全的案例。根据 Google 的报告:“住宅代理网络运营商需要在消费设备上运行代码,将其作为出口节点注册到网络中”。用户自己把代理网络的 SDK 带到内网环境里,再怎么禁止公网也没用。这更说明无论公网还是内网,都要按照零信任的标准设防。

    @otmself 即使存在有人因为自行开放公网 IP 受损而撒泼耍赖,也不代表就要断绝所有人的公网 IP ,不然实质上就是鼓励撒泼耍赖。换言之,是在暗示因为不开放公网 IP 而权益受损的人闹得不够狠。
    zlbruce
        115
    zlbruce  
       15 小时 12 分钟前
    @Hconk 感谢,很清晰明了
    看起来大部分都能通过 OIDC 来支持
    9136347
        116
    9136347  
       15 小时 2 分钟前   ❤️ 1
    @LnTrx 现在的 NAT 方式上网,和给一个公网 ip 的方式还是有很大的区别,最起码说没有公网 IP 的情况下,被扫描的几率还是小很多很多。另外就算光猫的方式,其实本质上还是运营商在托底,选择 nat 不给公网 IP 的方式,也是运营商在托底。为啥运营商托底的方式 A 能接受,运营商托底的方式 B 就接受不了。
    对于绝大多数人,这个比例肯定不低于 90%,公网不公网没有什么意义的。就算躲在光猫后面,威胁依然存在,结合我们网民的计算机素养,这个安全风险不可估量。还有一些刻意的搞灰产的,不说群魔乱舞吧,可能也和菜市场差不多。
    这个帖子炒得这么厉害,无非就是一些想要公网 IP 的少部分人(当然在 v2 这个环境下比例会高一些),基于自身的需要,屁股决定脑袋在不断的表达自己的观点而已。


    其实本质上来说,所谓的公网 IP 就只是一小部分人的诉求,但是我觉得绑定到是所有人的理由受损之类的,就有点扯虎皮拉大旗的感觉了。如果真的是 90%的人都有这个需求的话,你都不用去提,运营商自然会去迎合需求。
    LnTrx
        117
    LnTrx  
       14 小时 39 分钟前   ❤️ 1
    @9136347
    关键是选择权,运营商可以托底,但不能强制。公网 IP 给到光猫的方式通常都有办法自行打开防火墙。
    对于不少人公网 IP 没有直接意义,这些人公网 IP 给不给到光猫在安全性上区别不大。
    另外,公网 IP 对于所有人也有间接意义。如果所有家庭用户都不允许公网传入,那文件传输、远程桌面等服务更加可以肆无忌惮垄断或涨价。
    每个人表达符合自身需求的观点很正常,这又不是政策制定者的论坛。运营商很早就有收紧公网 IP 的动向了,但至今没有完全推进,也难说不是受到真正有需求的人的影响。
    ttxhxz
        118
    ttxhxz  
       14 小时 36 分钟前
    @9136347 #116 相比绝大多数网民,会主动要公网 ip 的有多少?有人主动要,给会有什么问题?会让绝大多数普通人暴露在网上么?你这就好像在说玩手机 root 才是大多数人,不 root 是少数人一样
    Cuhn1
        119
    Cuhn1  
       14 小时 5 分钟前
    @9136347 #116 按照你的说法,你作为被保护的对象,你就不应该出现在这里。既然你出现在这里,那我怀疑你就是破坏环境的那部分,你通过破坏环境来制造恐慌和威胁,让更多的人被禁锢和失去便利,这样就你能提供其所需或者和你竞争的人就少了。
    isnullstring
        120
    isnullstring  
       12 小时 11 分钟前
    有单独的软路由,FRP 隧道回去,把软路由当代理用,完美访问

    主要是没有手机网络访问家里服务的需求
    nnikooih
        121
    nnikooih  
       12 小时 7 分钟前
    谢谢分享,很的详细分析
    zhady009
        122
    zhady009  
       11 小时 42 分钟前
    wireguard 是可以用代理配置无缝回家的不需要手动自己切
    deepbytes
        123
    deepbytes  
       10 小时 56 分钟前 via iPhone
    @Hconk 受教了
    AkinoKaedeChan
        124
    AkinoKaedeChan  
       10 小时 52 分钟前
    我用的 Pocket ID ,只支持 Passkey ,优点就是配置更简单点、UI 好看。
    datou
        125
    datou  
       9 小时 49 分钟前
    openclaw 为啥要向公网暴露 web 服务?

    这玩意儿大部分人都配了 tgbot 远程对话交互的吧
    zhouu
        126
    zhouu  
       9 小时 42 分钟前
    pangolin 好了,需要的都有
    v1
        127
    v1  
       9 小时 24 分钟前
    @9136347 自由开放的话,v2 起码 70%的人能自给自足甚至创业,开发防火墙、安全软件,不是促进就业和消费了。不要只看片面的。
    Oct31Dec25
        128
    Oct31Dec25  
       8 小时 50 分钟前
    authelia 会改 http 响应头,对一些前后端分离的项目不太友好。。。
    otmself
        129
    otmself  
       1 小时 15 分钟前
    @LnTrx 所以我才说,想玩的拦不住,但是以我们这边的风格,稳为主。
    cxin3813
        130
    cxin3813  
       1 小时 12 分钟前
    @jayhuang0044 #53 accors/snell 我用的这个镜像
    cxin3813
        131
    cxin3813  
       1 小时 12 分钟前
    @Rorysky surge
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4623 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:17 · PVG 10:17 · LAX 18:17 · JFK 21:17
    ♥ Do have faith in what you're doing.