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.
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.
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).
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.
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).
É 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.
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.
/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
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
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.
/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
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
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.
https://tools.ietf.org/html/rfc5635
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
É 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.
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.
interfaces {
ge-0/0/0 {
unit 0 {
family inet {
filter {
input CLIENTES-V4;
}
/* Endereço da interface do roteador */
/* Precisa trocar */
address 192.0.2.1/30;
/* habilitando Strict uRPF */
rpf-check;
}
}
}
}
policy-options {
prefix-list FILTRO-CLIENTE-V4{
/* Permite o IP alocado para o CPE do cliente */
/* Troque este endereço pelo que é usado em sua rede! */
192.0.2.2/32;
/* Permite o range de IPs alocados para o seu cliente */
/* Troque este endereço pelo que é usado em sua rede! */
192.0.2.0/24;
}
}
firewall {
family inet {
filter CLIENTES-V4{
term 1 {
from {
source-prefix-list {
FILTRO-CLIENTE-V4;
}
}
then {
accept;
}
}
term DEFAULT{
then {
/* Rejeita todo os outros endereços que o cliente pode usar para fazer ataque */
discard;
}
}
}
}
}
interfaces {
ge-0/0/0 {
unit 0 {
family inet6 {
filter {
input CLIENTES-V6;
}
/* Endereço da interface do roteador */
/* Precisa trocar */
address 2001:DB8:CAFE:FACA::1/64;
/* habilitando Strict uRPF */
rpf-check;
}
}
}
}
policy-options {
prefix-list FILTRO-CLIENTE-V6{
/* Permite o IP alocado para o CPE do cliente */
/* Troque este endereço pelo que é usado em sua rede! */
2001:DB8:CAFE:FACA::2/64;
/* Permite o range de IPs alocados para o seu cliente */
/* Troque este endereço pelo que é usado em sua rede! */
2001:DB8:CAFE::/48;
}
}
firewall {
family inet6 {
filter CLIENTES-V6{
term 1 {
from {
source-prefix-list {
FILTRO-CLIENTE-V6;
}
}
then {
accept;
}
}
term DEFAULT{
then {
/* Rejeita todo os outros endereços que o cliente pode usar para fazer ataque */
discard;
}
}
}
}
}
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.
interfaces {
ge-0/0/0 {
unit 0 {
family inet {
filter {
input BOGONS;
}
/* Endereço da interface do roteador */
/* Precisa trocar */
address 192.0.2.1/30;
/* habilitando Strict uRPF */
rpf-check;
}
}
}
}
policy-options {
prefix-list FILTRO-BOGONS-V4{
/* faixa de enderecos reservados para identificar que o host pertence a rede local */
0.0.0.0/8;
/* faixa de enderecos privados */
10.0.0.0/8;
/* faixa de enderecos privados do CGNAT */
100.64.0.0/10;
/* faixa de enderecos reservados para loopback */
127.0.0.0/8;
/* faixa de enderecos reservados para escopo local */
169.254.0.0/16;
/* faixa de enderecos privados */
172.16.0.0/12;
/* faixa de enderecos reservado para atribuição a protocolos específicos */
192.0.0.0/24;
/* faixa de enderecos reservado para documentação */
192.0.2.0/24;
/* faixa de enderecos privados */
192.168.0.0/16;
/* faixa de enderecos reservado para testes - benchmarking */
198.18.0.0/15;
/* faixa de enderecos reservado para documentação */
198.51.100.0/24;
/* faixa de enderecos reservado para documentação */
203.0.113.0/24;
/* faixa de enderecos reservado da antiga classe D de multicast e uso futuro */
224.0.0.0/3;
}
}
firewall {
family inet {
filter BOGONS{
term 1 {
from {
source-prefix-list {
FILTRO-BOGONS-V4;
}
}
then {
discard;
}
}
term DEFAULT{
then {
accept;
}
}
}
}
}
interfaces {
ge-0/0/0 {
unit 0 {
family inet6 {
filter {
input FILTRO-BOGONS6;
}
/* Endereço da interface do roteador */
/* Precisa trocar */
address 2001:DB8:CAFE:FACA::1/64;
/* habilitando Strict uRPF */
rpf-check;
}
}
}
}
policy-options {
prefix-list FILTRO-BOGONS-V6-DENY{
/* faixa de endereços reservada para documentacao */
2001:db8::/32;
}
prefix-list LISTA-BOGONS-V6-ACCEPT{
/* faixa de endereços dos enderecos globais */
2000::/3;
/* faixa de endereços dos enderecos link local */
fe80::/64;
/* Endereco nao especificado */
::/128;
}
firewall {
family inet6 {
filter FILTRO-BOGONS-V6{
term 1 {
from {
source-prefix-list {
FILTRO-BOGONS-V6-DENY;
}
}
then {
discard;
}
}
term 2{
from {
source-prefix-list {
LISTA-BOGONS-V6-ACCEPT;
}
}
then {
accept;
}
}
term DEFAULT{
then {
/* bloqueia todo o resto */
discard;
}
}
}
}
}
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.
https://tools.ietf.org/html/rfc5635
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
É 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.
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.
! CEF é preciso para uRPF strict
ip cef
interface GigabitEthernet0/1
! Endereço da interface do roteador
! Troque este endereço pelo que é usado em sua rede!
ip address 192.0.2.1 255.255.255.252
! Aplicando Filtro estatico baseado no endereço alocado para o cliente
ip access-group FILTRO-CLIENTE-V4 in
! habilitando Strict uRPF
ip verify unicast source reachable-via rx
…
! Filtro de rede para permitir so trafego vindo do IPv4 de origem do seu cliente
ip access-list extended FILTRO-CLIENTE-V4
! Permite o IP alocado para o CPE do cliente
! Troque este endereço pelo que é usado em sua rede!
permit ip 192.0.2.2 0.0.0.0 any
! Permite o range de IPs alocados para o seu cliente
! Troque este endereço pelo que é usado em sua rede!
permit ip 192.0.2.0 0.0.0.255 any
! Rejeita todo os outros endereços que o cliente pode usar para fazer ataque
deny ip any any
! CEF é necessário para uRPF strict
ipv6 cef
interface GigabitEthernet0/1
! Endereço da interface do roteador
! Troque este endereço pelo que é usado em sua rede!
ipv6 address 2001:DB8:CAFE:FACA::1/64
! Aplicando Filtro estatico baseado no endereço alocado para o cliente
ipv6 traffic-filter FILTRO-CLIENTE-V6
! habilitando Strict uRPF
ipv6 verify unicast source reachable-via rx
…
! Filtro de rede para permitir so trafego vindo do IPv6 de origem do seu cliente
ipv6 access-list extended FILTRO-CLIENTE-V6
! Permite o IP alocado para o CPE do cliente
! Troque este endereço pelo que é usado em sua rede!
permit ipv6 2001:DB8:CAFE:FACA::2/64 any
! Permite o range de IPs alocados para o seu cliente
! Troque este endereço pelo que é usado em sua rede!
permit ipv6 2001:DB8:CAFE::/48 any
! Rejeita todo os outros endereços que o cliente pode usar para fazer ataque
deny ipv6 any any
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.
! CEF é preciso para uRPF strict
ip cef
interface GigabitEthernet0/1
! Endereço da interface do roteador
! Troque este endereço pelo que é usado em sua rede!
ip address 192.0.2.1 255.255.255.252
! Aplicando Filtro estatico baseado no endereço alocado para o cliente
ip access-group FILTRO-BOGONS-V4 in
! habilitando Strict uRPF
ip verify unicast source reachable-via rx
…
! Filtro de rede estático
! Caso use enderecos privados na sua rede tome cuidado para nao filtrar trafego valido. Remova a linha do prefixo utilizado
ip access-list extended FILTRO-BOGONS-V4
! faixa de enderecos reservados para identificar que o host pertence a rede local
deny ip 0.0.0.0 0.255.255.255 any
! faixa de enderecos privados
deny ip 10.0.0.0 0.255.255.255 any
! faixa de enderecos privados do CGNAT
deny ip 100.64.0.0 0.63.255.255 any
! faixa de enderecos reservados para loopback
deny ip 127.0.0.0 0.255.255.255 any
! faixa de enderecos reservados para escopo local
deny ip 169.254.0.0 0.0.255.255 any
! faixa de enderecos privados
deny ip 172.16.0.0 0.15.255.255 any
! faixa de enderecos reservado para atribuição a protocolos específicos
deny ip 192.0.0.0 0.0.0.255 any
! faixa de enderecos reservado para documentação
deny ip 192.0.2.0 0.0.0.255 any
! faixa de enderecos privados
deny ip 192.168.0.0 0.0.255.255 any
! faixa de enderecos reservado para testes - benchmarking
deny ip 198.18.0.0 0.1.255.255 any
! faixa de enderecos reservado para documentação
deny ip 198.51.100.0 0.0.0.255 any
! faixa de enderecos reservado para documentação
deny ip 203.0.113.0 0.0.0.255 any
! faixa de enderecos reservado da antiga classe D de multicast e uso futuro
deny ip 224.0.0.0 31.255.255.255 any
! permite todo o resto
permit ip any any
! CEF é necessário para uRPF strict
ipv6 cef
interface GigabitEthernet0/1
! Endereço da interface do roteador
! Troque este endereço pelo que é usado em sua rede!
ipv6 address 2001:DB8:CAFE:FACA::1/64
! Aplicando Filtro estatico baseado no endereço alocado para o cliente
ipv6 traffic-filter FILTRO-BOGONS-V6
! habilitando Strict uRPF
ipv6 verify unicast source reachable-via rx
…
! bloqueia tudo e permite as faixas
! já liberadas para os RIRs
! Filtro de rede estático
ipv6 access-list extended FILTRO-BOGONS-V6
! faixa de endereços reservada para documentacao
deny ipv6 2001:db8::/32 any
! faixa de endereços dos enderecos globais
permit ipv6 2000::/3 any
! faixa de endereços dos enderecos link local
permit ipv6 fe80::/64 any
! Endereco nao especificado
permit ipv6 ::/128 any
! bloqueia todo o resto
deny ipv6 ::/0 any
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.
https://tools.ietf.org/html/rfc5635
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
A Caida ( ou Centro de Análise Aplicada de Dados da Internet) realiza pesquisas de rede e constrói infraestruturas de pesquisa para coleta , cura e distribuição de dados em grande escala para a comunidade de pesquisa científica.
O Spoofer é um software open-source criado pela Caida, com o intuito de minimizar a vulnerabilidade da Internet. Esta ferramenta envia pacotes camuflados pela rede e verifica quais nós não estão protegidos contra spoofing.
A vulnerabilidade do IP ao spoof é a principal fraqueza da arquitetura TCP/IP, visto que este protocolo não requer verificação de autenticidade para funcionar. Regularmente são criados novos ataques baseados em spoofing.
O Spoofer tenta enviar uma série de pacotes UDP spoofados para diversos nós a partir do usuário que está utilizando o programa. Esses pacotes testam
* Se os AS’s vizinhos recebem endereços IPv4 e IPv6, privados ou roteáveis spoofados
* Se os AS’s vizinhos recebem blocos de endereço camuflados
* Onde pode se observar filtros de rede ao longo do caminho do pacote camuflado
* Presença de NAT’s ao longo do caminho.
A Caida utiliza os dados adquiridos através dos usuários do Spoofer para montar o relatório de resumo do estado da Internet
**NOTA**
O conteúdo dos PPA’s não são checados nem monitorados. Use-os com cuidado e por sua conta e risco.
Abra o Terminal e execute os seguintes comandos:
sudo add-apt-repository ppa:matthewluckie/spoofer
sudo apt-get update
Uma vez que os arquivos já foram baixados, basta instalá-los:
sudo apt-get install spoofer-gui
sudo apt-get upgrade
Baixe o arquivo na página oficial do Spoofer.
Abra o arquivo.
Clique em Next e concorde com os termos de uso.
Selecione a opção se você deseja que o programa crie atalhos no menu inicial.
Selecione onde você deseja instalar o Spoofer.
Esta página se refere a instalação do WinPcap, uma ferramenta fundamental para o funcionamento do Spoofer. Trata-se de uma série de bibliotecas para monitoramento de tráfego de dados de redes. Caso você não o tenha instalado, mantenha esta opção marcada.
Clique em install.
Agora outros programas essenciais para o funcionamento do Spoofer serão instalados .
Basta aceitar todos os termos de uso e instalar os programas necessários. Mas tome cuidado para não instalar softwares indesejados
*O processo de instalação do Spoofer no Mac é muito semelhante ao do Windows, basta atenrar-se para não instalar softwares indesejados.
Agora que o Spoofer já foi instalado, inicialize a sua interface gráfica ( ou GUI)
O GUI auxilia o usuário a controlar o sistema do Spoofer, a interface permite aos usuários agendar e executar os testes de spoofing, com o GUI, podemos configurar os agendamento e funcionamento dos testes do Spoofer.
Para alterar as o agendamento e configurações do Spoofer, vá em Spoofer/Preferences.
Esta tela deve aparecer:
Estas são as configurações padrão do Spoofer.
O menu “General Preferences” permite o usuário configurar como o programa funcionará. As primeiras opções se tratam de habilitar/desabilitar o teste de spoofing em pacotes IPv4 e IPv6.
As últimas tratam do compartilhamento dos relatórios gerados. Os dados coletados pela Caida, através desses relatórios, são utilizados na criação do relatório de resumo do estado da Internet.
A opção “Number os prober log files to keep” se refere ao número de arquivos Log que serão armazenados no seu computador. Como o Spoofer funciona continuamente, com o tempo, o programa acumulará muitos Logs, o que pode acabar ocupando muita memória do computador.
O segundo menu se refere às opções de agendamento de testes.
A primeira opção se refere ao tempo que levará para o Spoofer fazer uma verificação de alteração na estrutura da rede. Caso a rede tenha sofrido alguma alteração, o Spoofer começará a fazer os seus testes novamente.
A segunda opção indica para o programa o período que ele deve esperar para iniciar um novo teste após a detectação de alterações na rede.
A terceira opção se refere ao teste periódico, onde, por padrão, o programa recomenda um teste a cada semana.
Caso o último tenha falhado, a quarta opção trata do período que o Spoofer deve aguardar para iniciar o teste novamente, o tempo indicado dobrará a cada falha.
Na última opção é possível setar a quantidade máxima de vezes que o programa tentará um teste em caso de erro.
Caso necessário, no canto inferior esquerdo, existem dois botões que devolverão o Spoofer à sua configuração padrão.
O Spoofer funciona em segundo plano, por isso, se necessário, é possível a pausa da agenda de testes, clicando no botão “Pause Scheduler” na página inicial do programa.
Agora, com os testes já agendados, o Spoofer deve funcionar normalmente. Ele fará os testes sempre que chegue a hora agendada, a rede seja alterada ou se o usuário forçar o início de um novo teste clicando no botão “Start Tests”.
Uma vez que um teste foi iniciado, o GUI ficará assim:
Perceba que o Spoofer tem uma barra que demonstra o número de testes que foram e serão feitos, indicando o progresso dos testes, o console, que pode ser exibido ao clicar no botão “Show Console”, começa a registrar informações sobre os testes feitos até o momento.
Uma vez que o teste foi concluído, ele aparecerá na caixa “Result History”.
As colunas Private e Routable indicam se os AS’s receberam IP’s Privados e/ou Roteáveis spoofados durante os testes.
Um resultado OK é quando todos os pacotes foram bloqueados: 'blocked'. Se algum pacote foi recebido: 'received', sua rede permite algum tipo de spoofing.
O link na coluna Log abre o arquivo dos dados gerados pelo console do teste que está salvo no seu computador.
E, o mais importante, o Report, que abrirá o site da Caida, nesta página estará o relatório do teste feito na sua rede. Nele estarão os dados obtidos, como a topologia da rede, demonstrando pacotes spoofados recebidos pelos AS’s.
As setas cheias pretas indicam que o AS não recebeu o pacote spoofado enviado pelo Spoofer, a seta vermelha cheia significa que o AS recebeu um pacote privado spoofado e a seta vermelha tracejada indica que o AS recebeu um pacote roteável spoofado. NAT’s e Firewalls aparecerão em amarelo.
Outras informações também estão presentes no report, como, se foi possível e quais os blocos de IP spoofados o AS vizinho recebeu e também um resumo do estado da rede.
Um resultado OK é um grapho com linhas pretas cheias, apenas, sem linhas vermelhas de qualquer tipo. Se há linhas vermelhas, sua rede permite algum tipo de spoofing.
http://www.ripe.net/ripe/docs/ripe-431
http://www.team-cymru.org/Services/Bogons/bogon-dd.html
http://www.space.net/~gert/RIPE/ipv6-filters.html
http://www.ripe.net/ripe/docs/ripe-431
http://wiki.mikrotik.com/wiki/MikroTik_RouterOS/Feature_Requests#Not_yet_implemented
http://www.juniper.net/techpubs/en_US/junos12.2/topics/usage-guidelines/interfaces-configuring-unicast-rpf.html
http://www.juniper.net/techpubs/en_US/junos11.2/topics/example/firewall-filter-stateless-example-trusted-source-accept-dhcp-packets-source.html
http://www.cisco.com/en/US/docs/ios/12_2/security/command/reference/srfrpf.html