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

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

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

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

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

    authelia 的服务比较单一,也得到过国际安全标准认证,相对于 github 上各种大小项目,安全性肯定高很多 level.
    147 条回复    2026-02-06 17:32:34 +08:00
    1  2  
    Rorysky
        101
    Rorysky  
       1 天前
    @cxin3813 这是什么软件
    lastxuan
        102
    lastxuan  
       1 天前
    @wonderfulcxm 可以共存,各种代理软件都支持 ss ,wg ,会修改配置就行了。我现在是 nas 和阿里云组 wg 隧道,客户端通过 ss 连上阿里云,当初是为了绕过跨网 qos 才这样实践的,直接组 wg 隧道也可以
    concernedz
        103
    concernedz  
       1 天前
    我的方案是 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  
       1 天前
    @concernedz 我就部署了个 homepage 和 mt-photo ,就没弄授权了
    wonderfulcxm
        105
    wonderfulcxm  
       1 天前 via iPhone
    @lastxuan ss 我知道可以,代理软件里可以用 openVPN ?
    js9528
        106
    js9528  
       1 天前 via iPhone
    @9136347 我觉得你说的对,但为啥你就是 10%的人?墙为了保护你你却要破坏。因为你特殊?
    lastxuan
        107
    lastxuan  
       1 天前
    @wonderfulcxm #105 不行,要在客户端共存肯定需要使用代理软件支持的协议,毕竟代理软件就那几个内核没得选,但是回家的方式可以选择 。openvpn 默认是 udp ,wireguard 应该更出色。指定 tcp 的话,也可以使用 ss 或者其他协议,封装 wireguard 作 tcp 的项目也可以折腾。
    zlbruce
        108
    zlbruce  
       1 天前
    有个疑问,我当前是用 NPM 代理到后端服务的,认证都是每个服务自己的,不统一确实不太方便。
    用 authelia 后,后端服务应该不全都能用他带过来的 SSO 信息吧?这种有啥解决方法吗?
    wonderfulcxm
        109
    wonderfulcxm  
       1 天前 via iPhone
    @lastxuan 那你和我的想法是一样的,家里自建梯子,当成众多节点的一员,代理软件分流。
    9136347
        110
    9136347  
       1 天前
    @jhdxr “怎么互联网不安全内网就安全了?” 所以是不是你们公司的网络就没有区分内网外网,所有的服务器都直接暴露互联网相互连?
    ofnh
        111
    ofnh  
       1 天前
    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
       1 天前 via iPhone   ❤️ 1
    @zlbruce 这个可以分很多种情况来讨论,如果你的后端服务支持 OIDC ,那可以用 Authelia OIDC

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

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

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

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


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

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

    这玩意儿大部分人都配了 tgbot 远程对话交互的吧
    zhouu
        126
    zhouu  
       1 天前
    pangolin 好了,需要的都有
    v1
        127
    v1  
       1 天前
    @9136347 自由开放的话,v2 起码 70%的人能自给自足甚至创业,开发防火墙、安全软件,不是促进就业和消费了。不要只看片面的。
    Oct31Dec25
        128
    Oct31Dec25  
       1 天前
    authelia 会改 http 响应头,对一些前后端分离的项目不太友好。。。
    otmself
        129
    otmself  
       22 小时 53 分钟前
    @LnTrx 所以我才说,想玩的拦不住,但是以我们这边的风格,稳为主。
    cxin3813
        130
    cxin3813  
       22 小时 50 分钟前
    @jayhuang0044 #53 accors/snell 我用的这个镜像
    cxin3813
        131
    cxin3813  
       22 小时 49 分钟前
    @Rorysky surge
    cfancc
        132
    cfancc  
       21 小时 35 分钟前
    @9136347 想多了,电信不给公网 ip 纯粹是自己嫌麻烦,很多风险无法管控。根本原因不可能是为了保护网民。所以你从限制公网得出电信是为了保护 90%的网民的结论是不正确的,这叫倒果为因
    qiuyue0
        133
    qiuyue0  
       21 小时 35 分钟前
    *有时还会和科学上网没法共用*,因为这个原因,我把手机端的代理换成了 singbox ,这样可以打开代理自动就可以穿透了。
    https://sing-box.sagernet.org/zh/configuration/endpoint/tailscale/
    skylancer
        134
    skylancer  
       21 小时 0 分钟前
    @9136347 保护了个寂寞,现在大多还是跑 fullcone, 本地甚至 cgnat 也是互通的,再加上现在 v6 默认设置都是开启的(江苏不谈,真小白一样存在巨大的安全风险,能折腾的安全风险面比这小多了
    skylancer
        135
    skylancer  
       20 小时 58 分钟前
    @9136347 不是哥们,你不如先好好统计一下从 Win7 之后能直接从网络上打爆的洞有多少个好吧
    skylight
        136
    skylight  
       20 小时 34 分钟前
    我是公网 IP+wireguard 方案,这方案可以直接使用家里 openwrt 搭建的 openclash ,这样其他任何设备上一般都不太需要其他科学上网客户端了
    UEVdugfw
        137
    UEVdugfw  
       20 小时 1 分钟前 via iPhone
    自建 ca 容易被证书链/中间人攻击。此外国内域名注册备案貌似很麻烦,而国内 vps 貌似不让绑国外域名吧。

    请问 op 如何解决这些问题
    mrabit
        138
    mrabit  
       19 小时 51 分钟前
    @COW #100 那人什么贴都在让人移民 哈哈哈哈
    Hconk
        139
    Hconk  
    OP
       19 小时 47 分钟前 via iPhone
    @UEVdugfw 自建 CA 并不会增加被证书链/中间人攻击的风险,除非你的 CA Key 泄露,甚至你不放心可以在离线电脑上保存和签发证书,比你用公共证书链更加安全,公共证书链反而可能存在恶意签发的风险(比如前几年的 WoSign 证书事件)。

    域名备案应该不算麻烦吧,我很久之前申请备案,我记得腾讯云发一张背景布过来拍张照填个表就行了。
    PeterTerpe
        140
    PeterTerpe  
       18 小时 50 分钟前 via Android
    @Greenm #20 我也是这样,设置个邮箱验证码就够了,也不用折腾别的。
    lmmir
        141
    lmmir  
       18 小时 42 分钟前
    easytier 代替 openvpn
    dushixiang
        142
    dushixiang  
       18 小时 33 分钟前
    觉得麻烦的可以直接使用 NextTerminal ,可以说集成了 OP 说的全部功能,自带反向代理、内网穿透、OIDC Server ,近期也支持了 mTLS 。

    演示环境 https://baidu.typesafe.cn
    账号 test/test

    mTLS 文档 https://docs.next-terminal.typesafe.cn/usage/mtls.html
    PVE 使用 NT OIDC 认证 https://docs.next-terminal.typesafe.cn/blog/pve-oidc/readme.html
    LnTrx
        143
    LnTrx  
       18 小时 7 分钟前
    @Hconk 自建 CA 主要是是在移动设备一些应用的证书信任比较难搞,应用面可能略显狭窄。对于个人应用来说,国际知名的免费证书应该就足够了。

    @UEVdugfw 现在域名备案比以前还要方便,全程可以在手机上操作,很多地区审批也很快。虽然对网站命名等还是有奇怪的要求,但如果目的只是拿到一个有 ICP 备案的域名的话并不难。
    thereone
        144
    thereone  
       17 小时 34 分钟前
    和我自建雷池 WAF 开启 黑白名单 用户认证 人机验证有区别吗?还是防护能力强一些?
    xiaomintongxue
        145
    xiaomintongxue  
       16 小时 51 分钟前
    我找电信要了公网 ip ,一直没做任何防护,主要是懒得折腾😂
    UEVdugfw
        146
    UEVdugfw  
       14 小时 36 分钟前
    @Hconk #139 理论上自建 ca 安全性高于公共 ca ,但现实落地,自建 ca 在私钥管理和客户端证书部署上是大坑,成本、风险权衡下我的观点是不如用公共 ca 。

    还有一个最致命的,自建 ca 被攻击了,可能很长一段时间发现不了,甚至永远发现不了。但公共 ca 出现问题,会很快传播。换句话说,整个行业、公众都是监督方(吃瓜方),漏洞可以及时发现并修复。损失肯定有,但会尽可能被缩小。
    junas7
        147
    junas7  
       14 小时 22 分钟前 via Android
    @9136347 法律和警察的意义上打击侵犯他人或公共权益的行为,你对自己的自由支配,如果不会侵犯他人,为什么要被剥夺
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1112 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:55 · PVG 07:55 · LAX 15:55 · JFK 18:55
    ♥ Do have faith in what you're doing.