Linux 非军事区 (DMZ) 以太网接口要求和配置
问:您能告诉我有关典型 DMZ 实施的 Linux 隔离区和以太网接口卡要求的更多信息吗?如何设置规则以将 HTTP 或 SMTP 流量路由到 DMZ 上的某些机器?
A.非军事区,用于保护内部网络免受外部访问。您可以使用 Linux 防火墙轻松创建 DMZ。设计带有 DMZ 的网络有很多不同的方法。基本方法是使用带有 3 个以太网卡的单个 Linux 防火墙。以下简单示例讨论了 DMZ 设置和将公共流量转发到内部服务器。
示例 DMZ 设置
考虑以下具有 3 个 NIC 的 DMZ 主机:
[a] eth0具有192.168.1.1私有 IP 地址 – 内部 LAN ~ 桌面系统
[b] eth1具有202.54.1.1公有 IP 地址 – WAN 连接到 ISP 路由器
eth2具有192.168.2.1私有 IP 地址 – DMZ 连接到邮件/Web/DNS 和其他私有服务器
(图 01:典型的基于 Linux 的 DMZ 设置[图片改编自维基百科文章])
在公共服务器和 DMZ 服务器之间路由流量
要设置一条规则,将所有传入的 SMTP 请求路由到 IP 地址为 192.168.2.2 和端口 25 的专用邮件服务器,网络地址转换 (NAT) 会调用 PREROUTING 表将数据包转发到正确的目的地。
可以使用适当的 IPTABLES 防火墙规则来实现这一点,以在 LAN 到 DMZ 和公共接口到 DMZ 之间路由流量。例如,可以使用以下 iptables 预路由规则将来自互联网 (202.54.1.1) 的所有传入邮件流量发送到 DMZ 邮件服务器 (192.168.2.2)(假设默认 DROP all 防火墙策略):
### end init firewall .. Start DMZ stuff #### # forward traffic between DMZ and LAN iptables -A FORWARD -i eth0 -o eth2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth2 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT # forward traffic between DMZ and WAN servers SMTP, Mail etc iptables -A FORWARD -i eth2 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth1 -o eth2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Route incoming SMTP (port 25 ) traffic to DMZ server 192.168.2.2 iptables -t nat -A PREROUTING -p tcp -i eth1 -d 202.54.1.1 --dport 25 -j DNAT --to-destination 192.168.2.2 # Route incoming HTTP (port 80 ) traffic to DMZ server load balancer IP 192.168.2.3 iptables -t nat -A PREROUTING -p tcp -i eth1 -d 202.54.1.1 --dport 80 -j DNAT --to-destination 192.168.2.3 # Route incoming HTTPS (port 443 ) traffic to DMZ server reverse load balancer IP 192.168.2.4 iptables -t nat -A PREROUTING -p tcp -i eth1 -d 202.54.1.1 --dport 443 -j DNAT --to-destination 192.168.2.4 ### End DMZ .. Add other rules ###
在哪里,
- -i eth1:Wan 网络接口
- -d 202.54.1.1:WAN 公共 IP 地址
- –dport 25:SMTP 流量
- -j DNAT:DNAT 目标使用 –to-destination 设置数据包的目标地址
- –to-destination 192.168.2.2:邮件服务器 IP 地址(私有 IP)
多端口重定向
您还可以使用多端口 iptables 模块来匹配一组源端口或目标端口。最多可以指定 15 个端口。例如,将传入的 HTTP(端口 80)和 HTTPS(端口 443)流量路由到 WAN 服务器负载均衡器 IP 192.168.2.3:
iptables -t nat -A PREROUTING -p tcp -i eth1 -d 202.54.1.1 -m multiport --dport 80,443 -j DNAT --to-destination 192.168.2.3
陷阱
上述设计有几个缺陷:
- 单点故障——防火墙成为网络的单点故障。
- 硬件— 防火墙主机必须能够处理流向 DMZ 以及内部网络的所有流量。
Linux / BSD 防火墙发行版
如果您发现上述讨论有点难以理解,我建议您获取一个 Linux / BSD 发行版,该发行版旨在提供基于 PC 硬件的易于管理的防火墙设备来设置 DMZ 和网关:
进一步阅读:
- Wes Sonnenreich。构建 Linux 和 Openbsd 防火墙。–使用开源软件构建商业级防火墙的分步指南。
- Eric Maiwald。网络安全:初学者指南。第二版。——它简要概述了大多数安全相关主题,也许是最好的入门书籍之一。
- Michael Rash。Linux 防火墙:使用 iptables、psad 和 fwsnort 进行攻击检测和响应 [插图] – Linux 防火墙讨论了 Linux 内核中内置的 iptables 防火墙和 Netfilter 框架的技术细节,并解释了它们如何提供强大的过滤、网络地址转换 (NAT)、状态跟踪和应用程序层检查功能,这些功能可与许多商业工具相媲美。您将了解如何使用 psad 和 fwsnort 将 iptables 部署为 IDS,以及如何使用 fwknop 在 iptables 周围构建强大的被动身份验证层。
已更新以提高准确性。