V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
frontEnd2020
V2EX  ›  NGINX

大家好,请问 反向代理 后,真实的服务器地址有必要 ssl 吗?

  •  
  •   frontEnd2020 · 202 天前 · 3500 次点击
    这是一个创建于 202 天前的主题,其中的信息可能已经有所发展或是发生改变。

    域名解析在 A 服务器,并且配置了 ssl,所有访问都是 https,

    然后 nginx 配置了反向代理到 B 服务器,B 是实际的服务器,存储了 前台 dist 文件夹、server.bundle.js 、数据库,

    假设 B 服务器上的文件需要保证安全(并配置了其他安全策略,如禁止 root 远程 ssh 、隐藏真实服务器 ip 和版本号),

    那么 有必要给 B 服务器单独配置域名 以及 ssl 吗?

    我主要的疑惑是:B 单独配置了域名以及 ssl 和 直接是 ip 的情况下,安全效果是一样的还是有差异?

    谢谢。

    29 条回复    2021-05-19 20:23:00 +08:00
    Tokin
        1
    Tokin  
       202 天前 via iPhone
    理论上只有全 ssl 才安全,因为你不能保证 B 服务器是安全的,ssl 除了防止被监听,还一个比较重要的是防止被劫持。比如 a 访问 b 的过程中,被劫持加料,你 a 服务器的 ssl 也不安全了吧……
    iBugOne
        2
    iBugOne  
       202 天前
    一般来说走公网最好配 SSL,当然可以是自签名的(毕竟你也不直接面向用户),只要你能维护好这个“私有 CA”。走内网的话,取决于内网的安全策略,可以配 SSL 也可以不配。
    Tokin
        3
    Tokin  
       202 天前 via iPhone
    除非是 b 服务器是内网环境,a 代理成外网,这样一定程度上可以保证安全,如果 b 本身就可以外网访问,那就会存在隐患。
    gamexg
        4
    gamexg  
       202 天前
    内网可以不加 ssl,公网需要加
    有过 http 回源被插广告的例子
    star7th
        5
    star7th  
       202 天前
    内网不用。公网需要。就这么简单。
    alect
        6
    alect  
       202 天前
    当然有必要,自签名即可。
    yanzhiling2001
        7
    yanzhiling2001  
       202 天前
    没十分必要。 配置 ssl 是对外公开访问的,全世界都能看到你的网址,自然也会有人针对劫持。

    后端 B 也只有后端 A 访问,iptables 配置好仅允许后端 A 的 ip 访问就足够了
    yitingbai
        8
    yitingbai  
       202 天前
    内网没必要加, SSL 会影响访问速度, 得不偿失
    frontEnd2020
        9
    frontEnd2020  
    OP
       202 天前
    @Tokin 好的,明白,两个服务器都是公网。被劫持 这部分还不熟悉。
    ryd994
        10
    ryd994  
       202 天前 via Android
    @yanzhiling2001 你不会以为不知道域名就没法劫持吧?
    就算不能劫持还不能偷看么?
    frontEnd2020
        11
    frontEnd2020  
    OP
       202 天前
    @iBugOne 走公网,多谢提醒,我研究下 自签名。私有 CA 密钥文件 的维护还不熟悉,这两个存放在服务器上,其他 ssl 文件我全部移到本地。
    frontEnd2020
        12
    frontEnd2020  
    OP
       202 天前
    @gamexg 多谢提醒,我是比较担心传输过程被做手脚。
    frontEnd2020
        13
    frontEnd2020  
    OP
       202 天前
    @yanzhiling2001 好的,多谢提醒。 我是想把 A 配置成只有域名,没有其他文件, 然后将 前、后端的文件都配置到 B 服务器上,还不确定这样是否合适。
    lscho
        14
    lscho  
       202 天前
    @yanzhiling2001 劫持大多数是 DNS 和运营商啊,不是针对某个域名劫持,而是全部。。。
    frontEnd2020
        15
    frontEnd2020  
    OP
       202 天前
    @ryd994 走公网的话,有没有比较好的方案 能更安全的隐藏真实服务器的 ip ? 我目前的思路是 nginx 里配置 proxy .
    brader
        16
    brader  
       202 天前
    a-b 是走的内网,看你自己考虑吧,不加的话,就是假设云服务商内网安全,管理安全,不会有内部人员截获、监听。看你自己怎么想
    gam2046
        17
    gam2046  
       202 天前
    A 反代 B,如果 A 与 B 之间的链路是可以信任的(如完全可控的内网环境),就可以不走 SSL,以降低 CPU 使用率。
    如果 A 与 B 之间的链路不可信,那么 SSL 还是不建议省略掉,以避免由于 A->B 请求中可能出现的中间人,造成客户端请求 A 时的结果也不可信
    yanzhiling2001
        18
    yanzhiling2001  
       202 天前
    @frontEnd2020 我就是这么干的,挺合适的。

    我主要是业务都放到了美国洛杉矶机房,用 cn2 的美西机器反代。


    后端 B 也只有后端 A 访问,iptables 配置好后端 B 仅允许后端 A 的 ip 访问就足够了。

    两个机器的通讯也没必要上加密自签证书之类的,后端 B 屏蔽除了后端 A 之外的全部访问。把安全重心放到后端 A 上。
    yanzhiling2001
        19
    yanzhiling2001  
       202 天前
    我的后端 B 和后端 A 使用 frp stcp 模式组建的内网。frp 的 stcp 的流量已经加密用了自签证书了。
    ryd994
        20
    ryd994  
       202 天前 via Android
    @gam2046 回源开长连接和 SSL session cache 。SSL 主要是握手开销大。连接建立以后用的是对称加密,开销不大。
    frontEnd2020
        21
    frontEnd2020  
    OP
       202 天前
    @brader 好的,我得研究下内网方案。
    frontEnd2020
        22
    frontEnd2020  
    OP
       202 天前
    @gam2046 明白,多谢提醒。
    frontEnd2020
        23
    frontEnd2020  
    OP
       202 天前
    @yanzhiling2001 后端 B 屏蔽除了后端 A 之外的全部访问 -- 这个思路挺好的,我学习下。
    gam2046
        24
    gam2046  
       202 天前
    @ryd994 #20 这个其实和具体业务有关,如果通讯量比较大的情况下,其实 SSL 还是很费 CPU 的。握手的开销更多是网络 IO 慢。当然啦,如果调用量不大,可以无脑上 SSL,绝大多数情况下,机器性能是过剩的。

    我以前做过一个中间件,内网调用也走的 HTTPS (调用频率比较高全天基本稳定在一个数值,没有低谷期),业务服务器 CPU 大量都被 nginx 占用了,后面找运维大哥说明一下情况,内网不再使用 HTTPS 后(同时为确保安全,只接受固定 IP 的请求),机器负载明显降低了。
    iBugOne
        25
    iBugOne  
       202 天前
    如果两个机器有一边有公网地址的话,那么通过 WireGuard 建一个加密的端到端“内网”也是个不错的办法,只要两台机器都不被入侵,走 wg 内网也可以不用 SSL
    no1xsyzy
        26
    no1xsyzy  
       202 天前
    @frontEnd2020 走公网可以 cloudflared,甚至不需要公网 IP (自带内网穿透
    daimaosix
        27
    daimaosix  
       202 天前
    如果 AB 在同一内网下的话,可以不加,如果 AB 跨公网还是加上吧。
    frontEnd2020
        28
    frontEnd2020  
    OP
       202 天前
    @iBugOne 好的,多谢,我简单了解了下,WireGuard 的原理是生成一个虚拟网卡,然后通过这个虚拟网卡通信,我学习下。
    frontEnd2020
        29
    frontEnd2020  
    OP
       202 天前
    @no1xsyzy 好的哈,这方案挺有意思。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1357 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:38 · PVG 07:38 · LAX 15:38 · JFK 18:38
    ♥ Do have faith in what you're doing.