Núcleo de Informação e Coordenação do Ponto BR

Portal de Boas Práticas para a Internet no Brasil

Navegação global

Conteúdo

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 (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 antispoofing

A configuração consiste basicamente em se habilitar o uRPF e em se criar um filtro secundário, baseado numa lista de bogons.

Filtro para IPv4

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 fail-filter rpf_dhcp;
           }
       }
   }
}
policy-options {
     prefix-list FILTRO-BOGONS-V4{
          0.0.0.0/8;
          10.0.0.0/8;
          100.64.0.0/10;
          127.0.0.0/8;
          169.254.0.0/16;
          172.16.0.0/12;
          192.0.0.0/24;
          192.0.2.0/24;
          192.168.0.0/16;
          198.18.0.0/15;
          198.51.100.0/24;
          203.0.113.0/24;
          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;
               }
           }
       }
    filter RPF_DHCP {
        term 1 {
            from {
                 source-address {
                       0.0.0.0/32;
                 }
                 destination-address {
                       255.255.255.255/32;
                } 
            }
            then accept;
        }
   }
}

Filtro para IPv6

interfaces {
   ge-0/0/0 {      
       unit 0 {
           family inet6 {
               filter {
                  input FILTRO-BOGONS-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 LISTA-BOGONS-V6-DENY{
           2001:db8::/32;
     }
     prefix-list LISTA-BOGONS-V6-ACCEPT{
           2001:500::/30;
           2001::/32;
           2001::/16;
           2001:0678::/29;
           2001:0c00::/23;
           2001:13c7:6000::/36;
           2001:13c7:7000::/36;
           2001:43f8::/29;
           2002::/16;
           2003::/16;
           2400::/12;
           2600::/12;
           2610::/23;
           2620::/23;
           2800::/12;
           2a00::/12;
           2801:0000::/24;
           2c00::/12;
           fe80::/64;
           ::/128;
     }
}
firewall {
   family inet6 {
       filter FILTRO-BOGONS-V6 {
           term 1 {
               from {
                   source-prefix-list {
                       LISTA-BOGONS-V6-DENY;
                   }
               }
               then {
                   discard;
               }
           }
           term 2 {
               from {
                   source-prefix-list {
                       LISTA-BOGONS-V6-ACCEPT;
                   }
               }
               then {
                   accept;
               }
           }
           term DEFAULT{
               then {
                   discard;
               }
           }
       }
   }
}   

Endereços fixos

Perceba que a lógica da configuração é habilitar o uRPF e ter também um filtro estático como redundância. Para isso serve a lista de bogons.

Quando o provedor trabalha com endereço fixo (global ou NAT), o filtro redundante pode ser bem mais específico, como no exemplo a seguir:

/* IPv4 */
interfaces {
   ge-0/0/0 {      
       unit 0 {
           family inet {
               filter {
                   input REDE-CLIENTE-V4;
               }
               /* Endereço da interface do roteador */
               /* Precisa trocar */
               address 192.0.2.1/30;
               /* habilitando Strict uRPF  */
               rpf-check;
           }
       }
   }
}
firewall {
   family inet {
       filter REDE-CLIENTE-V4 {
           term 1{
               from {
                   source-address {
                       /* Caso o cliente possua um range de end. alocados */
                       /* Permite o range de endereços alocado ao cliente */
                       /* Precisa trocar */
                       198.51.100.0/24;
                   }
               }
               then {
                   accept;
               }
           }
           term 2{
               from {
                   source-address {
                       /* Permite o IP alocado ao roteador do cliente CPE */
                       /* Precisa trocar */
                       192.0.2.2/32;
                   }
               }
               then {
                   accept;
               }
           }
       }
   }
}

/* IPv6 */
interfaces {
   ge-0/0/0 {      
       unit 0 {
           family inet6 {
               filter {
                   input REDE-CLIENTE-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 LISTA-CLIENTE-V6-ACCEPT{
           /* Permite o endereço IP alocado ao roteador do cliente CPE */
           /* Precisa trocar */
           2001:DB8:CAFE:FACA::2/128;
           /* Permite o range de endereços alocado ao cliente */
           /* Precisa trocar */
           2001:DB8:F0CA:CA00::/56;
           fe80::/64;
           ::/128;
     }
}

firewall {
   family inet6 {
       filter REDE-CLIENTE-V6 {
           term 1 {
               from {
                   source-prefix-list {
                       LISTA-CLIENTE-V6-ACCEPT;
                   }
               }
               then {
                   accept;
               }
           }
           term DEFAULT{
               then {
                   discard;
               }
           }
       }
   }
}

Referências

http://www.ripe.net/ripe/docs/ripe-431
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.team-cymru.org/Services/Bogons/bogon-dd.html
http://www.space.net/~gert/RIPE/ipv6-filters.html

Publicado por: EquipeBCP

A equipe do sítio http://bcp.nic.br é composta por profissionais de diversas áreas do NIC.br, que procuram destacar neste blog boas práticas que devem ser adotadas na Internet no Brasil.

3 responses to “Filtro antispoofing – exemplo para Juniper”

  1. Related…

    […]just beneath, are numerous totally not related sites to ours, however, they are surely worth going over[…]…

  2. SAMIR LAYL says:

    Digg

    While checking out DIGG yesterday I found this

Leave a Reply