EdgeMAX - exemplo de política de zona CLI

Visão geral


Os leitores aprenderão como criar um firewall baseado em zona.

EdgeOS suporta firewalls tanto baseada em ACL e baseada em zonas, mas atualmente o firewall baseada em zonas só é configurável da CLI. Para um bom artigo sobre a diferença entre firewalls baseada em ACL e baseada em zonas, consulte: ACL vs zonas

Existem três redes:

  1. WAN - 172.16.10.0/24, 2001:0DB8:0:9999::0 / 64
  2. LAN - 192.168.100.0/24, 2001:0DB8:0:AAAA::0 / 64
  3. DMZ - 192.168.200.0/24, 2001:0DB8:0:BBBB::0 / 64

Neste exemplo específico é para um roteador em uma vara, mas você pode facilmente adaptar este exemplo para o número de NICs (Network Interface Cards) você tem.

Diagrama de rede lógica 

  • Internet – 192.168.200.100 – tcp/80
  • Internet – 192.168.200.100 – tcp/443
  • Internet – 192.168.200.100 – tcp/25
  • Internet – 192.168.200.100 – tcp/53
  • EdgeOS atua como DHCP, roteador de encaminhador, NAT, DNS, firewall.
  • 192.168.200.200/2001:0DB8:0:bbbb::200 é um servidor de email (SMTP/IMAP), web e DNS interno/externo.
  • 192.168.100.10/2001:0DB8:0:aaaa::10 é o console do administrador, que pode SSH para EdgeOS.
  • LAN e DMZ hosts têm acesso de saída básico: web, FTP, SSH.
  • LAN pode acessar os recursos de DMZ.
  • DMZ não pode acessar recursos de LAN.
  • De entrada WAN conecta ao anfitrião de DMZ.

 

 

Diagrama de rede física

A interface EdgeOS é atribuída a . 1 /: 1 endereço de suas respectivas redes. Aqui estão as atribuições VLAN dos portos:

  • WAN - VLAN 10
  • LAN - VLAN 20
  • DMZ - VLAN 30

A configuração ficará assim:

interfaces {
 ethernet eth0 {
 vif 10 {
 address 172.16.10.1/24
 address 2001:db8:0:9999::1/64
 }
 vif 20 {
 address 192.168.100.1/24
 address 2001:db8:0:AAAA::1/64
 }
 vif 30 {
 address 192.168.200.1/24
 address 2001:db8:0:BBBB::1/64
 }
 }
}

 

Noções básicas de zonas

  • Cada interface é atribuído a uma zona. A interface pode ser físico ou virtual, tais como túneis (VPN PPTP, GRE, etc.) e são tratados exatamente o mesmo.
  • Tráfego flui da zona A, zona B. Refiro-me a este fluxo como uma zona-par-direção. Por exemplo, A-> B e B-> A são duas direções-zona-par.
  • Conjuntos de regras são criados por zona-par-direção.
  • Eu nome rulesets para indicar qual zona-par-direção representam (exemplos: ZoneA-ZoneB e ZoneB-ZoneA; LAN-DMZ e DMZ-LAN). Em EdgeOS você deve ter nomes de conjunto único de regras. Em caso de sobreposição, adicionar um -6 ao final do conjunto de regras IPv6 (exemplo: LAN-DMZ e LAN-DMZ-6). Isto permite preenchimento automático e singularidade.
  • Neste exemplo, temos quatro zonas:
    • LAN
    • WAN
    • DMZ
    • Local
  • Nota: A zona Local é o firewall em si.
  • Se seu computador está na LAN e você precisará SSH em sua caixa de EdgeOS, então você precisa uma regra para permitir no conjunto de regras LAN Local. Se você deseja acessar uma página da Web da sua caixa de EdgeOS, então você precisa uma regra para permitir no conjunto de regras Local-LAN.
  • É bom citar as regras consistentemente. Como cresce o número de regras que têm e a consistência mais você tem, mais fácil sua vida será.
Rule 1 - State Established, Related
Rule 2 - State Invalid
Rule 100 - ICMP
Rule 200 - Web
Rule 300 - FTP
Rule 400 - NTP
Rule 500 - SMTP
Rule 600 - DNS
Rule 700 - DHCP
Rule 800 - SSH
Rule 900 - IMAPS
default-action drop
enable-default-log

Log e ação padrão

Zonas e conjuntos de regras têm uma declaração padrão de ação. Ao usar a zona-políticas, a ação padrão é definida pela instrução zona-política e é representada pela regra 10000.

É boa prática para registrar tráfego aceito e negado. Ele pode te salvar de significativas dores de cabeça ao tentar solucionar um problema de conectividade. Usando enable-padrão-log irá registrar tráfego batendo o ação padrão .

Por padrão, iptables não permite tráfego para sessões estabelecidas retornar, então você deve explicitamente permitir isto. Faço isso adicionando duas regras para o início de cada conjunto de regras. Regra n º 1 permite que pacotes de estado estabelecido e relacionados através de e a regra 2 gotas e logs de pacotes de estado inválido. Coloco a regra estabelecida/relacionados na parte superior, porque a grande maioria do tráfego em uma rede é estabelecida, e a regra inválida impede que pacotes de estado inválido por engano sendo comparados com outras regras. Tendo a regra mais correspondente listada primeiro reduz a carga de CPU em ambientes de alto volume.

Nota importante: você não quer adicionar o log para governar o estado estabelecido, como você vai estar registrando ambos os pacotes de entrada e de saída para cada sessão em vez de apenas o início da sessão. Seus registros serão maciças em um período muito curto de tempo.

Em EdgeOS você deve ter as interfaces criadas antes você pode aplicá-los à zona, e você deve criar o conjunto de regras antes você pode aplicá-los a uma zona-política.

  1. Criar e configurar as interfaces.
  2. Construir o conjunto de regras para cada zona-par-direção; cada conjunto de regras deve incluir pelo menos as regras do três estado.
  3. Configure as zona-políticas.

Zonas não permitem uma ação padrão de aceitação; a ação padrão é gota ou rejeitar. É importante lembrar isso, porque se você aplicar uma interface para uma zona e se comprometem, quaisquer conexões ativas serão retiradas. Especificamente, se você: 

  • são SSH'ed em EdgeOS
  • Adicionar o Local ou a interface que você está se conectando através de uma zona
  • não ter conjuntos de regras para permitir SSH e sessões estabelecidas

Então você não será capaz de se conectar.

A seguir estão as regras que foram criadas para este exemplo (que pode não ser completo), tanto em IPv4 e IPv6. Se não houver nenhum IP especificado e, em seguida, o endereço de origem/destino não é explícito. 

  1. WAN – DMZ:192.168.200.200 – tcp/80
  2. WAN – DMZ:192.168.200.200 – tcp/443
  3. WAN – DMZ:192.168.200.200 – 25/tcp
  4. WAN – DMZ:192.168.200.200 – tcp/53
  5. WAN – DMZ:2001:0DB8:0:BBBB::200 – tcp/80
  6. WAN – DMZ:2001:0DB8:0:BBBB::200 – tcp/443
  7. WAN – DMZ:2001:0DB8:0:BBBB::200 – 25/tcp
  8. WAN – DMZ:2001:0DB8:0:BBBB::200 – tcp/53
  1. DMZ - Local - tcp/53
  2. DMZ - Local - tcp/123
  3. DMZ - Local - udp/67,68
  1. LAN - Local - tcp/53
  2. LAN - Local - tcp/123
  3. LAN - Local - udp/67,68
  4. LAN:192.168.100.10 - Local - 22/tcp
  5. LAN:2001:0DB8:0:aaaa::10 - Local - 22/tcp
  1. LAN - WAN - tcp/80
  2. LAN - WAN - tcp/443
  3. LAN - WAN - 22/tcp
  4. LAN - WAN - tcp/20,21
  1. DMZ - WAN - tcp/80
  2. DMZ - WAN - tcp/443
  3. DMZ - WAN - 22/tcp
  4. DMZ - WAN - tcp/20,21
  5. DMZ - WAN - tcp/53
  6. DMZ - WAN - udp/53
  1. Local - WAN - tcp/80
  2. Local - WAN - tcp/443
  3. Local - WAN - tcp/20,21
  4. Local - WAN - tcp/53
  5. Local - WAN - udp/53
  6. Local - WAN - udp/123
  1. Local - DMZ - 25/tcp
  2. Local - DMZ - tcp/67,68
  3. Local - DMZ - tcp/53
  4. Local - DMZ - udp/53
  1. Local - LAN - tcp/67,68
  1. LAN - DMZ - tcp/80
  2. LAN - DMZ - tcp/443
  3. LAN - DMZ - tcp/993
  4. LAN:2001:0DB8:0:aaaa::10 - DMZ:2001:0DB8:0:BBBB::200 - 22/tcp
  5. LAN:192.168.100.10 - DMZ:192.168.200.200 - 22/tcp

Conjunto de regras de zona

Como temos quatro zonas, nós precisamos configurar os seguintes conjuntos de regras:

  1. LAN-WAN
  2. LAN-Local
  3. LAN-DMZ
  4. WAN-LAN
  5. WAN-Local
  6. WAN-DMZ
  7. Local-LAN
  8. Local-WAN
  9. Local-DMZ
  10. DMZ-LAN
  11. DMZ-WAN
  12. DMZ-Local

Mesmo que nunca irão se comunicar as duas zonas, é uma boa idéia para criar o conjunto de regras de zona-par-direção e habilitar o log padrão. Isso permitirá que você registrar as tentativas de acesso as redes. Sem ele, você nunca verá as tentativas de conexão.

Este é um exemplo que mostra a configuração de duas regras de base, o padrão do log e a ação padrão.

name wan-lan {
 default-action drop
 enable-default-log
 rule 1 {
 action accept
 state {
 established enable
 related enable
 }
 }
 rule 2 {
 action drop
 log enable
 state {
 invalid enable
 }
 }
}

Aqui está um exemplo de um conjunto de regras IPv6 DMZ-WAN.

ipv6-name dmz-wan-6 {
 default-action drop
 enable-default-log
 rule 1 {
 action accept
 state {
 established enable
 related enable
 }
 }
 rule 2 {
 action drop
 log enable
 state {
 invalid enable
 }
 rule 100 {
 action accept
 log enable
 protocol ipv6-icmp
 }
 rule 200 {
 action accept
 destination {
 port 80,443
 }
 log enable
 protocol tcp
 }
 rule 300 {
 action accept
 destination {
 port 20,21
 }
 log enable
 protocol tcp
 }
 rule 500 {
 action accept
 destination {
 port 25
 }
 log enable
 protocol tcp
 source {
 address 2001:db8:0:BBBB::200
 }
 }
 rule 600 {
 action accept
 destination {
 port 53
 }
 log enable
 protocol tcp_udp
 source {
 address 2001:db8:0:BBBB::200
 }
 }
 rule 800 {
 action accept
 destination {
 port 22
 }
 log enable
 protocol tcp
 }
}

Criação de diretiva de zona

Uma vez que você tem todos os seus conjuntos de regras construídos, então você precisa criar sua diretiva de zona.
Comece por definir a ação de interface e padrão para cada zona.

set zone-policy zone dmz default-action drop
set zone-policy zone dmz interface eth0.30

Neste caso, estamos a definir o conjunto de regras de IPv6 que representa o tráfego originário de LAN e destinado para a DMZ. Porque a sintaxe de firewall zona-política é um pouco estranha, mantê-lo em linha reta por pensar mais nela para trás.

set zone-policy zone dmz from lan firewall ipv6-name lan-dmz-6


A política de DMZ-LAN é LAN-DMZ. Você pode obter um ritmo quando você construir um monte de uma vez.
No final, você vai acabar com algo parecido com essa config: ZonesExampleConfigBoot . Eu tirei tudo mas o firewall, interfaces e seções de zona-política. É longo o suficiente como-é.

Nota: neste exemplo é incompleto.  

Túnel IPv6

Se você estiver usando um túnel IPv6 de HE.net ou em outro lugar, a base é o mesmo, exceto que você tem duas interfaces WAN, uma para IPv4 e para IPv6.
Você tem cinco zonas em vez de apenas quatro, e configurar seu ruleset IPv6 entre sua interface de túnel e suas zonas de LAN/DMZ em vez de para a WAN.

Pares de LAN, WAN, DMZ, Local e TUN (túnel) IPv6 são:

  1. LAN-TUN
  2. LAN-Local
  3. LAN-DMZ
  4. TUN-LAN
  5. TUN-Local
  6. TUN-DMZ
  7. Local-LAN
  8. Local-TUN
  9. Local-DMZ
  10. DMZ-LAN
  11. DMZ-TUN
  12. DMZ-Local

Nota: nenhum vai a WAN desde WAN não tem um endereço IPv6 sobre ele.


Você tem que adicionar algumas regras para seu conjunto de regras de WAN-Local para permitir o protocolo 41 pol.

aqui está um exemplo:

rule 400 {
 action accept
 destination {
 address 172.16.10.1
 }
 log enable
 protocol 41
 source {
 address ip.of.tunnel.broker
 }
}