第一部分:核心概念 - DMZ 是什么?

DMZ (Demilitarized Zone),即非军事区,是一个位于企业内部网络和外部不安全网络(如互联网)之间的小型网络隔离区域

cisco dmz/互联网
(图片来源网络,侵删)

为什么需要 DMZ? 想象一下一个军事基地,你不能把指挥部(核心资产)直接放在前线(互联网)吧?你需要一个缓冲地带,DMZ 就是这个缓冲地带。

  • 核心目标:通过隔离,即使部署在 DMZ 中的服务器(如 Web 服务器、邮件服务器)被黑客攻破,黑客也无法直接访问到公司最宝贵的内部资源(如数据库文件、财务系统、员工电脑)。
  • 类比
    • 互联网:外部世界,任何人都可以访问。
    • DMZ:公司的“访客中心”或“前台”,客户(互联网用户)可以来这里获取信息(访问网站),但不能进入公司的“办公区”(内部网络)。
    • 内部网络:公司的“核心研发部”或“金库”,只有授权员工才能进入。

DMZ 中通常放置什么?

  • Web 服务器
  • 邮件服务器
  • DNS 服务器(对外解析部分)
  • FTP 服务器
  • VPN 服务器(有时也放在 DMZ,有时放在内部网络)

第二部分:Cisco 设备的角色与拓扑

在典型的企业网络中,Cisco 设备扮演着防火墙和路由器的角色,最常见的设备系列是 Cisco ASA (Adaptive Security Appliance)Cisco Firepower (FTD),我们以经典的 Cisco ASA 为例来讲解拓扑和配置。

典型的网络拓扑结构

  +-----------------+      +-----------------+      +-----------------+
  |   Internet      |      |    Cisco ASA    |      |   Internal LAN  |
  |                 |      | (Firewall/Router)|      |                 |
  |   (WAN)         |      |                 |      |   (LAN)         |
  |                 |      +-----------------+      |                 |
  +--------+--------+      |      |      |        +--------+---------+
           |               | Eth0 | Eth1 | Eth2      |                 |
           | (Public IP)   |(Outside)|(DMZ) |(Inside) |                 |
           |               +------|------|--------+                 |
           |                     |      |                          |
           +---------------------+      +--------------------------+
                                    (管理网络)

接口说明:

cisco dmz/互联网
(图片来源网络,侵删)
  • Outside Interface (外部接口):连接互联网,拥有公网 IP 地址,这是网络的“第一道防线”。
  • DMZ Interface (DMZ 接口):连接 DMZ 网络,通常使用私有 IP 地址(如 10.1.1.0/24)。
  • Inside Interface (内部接口):连接公司内部员工网络,也使用私有 IP 地址(如 192.168.10.0/24)。
  • Management Interface (管理接口):可选,用于管理员远程登录和管理防火墙本身,通常也放在一个隔离的管理网络中。

第三部分:Cisco ASA/FTD 的核心配置步骤

配置 DMZ 主要涉及三个核心部分:接口配置、安全策略(访问控制列表 ACL)、NAT(网络地址转换)

步骤 1:接口配置

我们需要定义 ASA 的三个物理接口,并分配 IP 地址。

# 进入全局配置模式
ciscoasa> enable
ciscoasa# configure terminal
# 配置 Outside 接口
ciscoasa(config)# interface GigabitEthernet0/0
ciscoasa(config-if)# nameif outside
ciscoasa(config-if)# security-level 0  # 外部安全级别最低,为 0
ciscoasa(config-if)# ip address 203.0.113.10 255.255.255.0  # 替换为你的公网IP
ciscoasa(config-if)# no shutdown
# 配置 DMZ 接口
ciscoasa(config)# interface GigabitEthernet0/1
ciscoasa(config-if)# nameif dmz
ciscoasa(config-if)# security-level 50  # DMZ 安全级别居中,为 50
ciscoasa(config-if)# ip address 10.1.1.1 255.255.255.0
ciscoasa(config-if)# no shutdown
# 配置 Inside 接口
ciscoasa(config)# interface GigabitEthernet0/2
ciscoasa(config-if)# nameif inside
ciscoasa(config-if)# security-level 100 # 内部安全级别最高,为 100
ciscoasa(config-if)# ip address 192.168.10.1 255.255.255.0
ciscoasa(config-if)# no shutdown

security-level 的作用: ASA 有一个“隐式拒绝”的默认策略,安全级别低的接口到安全级别高的接口的默认流量是被允许的,反之则被拒绝

  • inside (100) -> dmz (50):默认允许。
  • dmz (50) -> inside (100):默认拒绝。
  • dmz (50) -> outside (0):默认允许。
  • outside (0) -> dmz (50):默认拒绝。

这个特性大大简化了配置,我们只需要为“从低安全级别到高安全级别”的流量编写明确的允许规则即可。

cisco dmz/互联网
(图片来源网络,侵删)

步骤 2:NAT (网络地址转换)

NAT 是将私有 IP 地址转换为公网 IP 地址的过程,以便内部和 DMZ 的设备能访问互联网。

场景 1:DMZ 服务器需要被互联网用户访问 我们需要将 DMZ 服务器的私有 IP 映射到一个公网 IP(通常是 ASA 的 Outside IP)。

  • 示例:DMZ 中有一台 Web 服务器,IP 为 1.1.10,希望互联网用户可以通过 0.113.10 访问它的 80 端口。
# 配置静态 NAT,一对一映射
ciscoasa(config)# object network WEB_SERVER
ciscoasa(config-network-object)# host 10.1.1.10
ciscoasa(config-network-object)# nat (dmz, outside) static 203.0.113.10 service tcp www www
  • object network WEB_SERVER:定义一个对象,代表我们的服务器。
  • host 10.1.1.10:指定服务器的真实 IP。
  • nat (dmz, outside) static ...:这是 NAT 命令。
    • (dmz, outside):表示流量从 DMZ 区域流向 Outside 区域时触发此 NAT 规则。
    • static:表示静态一对一映射。
    • 0.113.10:映射后的公网 IP。
    • service tcp www www:映射 TCP 协议的 80 端口。www80 的别名。

场景 2:内部员工访问互联网 内部员工访问互联网时,通常使用 PAT (Port Address Translation,NAT 的一种),即多个内网 IP 共享一个公网 IP。

# 允许整个内部网络访问互联网,并使用 ASA 的 Outside IP 进行 PAT 转换
ciscoasa(config)# nat (inside) 1 0.0.0.0 0.0.0.0
ciscoasa(config)# global (outside) 1 interface
  • nat (inside) 1 0.0.0.0 0.0.0.0:匹配所有内部源地址。
  • global (outside) 1 interface:使用 Outside 接口的 IP 地址进行 PAT 转换。

步骤 3:安全策略 (访问控制列表 - ACL)

这是最关键的一步,它决定了哪些流量可以通过防火墙。

核心原则“最小权限原则”,即只允许必要的流量,拒绝所有其他流量。

场景 1:允许互联网访问 DMZ 的 Web 服务器 我们之前配置了静态 NAT,现在需要允许流量通过。

# 创建一个 ACL,允许来自互联网的 TCP 80 端口流量访问 WEB_SERVER 对象
ciscoasa(config)# access-list INET_TO_DMZ extended tcp any object-group WEB_SERVER eq www
  • access-list INET_TO_DMZ:定义一个名为 INET_TO_DMZ 的 ACL。
  • extended:表示这是一个扩展 ACL(可以指定协议、源、目标端口等)。
  • tcp:协议为 TCP。
  • any:源地址是任何地方(互联网)。
  • object-group WEB_SERVER:目标地址是我们之前定义的 WEB_SERVER 对象。
  • eq www:目标端口等于 80。

场景 2:允许 DMZ 服务器访问互联网 Web 服务器需要从互联网下载更新文件。

# 创建一个 ACL,允许 DMZ 网络访问互联网的任何 TCP/UDP 流量
ciscoasa(config)# access-list DMZ_TO_INET extended ip 10.1.1.0 255.255.255.0 any

场景 3:允许内部员工访问互联网 这是最基本的需求。

# 创建一个 ACL,允许内部网络访问互联网的任何流量
ciscoasa(config)# access-list INSIDE_TO_INET extended ip 192.168.10.0 255.255.255.0 any

应用 ACL 到接口 创建好 ACL 后,必须将其应用到相应的接口上,并指定流量的方向。

# 应用 INET_TO_DMZ ACL 到 outside 接口,方向是 in(进入防火墙)
ciscoasa(config)# access-group INET_TO_DMZ in interface outside
# 应用 DMZ_TO_INET ACL 到 dmz 接口,方向是 in(进入防火墙)
ciscoasa(config)# access-group DMZ_TO_INET in interface dmz
# 应用 INSIDE_TO_INET ACL 到 inside 接口,方向是 in(进入防火墙)
ciscoasa(config)# access-group INSIDE_TO_INET in interface inside

特别注意access-group ... in interfacein 是指流量进入该接口时,防火墙会用 ACL 进行匹配。in interface outside 表示从互联网进入防火墙的流量。


第四部分:DMZ 服务器自身安全配置

即使 DMZ 受到防火墙保护,服务器自身的安全加固也至关重要,否则,一旦被攻破,黑客可能会尝试利用防火墙的漏洞或配置错误来渗透到内部网络。

  1. 最小化安装:只安装运行服务所必需的软件。
  2. 及时更新:保持操作系统和所有应用软件的补丁是最新的。
  3. 强密码和策略:使用复杂的密码,并启用账户锁定策略。
  4. 关闭不必要的服务和端口:如果只是 Web 服务器,就应该关闭 FTP、SSH(如果不需要远程管理)、Telnet 等服务。
  5. 配置主机防火墙:在服务器上启用 Windows Defender Firewall 或 iptables,只允许必要的端口(如 80, 443)被访问。
  6. 日志监控:定期检查服务器的访问日志和安全日志,发现异常活动。

配置 Cisco DMZ/互联网连接是一个系统性的工程,核心在于分层防御最小权限原则

  1. 物理/逻辑隔离:使用 ASA/FTD 的不同安全级别的接口(Inside, DMZ, Outside)创建网络隔离区。
  2. 地址转换:通过 NAT/PAT 解决私有网络与公网通信的问题,并为 DMZ 服务器发布服务。
  3. 访问控制:使用 ACL 精细地定义允许或拒绝的流量,确保只有合法的通信才能穿越防火墙。
  4. 纵深防御:防火墙是第一道防线,DMZ 服务器自身的安全加固是第二道防线,两者缺一不可。

遵循以上步骤和原则,你可以构建一个既能让外部用户访问你的服务,又能有效保护内部网络安全的强大防御体系。