Antispoofing: Entenda a necessidade do Antispoofing em seu Provedor
Muitas vezes, pacotes IP com endereços de origem incorretos são enviados para Internet utilizando endereços reservados ou endereços de redes de terceiros. Essa técnica é conhecida como spoofing, ou falsificação de pacotes. Normalmente ela é utilizada em ataques na Internet chamados de negação de serviços(DoS – Denial of Service). Se os equipamentos na rede onde os pacotes foram gerados não verificarem a origem dos pacotes, qualquer ação posterior para identificá-los ou bloqueá-los é muito dificultada. A figura abaixo exemplifica esse tipo de ataque:
Este texto contém recomendações aos operadores de redes para que implementem mecanismos que garantam que suas redes retransmitam somente pacotes IPs com endereços pertencentes a elas mesmas. Todas as orientações apresentadas se baseiam principalmente nos documentos de boas práticas BCP 38: Network Ingress Filtering Defeating Denial of Service Attacks which employ IP Source Address Spoofing e BCP 84: Ingress Filtering for Multihomed Networks, da IETF.
Entendendo melhor o problema
Cada dispositivo conectado à Internet possui um endereço global único e roteável que lhe permite comunicar com outros dispositivos na rede. É através desse endereço que os roteadores sabem para onde encaminhar as mensagens na Internet.
Pode ocorrer que, por erro ou intencionalmente, um dispositivo tente mandar pacotes cujo endereço de origem é diferente do que lhe foi atribuído. Um roteador, por sua vez por não analisar a origem, pode encaminhar esse pacote para o dispositivo destino, mesmo que o endereço de retorno esteja incorretamente configurado.
Quando isso é feito de forma intencional, normalmente tem por objetivo ataques a outras redes e serviços. Por utilizarem endereços de origem falsificados, sejam reservados ou privados ou pertencentes a outras redes, esse tipo de ataque complica o rastreamento até sua verdadeira origem. Portanto, ataques realizados dessa forma são de complexa identificação e por consequência dificultam qualquer ação para cessá-los.
Conforme o endereço de origem de um pacote é trocado pelo endereço de um outro nó, um ataque pode ser direcionado a esse outro dispositivo, pois a resposta a esse pacote será enviado para o endereço de origem falsificado. Há casos bem documentados de ataques que utilizam essa técnica associada a serviços cujo pacote de resposta é algumas vezes maior que o pacote de solicitação, fazendo assim uma amplificação do ataque. Um exemplo disso pode ser visto com serviço DNS sob UDP onde as consultas a certos “Resources Records” são pequenas, poucas dezenas de bytes, mas as repostas podem ser gigantes, dezenas de vezes maior. Essas respostas amplificadas seriam, nesse caso, enviadas para dispositivos na instituição cujo endereço forjado foi utilizado como sendo origem das solicitações DNS.
Existem relatos de ataques de amplificação utilizando também outros protocolos como SNMP [1]. As solicitações nesse caso não têm grande impacto pois são pequenas, mas as respostas conterão pacotes gigantes, amplificados, que podem chegar saturar enlaces ou serviços na instituição atacada.
Impacto
Qualquer rede conectada à Internet pode ser vitima dos ataques aqui descritos. Mesmo com a implementação de filtros nas bordas da rede para descartar pacotes originados em redes privadas ou não alocadas, há ainda a possibilidade de ataques utilizando endereços públicos e roteados mas pertencentes a outras redes (spoofing).
Solução
A solução para evitar esse tipo de ataque demanda ações em conjunto entre operadores de redes conectadas a Internet. Equipamentos responsáveis pela comutação de pacotes IPs devem fazer controle do endereço de origem.
A recomendação descrita na BCP 38 (RFC 287 [2]) publicada pela IETF em 2000 é que os pacotes na interface de entrada da rede do provedor sejam filtrados, de forma a permitir somente aqueles cujo endereço de origem seja parte da rede conectada àquela interface.
A recomendação menciona também filtros nos servidores de acesso remoto ou agregadores, pois, em geral, nessas conexões, haverá somente um dispositivo conectado, não uma rede, sendo, portanto, possível ao servidor filtrar qualquer pacote cujo endereço origem não seja aquele atribuído ao dispositivo pelo servidor de acesso ou agregador.
É comum que a autenticação de clientes e a designação de endereços seja feita por agregadores que estão conectados ao centro/core da rede. Esses agregadores poderiam ter listas de acesso nas interfaces de conexão ao centro/core da rede de forma a permitir saída somente de pacotes cujo endereço de origem pertença ao segmento de rede destinado a atender aqueles usuários.
A recomendação proposta demanda uma gerência de listas de controle e acesso em todos os equipamentos que dão acesso aos usuários/clientes, o que acaba sendo factível somente redes pequenas ou de baixa complexidade.
Embora seja de maior complexidade é uma solução efetiva para o problema.
Reverse Path Forwarding
Em redes de maior complexidade, com maior número de roteadores e usuários diversos, manter centenas ou milhares de listas de acesso em um grande número de equipamentos pode ser uma tarefa árdua e que induza a erros, possivelmente prejudicando usuários legítimos.
Para esses casos a recomendação a seguir é a descrita na BCP 84 (RFC 3704 [3]), que basicamente indica o uso de técnicas bastante comuns em roteadores denominadas RPF, ou “Reverse Path Forwarding”. Essa técnica faz com o roteador filtre qualquer pacote em uma interface cuja rota de retorno do pacote não seja através dessa mesma interface.
Dessa forma um pacote configurado com endereço incorreto seria descartado pela interface do roteador uma vez que a rota para a rede do endereço de origem não “apontaria” para essa mesma interface.
A configuração é mais simples, exige apenas habilitar essa funcionalidade nas interfaces dos roteadores de acesso às redes dos clientes sem necessidade de alterações na configuração a cada novo cliente, como ocorreria, por exemplo, com listas de controle/acesso.
É recomendado que essa configuração seja feita nas interfaces que conectam as redes dos clientes ou de acesso de usuários. Em casos que um provedor tenha clientes multi homed conectados a sua rede, deve-se utilizar uma configuração específica de RPF.
Em casos não muito comuns de clientes utilizando IPs alocados por seus dois ou mais provedores, pode ocorrer que o tráfego saindo por uma interface/rede esteja com endereço de origem pertencente ao espaço alocado pelo outro provedor; e com implementação de RPF nessa interface o tráfego seria bloqueado. Uma possível solução para esse problema seria a implementação de mecanismos que garantam que o tráfego originado em um determinado espaço de endereços seja roteado para a interface do provedor que alocou esses endereços via esquemas de roteamento pela origem (source-routing).
Filtro antispoofing – exemplo para MikroTik
É necessário que os provedores de acesso à Internet adotem medidas para evitar que seus usuários, intencionalmente ou não, enviem na rede pacotes com origens inválidas (endereços diferentes dos endereços que lhe são atribuídos). Isso é chamado spoofing e muitas vezes é utilizado para ataques de negação de serviço. Apenas um filtro aplicado no próprio provedor de acesso, preferencialmente na interface do roteador conectada diretamente ao usuário, é eficaz contra isso.
Filtro para ser aplicado na interface do PE conectado ao CPE
A configuração consiste basicamente em se criar um filtro para que somente os pacotes que utilizem endereços atribuídos aos seus clientes como origem sejam encaminhados a Internet. Note que no meio da configuração, possui um escrito “Troque este endereço pelo que é usado em sua rede!” para alertar que você deve mudar aquela linha de acordo com os endereços alocados a sua instituição.
Além disso, como medida de redundância foi habilitado o uRPF para ajudar que pacotes com problemas não sejam transmitidos.
Configuração para IPv4
/ip address
# Endereco da interface do roteador.
# Troque este endereço pelo que é usado em sua rede!
add address=192.0.2.1/30 interface=ether1 network=192.0.2.0
…
/ip firewall address-list
# Permite o IP alocado para o CPE do cliente
# Troque este endereço pelo que é usado em sua rede!
add address=192.0.2.2/32 list=FILTRO-CLIENTE-V4
# Permite o range de IPs alocados para o seu cliente
# Troque este endereço pelo que é usado em sua rede!
add address=192.0.2.0/24 list=FILTRO-CLIENTE-V4
/ip firewall filter
add chain=forward comment="Aplicando filtro de enderecos dos clientes na interface" in-interface=ether1 src-address-list=FILTRO-CLIENTE-V4
add action=drop chain=forward in-interface=ether1
/ip settings set rp-filter=strict
Configuração para IPv6
ipv6 address
# Endereco da interface do roteador.
# Troque este endereço pelo que é usado em sua rede!
add address=2001:db8:cafe:faca::1/64 advertise=no interface=ether1
…
/ipv6 firewall address-list
# Permite o IP alocado para o CPE do cliente
# Troque este endereço pelo que é usado em sua rede!
add address=2001:DB8:CAFE:FACA::2/64 list=FILTRO-CLIENTE-V6
# Permite o range de IPs alocados para o seu cliente
# Troque este endereço pelo que é usado em sua rede!
add address=2001:DB8:CAFE::/48 list=FILTRO-CLIENTE-V6
/ipv6 firewall filter
add chain=forward in-interface=ether1 src-address-list=FILTRO-CLIENTE-V6
add action=drop chain=forward in-interface=ether1
Filtro para ser aplicado na interface do CPE conectado ao PE
A configuração a seguir serve para evitar que o cliente receba pacotes com origem de endereços reservados, mas não protege completamente contra todos os ataques. Ela deve ser encarado como uma ajuda à proteção da rede de uma instituição.
Além disso, ela não evita que os clientes façam ataques em redes de terceiros. Portanto essa configuração deve ser aplicada em conjunto com a configuração anterior feita no PE para minimizar os ataques de spoofing.
Note que no meio da configuração, possui um escrito “Troque este endereço pelo que é usado em sua rede!” para alertar que você deve mudar aquela linha de acordo com os endereços alocados a sua instituição. Ademais, na configuração está sendo filtrado endereços privados, caso você utilize esses endereços, eles precisam ser retirados dos filtros.
Configuração para IPv4
/ip address
# Endereco da interface do roteador.
# Troque este endereço pelo que é usado em sua rede!
add address=192.0.2.1/30 interface=ether1 network=192.0.2.0
...
/ip firewall address-list
# faixa de enderecos reservados para identificar que o host pertence a rede local
add address=0.0.0.0/8 list=FILTRO-BOGONS-V4
# faixa de enderecos privados
add address=10.0.0.0/8 list=FILTRO-BOGONS-V4
# faixa de enderecos privados do CGNAT
add address=100.64.0.0/10 list=FILTRO-BOGONS-V4
# faixa de enderecos reservados para loopback
add address=127.0.0.0/8 list=FILTRO-BOGONS-V4
# faixa de enderecos reservados para escopo local
add address=169.254.0.0/16 list=FILTRO-BOGONS-V4
# faixa de enderecos privados
add address=172.16.0.0/12 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado para atribuição a protocolos específicos
add address=192.0.0.0/24 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado para documentação
add address=192.0.2.0/24 list=FILTRO-BOGONS-V4
# faixa de enderecos privados
add address=192.168.0.0/24 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado para testes - benchmarking
add address=198.18.0.0/15 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado para documentação
add address=198.51.100.0/24 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado para documentação
add address=203.0.113.0/24 list=FILTRO-BOGONS-V4
# faixa de enderecos reservado da antiga classe D de multicast e uso futuro
add address=224.0.0.0/3 list=FILTRO-BOGONS-V4
/ip firewall filter
add action=drop chain=forward comment="Aplicando filtro de enderecos Bogons a interface" \
in-interface=ether1 src-address-list=FILTRO-BOGONS-V4
# permite todo o resto
/ip settings set rp-filter=strict
Configuração para IPv6
ipv6 address
# Endereco da interface do roteador.
# Troque este endereço pelo que é usado em sua rede!
add address=2001:db8:cafe:faca::1/64 advertise=no interface=ether1
...
/ipv6 firewall address-list
# faixa de endereços dos enderecos globais
add address=2000::/3 list=FILTRO-BOGONS-V6
# faixa de endereços dos enderecos link local
add address=fe80::/64 list=FILTRO-BOGONS-V6
# Endereco nao especificado
add address=::/128 list=FILTRO-BOGONS-V6
/ipv6 firewall filter
# faixa de endereços reservada para documentacao
add action=drop chain=forward in-interface=ether1 src-address=2001:db8::/32
add chain=forward in-interface=ether1 src-address-list=FILTRO-BOGONS-V6
# bloqueia todo o resto
add action=drop chain=forward in-interface=ether1
Filtro mais restritivo
Um filtro mais restritivo pode ser feito utilizando as faixas de endereços alocados pela PTI/IANA . Contudo precisa-se estar atento que as alocações mudam com o tempo e que o filtro pode ficar desatualizado, impedindo que tráfego válido seja encaminhado ou que pacotes inválidos trafeguem pela rede.
Para acompanhar as alocações IPv4 ao redor do mundo veja o link a seguir:
https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml
Para acompanhar as alocações IPv6 ao redor do mundo veja o link a seguir:
https://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xhtml
Uma instituição de renome chamada TEAM CYMRU possui um serviço de transmitir os endereços BOGONS via sessão BGP. Para isso é preciso entrar em contato com eles, receber os dados e habilitar o uRPF, como a RFC5635 recomenda.
Essa maneira pode ser uma possibilidade para manter os filtros de forma automática sempre atualizados. Segue o link com mais informações:
http://www.team-cymru.org/bogon-reference-bgp.html
Filtro antispoofing – exemplo para Juniper
É necessário que os provedores de acesso à Internet adotem medidas para evitar que seus usuários, intencionalmente ou não, enviem na rede pacotes com origens inválidas (endereços diferentes dos endereços que lhe são atribuídos). Isso é chamado spoofing e muitas vezes é utilizado para ataques de negação de serviço. Apenas um filtro aplicado no próprio provedor de acesso, preferencialmente na interface do roteador conectado diretamente ao usuário, é eficaz contra isso.
Filtro para ser aplicado na interface do PE conectado ao CPE
A configuração consiste basicamente em se criar um filtro para que somente os pacotes que utilizem endereços atribuídos aos seus clientes como origem sejam encaminhados a Internet. Note que no meio da configuração, possui um escrito “Troque este endereço pelo que é usado em sua rede!” para alertar que você deve mudar aquela linha de acordo com os endereços alocados a sua instituição.
Além disso, como medida de redundância foi habilitado o uRPF para ajudar que pacotes com problemas não sejam transmitidos.
Continue lendo: https://bcp.nic.br/antispoofing