Skip to main content

O que é DMZ?

DMZ (Demilitarized Zone) é uma rede de perímetro que separa a rede interna da internet, adicionando uma camada extra de segurança.
┌─────────────────────────────────────────────────────────────┐
│                          INTERNET                            │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                        FIREWALL                              │
│  eth0 (WAN) ─────── eth1 (DMZ) ─────── eth2 (LAN)           │
└─────────────────────────────────────────────────────────────┘
         │                    │                    │
         ▼                    ▼                    ▼
┌──────────────┐      ┌──────────────┐     ┌──────────────┐
│  Web Server  │      │   Mail GW    │     │   LAN Hosts  │
│  10.0.1.10   │      │   10.0.1.20  │     │ 192.168.1.x  │
└──────────────┘      └──────────────┘     └──────────────┘

Regras de Firewall

iptables

#!/bin/bash

# Habilitar forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush
iptables -F
iptables -t nat -F
iptables -X

# INPUT - permitir loopback e estabelecidas
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# DMZ para LAN - negar
iptables -A FORWARD -i eth1 -o eth2 -j DROP

# DMZ para internet - permitir
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# LAN para DMZ - permitir
iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT

# Internet para DMZ - permitir web/mail
iptables -A FORWARD -i eth0 -o eth1 -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 587 -j ACCEPT

# NAT para DMZ
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Exposed Host

# Web Server - NAT porta 80/443
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.1.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.0.1.10:443

# Mail Gateway
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 10.0.1.20:25
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 587 -j DNAT --to-destination 10.0.1.20:587

Load Balancer na DMZ

                     ┌──────────────┐
Internet ───────────►│  Firewall    │
                     └──────┬───────┘


                     ┌──────────────┐
                     │  Load Balancer│
                     │  (HAProxy)   │
                     └──────┬───────┘

              ┌─────────────┼─────────────┐
              ▼             ▼             ▼
        ┌──────────┐   ┌──────────┐   ┌──────────┐
        │ App #1  │   │ App #2  │   │ App #3  │
        │ DMZ     │   │ DMZ     │   │ DMZ     │
        └──────────┘   └──────────┘   └──────────┘

Best Practices

  1. DMZ mais restritiva que LAN
  2. IDS/IPS na DMZ
  3. Monitoramento constante
  4. Patch management frequente
  5. Firewall stateful
  6. Logs centralizados