我有两台 Linux 服务器:
- 第一个包含 Oracle 11G 数据库,其中包括 Oracle HTTP Server
- 第二个包含 Java 中间层加上 Apache 网络服务器和 Apache Tomcat。
有人告诉我,我应该考虑使用 DMZ。目标是保护数据库免受外部用户的攻击。但是,我们可以信任内部用户。内部用户仍然需要访问数据库服务器的所有方面。
有人能帮我理解一下这种情况下简单的 DMZ(适用于小型企业)是什么样子的吗?它是通过硬件还是软件实现的,还是两者兼而有之?
我对 DMZ 一无所知,我试图了解我需要指示我的托管服务提供商实施 DMZ 的事情(假设有很多信息需要决定,而不仅仅是告诉他们:“给我一个 DMZ”)。我需要告诉他们什么,或者在联系他们之前我需要做出什么决定?
在上述情况下,是否有理由有人不想或不需要实施 DMZ?或者,这是否普遍被认为是一个好主意?
答案1
DMZ 的目的是建立一个安全边界,只允许已知的、需要的流量通过。这可以通过硬件防火墙设备(Cisco ASA 等)或软件防火墙(Linux iptables、OpenBSD pfsense 等)来实现。目的是要有一个机制来仲裁流量并决定哪些流量是合适的。
从物理上讲,DMZ 与您的 Internet 连接的互连可能如下所示:
{ the internet }----[ Firewall Device ]-----{ LAN }
|
|
{ DMZ }
通常,防火墙设备上的一个物理网络接口卡专用于连接这些段(Internet、DMZ 和 LAN)。可以使用 VLAN 来实现这一点,以使用更少的物理 NIC,但这样您就会开始在同一个物理介质中混合不同的安全问题(除非您通过这样做获得了某些特定优势,否则通常应避免这种情况)。
假设应用程序的用户将通过“第二台服务器”(我将其称为“Web 服务器”)的 TCP 端口 80 访问 Apache Web 服务器以使用该应用程序,我将看到 Web 服务器计算机位于 DMZ 段中,其访问权限由创建 DMZ 的防火墙设备控制,以便:
- 允许来自 Internet 上任意源 IP 和端口的请求到 Web 服务器(TCP 端口 80)
- 允许从 Web 服务器上的任意 TCP 端口向 Oracle TNS 端口(通常是 TCP 端口 1521)上的 Oracle 数据库服务器发送请求
- 允许来自 LAN 上的任意源 IP 和端口到 Web 服务器上的 SSH 端口的请求(用于管理)
(假设您使用状态防火墙设备来仲裁对 DMZ 的访问,则您不需要专门创建对上述请求的响应规则。)
这是一个非常简单的观点,但它传达了这个想法。您可能希望让 Web 服务器发出 DNS 请求,并且可能希望允许它访问 HTTP 或 HTTPS 服务器以从中下载操作系统更新。我强烈建议反对允许 Web 服务器任意出站访问 Internet(因为许多漏洞都依赖于被利用的计算机能够下载“第二阶段”有效负载)。如果您不需要 Internet 上的任何人来管理 Web 服务器,则不要允许来自 Internet 的入站 SSH。(如果您确实需要从异地管理它,最好连接到 LAN 段中的 VPN 并从 LAN 访问 Web 服务器。)
答案2
非军事区或 DMZ 是与其他网络隔离的网络段。许多组织使用 DMZ 将其局域网 (LAN) 与互联网隔离。这为其企业网络和公共互联网之间提供了额外的安全保障。
放置在 DMZ 中的常见项目是面向公众的服务器。例如,如果组织在服务器上维护其网站,则可以将该 Web 服务器放置在 DMZ 中。这样,如果该机器受到攻击,公司网络的其余部分就不会受到威胁。
当将 LAN 连接到 Internet 时,路由器将提供与公共 Internet 的物理连接,而防火墙将提供网关以防止恶意数据进入网络。防火墙上的一个端口通常会使用该网络上的内部地址连接到公司网络,从而允许公司内部个人发送的流量到达 Internet。另一个端口通常会配置一个公共地址,以允许 Internet 流量到达组织。这两个端口可以允许入站和出站数据到达 Internet 上的组织。