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

前置服务器部署 nginx 用来转发到内网对应的服务上,和在前置服务器部署服务,然后将数据库相关部署内网服务器上,通过修改前置服务器部署的数据库连接访问数据。这两者有啥安全性的差别吗。

  •  
  •   Renco · 1 天前 · 1237 次点击

    标题内容可以有点绕。

    大致意思就是,客户需要内网部署的 web 服务能在互联网访问到。首先提出方案,加一台前置机在互联网上,并可以访问到内网服务器。然后在上面部署 nginx ,通过端口 nginx 代理转发到内网服务器上。来实现外网访问。(之前类似需求,就是按照这套逻辑去实现的。)

    后来有客户不同意这种穿透模式,不让用 nginx ,说要么就是你们内网部署一套 web 服务,外网也部署一套相同的 web 服务,然后数据信息全部在内网服务器上。外网那边修改数据库访问的链接,外网到内网的端口由客户那边来打通。

    想了解下,为啥 nginx 那套不让用,客户说是安全性问题但是不是太理解,nginx 转发端口,一个是 nginx 内配置,同时客户那边也要打通端口才能转发到内网。第二套方案,不用 nginx 但是同样需要客户打通端口到内网。

    基于此情况,我们还有一个文件中心,文件中心由于是直接用的现成的对象存储方案,文件是 url 形式返回的。如果外网的 web 服务访问内网文件中心,那还是可能要通过 nginx 等代理方式实现转发。因此不是太理解两者区别。

    15 条回复    2025-02-07 22:31:02 +08:00
    loginv2
        1
    loginv2  
       1 天前   ❤️ 1
    没有,客户不懂而已
    Kinnice
        2
    Kinnice  
       1 天前   ❤️ 1
    猜测,数据库连接的审计可能更简单些,毕竟数据库如果把一些特性关闭很难通过数据库连接拿 shell ,但是 web 服务器就相较于简单一些。
    Kinnice
        3
    Kinnice  
       1 天前   ❤️ 1
    nginx ==> waf 可能客户会比较好接受,比如雷池 waf 社区版
    ipwx
        4
    ipwx  
       1 天前   ❤️ 1
    因为客户需要审计各个组件的安全性(包括有没有人去按时补漏洞)吧。

    nginx 你不做,客户没人做,所以不让用。
    ipwx
        5
    ipwx  
       1 天前   ❤️ 1
    换句话说,你做的 web 服务出问题了客户可以找你修。nginx 出问题了他是不是没人找了。
    Renco
        6
    Renco  
    OP
       1 天前
    好吧,谢谢解答
    Yanlongli
        7
    Yanlongli  
       1 天前
    理想状态两者无区别。

    安全性前者好一些,前面的转发服务器可以套防火墙之类的防止攻击,后面服务器负责 web+数据库两个服务
    性能后者好一些,相当于一台服务器只做 WEB 服务,一台服务器只做数据库服务,任务分开。
    qwx
        8
    qwx  
       1 天前   ❤️ 1
    内外网分区分域,我们就要严格要求,无需与互联网产生关系的服务器(数据库)必须放内网,其他都放在 dmz 区,nginx 是完整转发请求,如果 web 服务器被攻击了,直接会导致使用内网服务器做跳板横向迁移,但如果 web 服务器在 dmz 区,横向跳转的风险不大。
    Renco
        9
    Renco  
    OP
       1 天前
    @qwx #8 懂了,谢谢!我们客户有提到过这个 dmz 区,一开始没太了解这个概念,客户的要求就是 web 服务部署在 dmz 区,数据入内网。经过你解释后清楚了。
    qfdk
        10
    qfdk  
       1 天前 via iPhone
    简单来说. 你家有一个公网 ip 你接了个路由器. nginx 机器 192.168.1.100 可以 dmz. 等于这台机器在公网. 所有请求都会来.100. 理论上 nginx 只有 web 服务. 这样扫描就只有 web 服务. 数据库可以放在 192.168.1.200 , 业务机器可以 192.168.1.250 ,nginx 负责给请求转发给 1.250. 理论上 三台机器内网互通 外网之后 nginx 的可以通
    sanqian
        11
    sanqian  
       1 天前
    @Renco 好熟悉,之前遇到一个就是跟你这个一样了。不过对方是域名服务器转发到 dmz,dmz 在 nginx 转发到内网的 web 服务 通过内网 web 服务访问内网数据库服务
    angryfish
        12
    angryfish  
       1 天前   ❤️ 1
    DMZ 直接 nginx 转发和部署 web 应用有区别的。
    首先说一个大前提,黑客黑进服务器,基本上是黑到了部署 web 后台服务的机器。
    1.如果是 nginx 转发,其实是相当于没有了 DMZ 层,外面的黑客入侵的话就直接到内网了。后面就可以利用这台内网机器做跳板机器,访问内网其他敏感数据了。
    2.同理,如果是 web 部署在 DMZ 区,就黑进 DMZ 的那台服务器,从这个层面讲,安全性是不一致了吧。

    但是,但是,涉及到其他的攻击,像拖库等,在内网和 DMZ 是无区别的。
    blackwolf
        13
    blackwolf  
       1 天前
    得看网站是什么性质的,想做哪个级别的安全
    1. 如果是不具备交互性质,仅仅是新闻类的,内网推送到 DMZ 区域的服务器,并且 DMZ 和内网做好隔离,可以有效避免网站被作为跳板侵入内网。并且在网站被破坏的情况下可以及时回复,但无法保证信息发布的安全。但是说实话这样做还不如一套外网+外网定期备份+一套内网来的安全,毕竟内外网一旦有逻辑链路,会有一定的安全风险。
    2. 如果具有交互性质,例如 12306 这种,不是一个简单的同步数据就能解决的,至少需要实时链路(例如 nginx )实现内外网同步。
    pollux
        14
    pollux  
       1 天前
    DMZ 区:是一个网络区域,用于隔离内外网,放置对外服务。

    WAF:是一种安全设备或服务,用于保护 Web 应用免受攻击。

    反向代理:是一种流量管理组件,用于转发请求、负载均衡和缓存。

    在实际架构中,DMZ 区是 WAF 和反向代理的部署环境,三者可以结合使用,共同提升 Web 应用的安全性和性能。
    GKLuke
        15
    GKLuke  
       1 天前   ❤️ 1
    不知道你的客户时属于什么行业的,在我看来,你的客户说的很对。
    我同意 12 楼的说法
    作为经历过 HW 被打穿出局的甲方,你的方案,nginx 会忠实把攻击请求转发到内网应用上,然后攻击者获得这台服务器的权限后,就能以这台内网服务器为基础,首先扫描相同网段有没有重要资产(比如数据库,堡垒机,域控等),然后扩展到相近网段。你客户的方案,nginx 先转发到外网应用,外网应用再调用内网应用,这时候,外网应用就能替后面的内网应用挡下这一刀,即使这台外网应用服务器被攻破,也是在 DMZ 这一层,到不了内网。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 19:42 · PVG 03:42 · LAX 11:42 · JFK 14:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.