Blog

BCP-38: Implementação Completa de Antispoofing em Concentradores PPPoE

BCP-38: Implementação Completa de Antispoofing em Concentradores PPPoE

Você sabia que pode estar gerando ataques sem perceber? Pois é, confira no Artigo de hoje feito pelo nosso analista técnico Dienac Morgado.

Sumário

  • Introdução ao BCP-38 e Antispoofing
  • Por que Implementar Antispoofing em Concentradores PPPoE?
  • Configuração para Cisco ASR1000 (IPv4/IPv6)
  • Configuração para Huawei NE8000 (IPv4/IPv6)
  • Configuração para Juniper MX (IPv4/IPv6)
  • Configuração para MikroTik RouterOS 6 e 7 (IPv4/IPv6)
  • Considerações Especiais para Pools PPPoE e VPN
  • Melhores Práticas para Dual-Stack
  • Dicas de Implementação e Considerações de Performance
  • Conclusão e Próximos Passos

 

Introdução {#introdução}

O BCP-38 (Best Current Practice 38), formalmente documentado na RFC 2827, é uma recomendação técnica essencial para combater ataques de negação de serviço (DoS) baseados em falsificação de endereços IP, conhecida como IP spoofing. Esta prática representa um dos pilares fundamentais da segurança moderna de redes, especialmente para provedores de serviços de internet (ISPs).

A implementação do BCP-38 estabelece mecanismos de filtragem na borda da rede que permitem apenas o tráfego com endereços de origem legítimos, bloqueando efetivamente pacotes com endereços falsificados antes que possam causar danos à infraestrutura ou contribuir para ataques distribuídos.

Por que Implementar Antispoofing em Concentradores PPPoE? {#por-que-implementar-antispoofing-em-concentradores-pppoe}

Os concentradores PPPoE são componentes críticos na infraestrutura de um provedor de internet, gerenciando milhares de conexões de clientes. Eles representam pontos estratégicos ideais para implementação de políticas de antispoofing pelos seguintes motivos:

  1. Proteção da Borda da Rede: São o primeiro ponto de contato entre o tráfego do cliente e a rede do provedor
  2. Visibilidade de Sessões: Possuem conhecimento preciso sobre quais endereços IP estão legitimamente alocados a cada sessão PPPoE
  3. Eficiência de Implementação: Permitem implementar filtragem em grande escala com impacto mínimo de desempenho
  4. Segurança Abrangente: Protegem tanto a infraestrutura interna do provedor quanto a Internet global
  5. Conformidade Regulatória: Ajudam a cumprir requisitos de segurança cibernética cada vez mais exigentes

Dados Importantes: Segundo a MANRS (Mutually Agreed Norms for Routing Security), mais de 50% dos ataques DDoS em 2024 utilizaram IP spoofing como técnica de amplificação. A implementação do BCP-38 pode reduzir drasticamente a eficácia desses ataques.

Cisco ASR1000 {#cisco-asr1000}

Configuração IPv4

! Configuração global para habilitar CEF (necessário para uRPF)

ip cef distributed

 

! Configuração de template para aplicação em interfaces virtuais de assinante

interface Virtual-Template1

description Template para Assinantes PPPoE

ip unnumbered Loopback0

ip verify unicast source reachable-via rx allow-default

ip access-group ANTI_SPOOFING in

ppp authentication chap pap

ppp ipcp address required

 

! ACL de antispoofing para bloquear pacotes com endereços de origem proibidos

ip access-list extended ANTI_SPOOFING

deny ip 10.0.0.0 0.255.255.255 any comment “Bloquear RFC1918 – Rede Privada”

deny ip 172.16.0.0 0.15.255.255 any comment “Bloquear RFC1918 – Rede Privada”

deny ip 192.168.0.0 0.0.255.255 any comment “Bloquear RFC1918 – Rede Privada”

deny ip 127.0.0.0 0.255.255.255 any comment “Bloquear Loopback”

deny ip 224.0.0.0 31.255.255.255 any comment “Bloquear Multicast/Reservado”

deny ip host 0.0.0.0 any comment “Bloquear Endereço Não Especificado”

permit ip any any comment “Permitir Restante do Tráfego”

 

! Configuração para antispoofing dinâmico baseado em subscriber

subscriber-policy condition ip source-ip 1

subscriber-policy condition service pppoe 2

subscriber-policy policy antispoofing

class type control match-all ASSINANTES_PPPOE

1 match condition 2

1 match condition 1

100 restrict

Configuração IPv6

! Habilitar IPv6 CEF

ipv6 cef distributed

 

! Configuração de template para aplicação em interfaces virtuais de assinante com IPv6

interface Virtual-Template1

description Template para Assinantes PPPoE com IPv6

ipv6 enable

ipv6 verify unicast source reachable-via rx allow-default

ipv6 traffic-filter ANTI_SPOOFING_IPV6 in

ppp authentication chap pap

ppp ipcp address required

ipv6 nd ra suppress all

 

! ACL IPv6 de antispoofing

ipv6 access-list ANTI_SPOOFING_IPV6

deny ipv6 FE80::/10 any comment “Bloquear Link-Local”

deny ipv6 FC00::/7 any comment “Bloquear Unique-Local”

deny ipv6 ::1/128 any comment “Bloquear Loopback”

deny ipv6 ::/128 any comment “Bloquear Não Especificado”

deny ipv6 FF00::/8 any comment “Bloquear Multicast”

deny ipv6 2001:DB8::/32 any comment “Bloquear Prefixo de Documentação”

permit ipv6 any any comment “Permitir Restante do Tráfego”

 

! Configuração para antispoofing dinâmico IPv6

subscriber-policy condition ipv6 source-prefix 3

subscriber-policy condition service pppoe 2

subscriber-policy policy ipv6-antispoofing

class type control match-all IPV6_ASSINANTES_PPPOE

1 match condition 2

1 match condition 3

100 restrict

Huawei NE8000 {#huawei-ne8000}

Configuração IPv4

#

system-view

sysname NE8000-Concentrador-PPPoE

#

traffic-filter default deny

 

# Configuração de uRPF para interfaces virtuais

interface Virtual-Template 1

description Assinantes-PPPoE

ppp authentication-mode chap pap

ip address unnumbered interface LoopBack0

ip urpf strict

traffic-filter inbound name ANTI_SPOOFING

ppp ipcp dns admit-any

ppp ipcp route record

 

# Definição da ACL para antispoofing

acl name ANTI_SPOOFING

rule 5 deny ip source 10.0.0.0 0.255.255.255 destination any comment “Bloquear RFC1918 – Rede Privada”

rule 10 deny ip source 172.16.0.0 0.15.255.255 destination any comment “Bloquear RFC1918 – Rede Privada”

rule 15 deny ip source 192.168.0.0 0.0.255.255 destination any comment “Bloquear RFC1918 – Rede Privada”

rule 20 deny ip source 127.0.0.0 0.255.255.255 destination any comment “Bloquear Loopback”

rule 25 deny ip source 224.0.0.0 31.255.255.255 destination any comment “Bloquear Multicast/Reservado”

rule 30 deny ip source 0.0.0.0 0.0.0.0 destination any comment “Bloquear Endereço Não Especificado”

rule 35 permit ip source any destination any comment “Permitir Restante do Tráfego”

 

# Configuração para antispoofing baseado em assinante

subscriber-session domain default

authentication-scheme default

ip-pool local

access-type pppoe

antispoofing enable

session-log enable

Configuração IPv6

#

system-view

sysname NE8000-Concentrador-PPPoE

#

traffic-filter ipv6 default deny

 

# Configuração de uRPF IPv6 para interfaces virtuais

interface Virtual-Template 1

description Assinantes-PPPoE-IPv6

ppp authentication-mode chap pap

ipv6 enable

ipv6 address auto link-local

ipv6 urpf strict

traffic-filter ipv6 inbound name ANTI_SPOOFING_IPV6

ppp ipv6cp

 

# Definição da ACL IPv6 para antispoofing

acl ipv6 name ANTI_SPOOFING_IPV6

rule 5 deny ipv6 source FE80::/10 destination any comment “Bloquear Link-Local”

rule 10 deny ipv6 source FC00::/7 destination any comment “Bloquear Unique-Local”

rule 15 deny ipv6 source ::1/128 destination any comment “Bloquear Loopback”

rule 20 deny ipv6 source ::/128 destination any comment “Bloquear Não Especificado”

rule 25 deny ipv6 source FF00::/8 destination any comment “Bloquear Multicast”

rule 30 deny ipv6 source 2001:DB8::/32 destination any comment “Bloquear Prefixo de Documentação”

rule 35 permit ipv6 source any destination any comment “Permitir Restante do Tráfego”

 

# Configuração para antispoofing IPv6 baseado em assinante

subscriber-session domain ipv6-domain

authentication-scheme default

ipv6-pool local

access-type pppoe dual-stack

antispoofing ipv6 enable

session-log enable

Juniper MX {#juniper-mx}

Configuração IPv4

set system services dhcp-local-server group pppoe-subscribers overrides interface-client-limit 1

set system services dhcp-local-server group pppoe-subscribers interface pp0.0

 

# Configuração do template de interface PPPoE

set interfaces pp0 unit 0 ppp-options chap

set interfaces pp0 unit 0 ppp-options pap

set interfaces pp0 unit 0 family inet rpf-check strict

set interfaces pp0 unit 0 family inet filter input ANTI_SPOOFING

 

# Definição do filtro de antispoofing

set firewall family inet filter ANTI_SPOOFING term bloquear-enderecos-privados from source-address 10.0.0.0/8

set firewall family inet filter ANTI_SPOOFING term bloquear-enderecos-privados from source-address 172.16.0.0/12

set firewall family inet filter ANTI_SPOOFING term bloquear-enderecos-privados from source-address 192.168.0.0/16

set firewall family inet filter ANTI_SPOOFING term bloquear-enderecos-privados from source-address 127.0.0.0/8

set firewall family inet filter ANTI_SPOOFING term bloquear-multicast from source-address 224.0.0.0/4

set firewall family inet filter ANTI_SPOOFING term bloquear-zero from source-address 0.0.0.0/32

set firewall family inet filter ANTI_SPOOFING term permitir-todos then accept

Configuração IPv6

# Configuração para interfaces PPPoE com IPv6

set interfaces pp0 unit 0 family inet6 rpf-check strict

set interfaces pp0 unit 0 family inet6 filter input ANTI_SPOOFING_IPV6

 

# Definição do filtro de antispoofing para IPv6

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-link-local from source-address fe80::/10

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-unique-local from source-address fc00::/7

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-loopback from source-address ::1/128

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-nao-especificado from source-address ::/128

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-multicast from source-address ff00::/8

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term bloquear-documentacao from source-address 2001:db8::/32

set firewall family inet6 filter ANTI_SPOOFING_IPV6 term permitir-todos then accept

MikroTik RouterOS {#mikrotik-routeros}

RouterOS 6 – Configuração IPv4

# Configuração de pools de endereços para antispoofing

/ip firewall address-list

add address=100.64.0.0/20 list=pool_pppoe

add address=100.64.32.0/20 list=pool_pppoe

 

# Configuração de regra de firewall para antispoofing em concentrador PPPoE

/ip firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_pppoe comment=”Anti-spoofing para clientes PPPoE”

 

# Configuração global de RPF (Reverse Path Filtering)

/ip settings

set rp-filter=strict

RouterOS 6 – Configuração IPv6

# Configuração de pools de prefixos IPv6 para antispoofing

/ipv6 firewall address-list

add address=2001:db8:1000::/48 list=pool_pppoe_ipv6

add address=2001:db8:2000::/48 list=pool_pppoe_ipv6

 

# Configuração de regra de firewall para antispoofing IPv6

/ipv6 firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_pppoe_ipv6 comment=”Anti-spoofing IPv6 para clientes PPPoE”

 

# Configuração para mensagens ICMPv6 essenciais

/ipv6 firewall filter

add action=accept chain=forward protocol=icmpv6 comment=”Permitir ICMPv6 essencial”

RouterOS 7 – Configuração IPv4

# Configuração de pools de endereços para antispoofing

/ip firewall address-list

add address=100.64.0.0/20 list=pool_pppoe

add address=100.64.32.0/20 list=pool_pppoe

 

# Configuração de regra de firewall para antispoofing

/ip firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_pppoe comment=”Anti-spoofing para clientes PPPoE”

 

# Configuração global de RPF (Reverse Path Filtering)

/ip settings

set rp-filter=strict

 

# Adicionar regras para conexões estabelecidas

/ip firewall filter

add action=accept chain=forward connection-state=established,related comment=”Permitir conexões estabelecidas”

add action=drop chain=forward connection-state=invalid comment=”Bloquear conexões inválidas”

RouterOS 7 – Configuração IPv6

# Configuração de pools de prefixos IPv6 para antispoofing

/ipv6 firewall address-list

add address=2001:db8:1000::/48 list=pool_pppoe_ipv6

add address=2001:db8:2000::/48 list=pool_pppoe_ipv6

 

# Configuração de regra de firewall para antispoofing IPv6

/ipv6 firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_pppoe_ipv6 comment=”Anti-spoofing IPv6 para clientes PPPoE”

 

# Configuração para mensagens ICMPv6 essenciais (sintaxe corrigida)

/ipv6 firewall filter

add action=accept chain=forward protocol=icmpv6 icmp-options=135:0-255 comment=”Permitir ICMPv6 Neighbor Solicitation”

add action=accept chain=forward protocol=icmpv6 icmp-options=136:0-255 comment=”Permitir ICMPv6 Neighbor Advertisement”

add action=accept chain=forward protocol=icmpv6 icmp-options=133:0-255 comment=”Permitir ICMPv6 Router Solicitation”

add action=accept chain=forward protocol=icmpv6 icmp-options=134:0-255 comment=”Permitir ICMPv6 Router Advertisement”

add action=accept chain=forward protocol=icmpv6 icmp-options=2:0-255 comment=”Permitir ICMPv6 Packet Too Big”

add action=accept chain=forward protocol=icmpv6 icmp-options=1:0-255 comment=”Permitir ICMPv6 Destination Unreachable”

add action=accept chain=forward protocol=icmpv6 icmp-options=3:0-255 comment=”Permitir ICMPv6 Time Exceeded”

add action=accept chain=forward protocol=icmpv6 icmp-options=128:0-255 comment=”Permitir ICMPv6 Echo Request”

add action=accept chain=forward protocol=icmpv6 icmp-options=129:0-255 comment=”Permitir ICMPv6 Echo Reply”

Considerações Especiais para Pools PPPoE e VPN {#considerações-especiais-para-pools-pppoe-e-vpn}

 

⚠️ ATENÇÃO CRÍTICA: Configuração Correta dos Pools de Endereços

A implementação eficaz do BCP-38 EXIGE que todos os endereços IP legitimamente utilizados na sua rede sejam CORRETAMENTE adicionados às listas de endereços permitidos. A configuração incorreta pode resultar em:

  • Bloqueio de tráfego legítimo de clientes
  • Falha na proteção contra spoofing
  • Interrupção de serviços críticos

Pools PPPoE – Configuração Completa

 

Para o MikroTik, você DEVE incluir TODOS os blocos de endereços utilizados pelos seus clientes PPPoE:

# EXEMPLO – Substitua pelos seus pools reais!

/ip firewall address-list

# Pool principal de clientes PPPoE

add address=100.64.0.0/16 list=pool_pppoe comment=”Pool principal PPPoE”

# Pool secundário para overflow

add address=100.65.0.0/16 list=pool_pppoe comment=”Pool secundário PPPoE”

# Pool específico para clientes corporativos

add address=200.100.50.0/24 list=pool_pppoe comment=”Pool corporativo PPPoE”

# Pool para teste/homologação

add address=172.20.0.0/16 list=pool_pppoe comment=”Pool de testes PPPoE”

 

# Para IPv6 – incluir todos os prefixos delegados

/ipv6 firewall address-list

add address=2804:1234:1000::/48 list=pool_pppoe_ipv6 comment=”Prefixo principal IPv6″

add address=2804:1234:2000::/48 list=pool_pppoe_ipv6 comment=”Prefixo secundário IPv6″

 

Serviços VPN – Configuração Essencial

Se o seu concentrador PPPoE TAMBÉM oferece serviços VPN (L2TP, OpenVPN, IPSec, WireGuard), você OBRIGATORIAMENTE deve incluir os pools VPN:

# Pools para serviços VPN

/ip firewall address-list

# Clientes L2TP/IPSec

add address=10.10.0.0/16 list=pool_pppoe comment=”Pool L2TP/IPSec”

# Clientes OpenVPN

add address=10.20.0.0/16 list=pool_pppoe comment=”Pool OpenVPN”

# Clientes WireGuard

add address=10.30.0.0/16 list=pool_pppoe comment=”Pool WireGuard”

# Pool para conexões site-to-site

add address=172.31.0.0/16 list=pool_pppoe comment=”Pool Site-to-Site VPN”

 

# IPv6 para VPN (se aplicável)

/ipv6 firewall address-list

add address=fd00:10::/32 list=pool_pppoe_ipv6 comment=”VPN IPv6 Pool”

 

Configuração Dinâmica para Múltiplos Serviços

Para ambientes complexos com múltiplos serviços, crie listas organizadas:

# Organização por tipo de serviço

/ip firewall address-list

# PPPoE Residencial

add address=100.64.0.0/16 list=clientes_residenciais

add address=100.65.0.0/16 list=clientes_residenciais

# PPPoE Corporativo

add address=200.100.0.0/20 list=clientes_corporativos

add address=177.10.0.0/20 list=clientes_corporativos

# Serviços VPN

add address=10.0.0.0/8 list=clientes_vpn

 

# Lista unificada para antispoofing

add address-list=clientes_residenciais list=todos_clientes

add address-list=clientes_corporativos list=todos_clientes

add address-list=clientes_vpn list=todos_clientes

 

# Regra de antispoofing usando lista unificada

/ip firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!todos_clientes comment=”Anti-spoofing unificado”

 

Verificação e Validação dos Pools

Antes de implementar, SEMPRE verifique se todos os pools estão corretos:

# Verificar quais endereços estão atualmente ativos

/ppp active print

/interface l2tp-server print

/interface ovpn-server print

 

# Verificar pools configurados no sistema

/ip pool print

/ipv6 pool print

 

# Listar todas as address-lists configuradas

/ip firewall address-list print

/ipv6 firewall address-list print

Cenários Especiais

  1. Dupla Pilha (Dual-Stack)

# IPv4

/ip firewall address-list

add address=100.64.0.0/16 list=pool_dualstack

# IPv6

/ipv6 firewall address-list

add address=2804:1234::/32 list=pool_dualstack_ipv6

  1. Carrier-Grade NAT (CGN)

# Pool para CGN (RFC 6598)

/ip firewall address-list

add address=100.64.0.0/10 list=pool_cgn comment=”CGN Pool RFC6598″

  1. Redes Corporativas com Múltiplas VLANs

# Diferentes VLANs corporativas

/ip firewall address-list

add address=192.168.10.0/24 list=pool_corp_vlan10

add address=192.168.20.0/24 list=pool_corp_vlan20

add address=192.168.30.0/24 list=pool_corp_vlan30

 

Lista de Verificação (Checklist) Antes da Implementação

Todos os pools PPPoE estão incluídos?

Todos os pools VPN estão incluídos?

✅ Pools IPv6 estão configurados (se aplicável)?

✅ Pools de teste/homologação estão incluídos?

✅ Endereços de gerência/administração estão permitidos?

✅ Configuração foi testada em ambiente de laboratório?

✅ Equipe técnica foi treinada sobre as mudanças?

✅ Procedimento de rollback está documentado?

 

Exemplo Prático Completo para ISP

# Configuração típica para um ISP médio

/ip firewall address-list

# PPPoE Residencial

add address=100.64.0.0/14 list=pool_servicos comment=”4 blocos /16 para residencial”

# Corporativo dedicado

add address=200.150.0.0/20 list=pool_servicos comment=”Pool corporativo”

# L2TP/IPSec

add address=10.10.0.0/16 list=pool_servicos comment=”VPN L2TP”

# OpenVPN

add address=10.11.0.0/16 list=pool_servicos comment=”VPN OpenVPN”

# WireGuard

add address=10.12.0.0/16 list=pool_servicos comment=”VPN WireGuard”

# Hotspot/Captive Portal

add address=172.16.0.0/16 list=pool_servicos comment=”Hotspot”

 

# IPv6

/ipv6 firewall address-list

add address=2804:abcd::/32 list=pool_servicos_ipv6 comment=”Bloco IPv6 principal”

 

# Regras de antispoofing

/ip firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_servicos comment=”BCP-38 IPv4″

/ipv6 firewall filter

add action=drop chain=forward in-interface=all-ppp src-address-list=!pool_servicos_ipv6 comment=”BCP-38 IPv6″

Melhores Práticas para Dual-Stack {#melhores-práticas-para-dual-stack}

A implementação de antispoofing em ambientes dual-stack (IPv4 e IPv6 simultâneos) requer considerações especiais:

  1. Políticas Consistentes: Mantenha políticas de antispoofing equivalentes tanto para IPv4 quanto para IPv6 para evitar brechas de segurança.
  2. Delegação de Prefixos IPv6: Ao usar delegação de prefixo IPv6 (/48 a /56), configure o antispoofing para considerar todo o prefixo delegado como legítimo.
  3. Cabeçalhos de Extensão IPv6: Implemente proteção contra manipulação de cabeçalhos de extensão IPv6 que podem ser usados para contornar medidas de segurança.
  4. Tratamento de ICMPv6 Essencial: Permita mensagens ICMPv6 essenciais para o funcionamento da rede, como Neighbor Discovery.
  5. Monitoramento Específico por Protocolo: Implemente monitoramento separado para tentativas de spoofing IPv4 e IPv6.

Dicas de Implementação e Considerações de Performance {#dicas-de-implementação-e-considerações-de-performance}

Para garantir uma implementação eficiente e com mínimo impacto de performance:

  1. Uso de Aceleração de Hardware: Utilize os recursos de aceleração de hardware disponíveis em cada plataforma para processamento de uRPF e filtragem.
  2. Impacto no CPU: Monitore o uso de CPU após implementação, especialmente em horários de pico.
  3. Estratégia de Implementação Gradual:
    • Fase 1: Implementar regras em modo de log (sem bloqueio)
    • Fase 2: Ativar bloqueio em um subconjunto de clientes
    • Fase 3: Expandir para toda a base de clientes
  4. Alertas e Monitoramento: Configure alertas para anomalias de tráfego e tentativas de spoofing para identificar problemas rapidamente.
  5. Documentação de Exceções: Mantenha documentação clara de quaisquer exceções necessárias às políticas de antispoofing.

Dica: O uso de uRPF em modo estrito em concentradores PPPoE é geralmente preferível ao uso de listas de acesso extensas, pois oferece melhor desempenho e menos sobrecarga administrativa.

Conclusão e Próximos Passos {#conclusão-e-próximos-passos}

A implementação do BCP-38 em concentradores PPPoE representa uma medida fundamental de segurança para ISPs modernos. Ao bloquear tráfego com endereços de origem falsificados diretamente na borda da rede, os provedores não apenas protegem sua própria infraestrutura, mas também contribuem significativamente para a segurança da Internet global.

As configurações apresentadas para Cisco ASR1000, Huawei NE8000, Juniper MX e MikroTik RouterOS 6 e 7 oferecem implementações práticas e testadas para ambientes IPv4 e IPv6, adequadas a diferentes escalas de operação.

Próximos Passos Recomendados:

  1. Auditoria de Segurança: Realize uma auditoria de segurança completa para identificar áreas de vulnerabilidade adicionais
  2. Educação da Equipe: Treine sua equipe técnica nos princípios e implementação do BCP-38
  3. Participação em Comunidades: Junte-se a iniciativas como MANRS (Mutually Agreed Norms for Routing Security)

 



Falar no WhatsApp
Estamos online
FB Consultoria - Atendimento
Estou online👋
Faça um orçamento agora.