publications Alexandre Freire
Especialista Sênior em Segurança da Informação
Professor convidado do curso de Pós-Graduação em Gestão de Segurança da Universidade Federal do Rio de Janeiro (Núcleo de Computação Eletrônica)

Artigo Publicado

Sistemas de Firewall e Defesa de Perímetros - VI

Por Alexandre Freire

Uma access-list é uma lista ordenada de declarações negando ou permitindo, baseado em critérios, o tráfego de pacotes entre as interfaces de um roteador. Uma access-list é uma listagem de critérios que são ordenados, sendo que a ordenação dessa listagem é de suma importância para o correto funcionamento do mesmo. Um dos erros mais comuns durante a criação de access-lists é justamente a ordenação das entradas de forma incorreta.

Os critérios de access-list podem permitir ou negar pacotes. Adicionalmente, é importante frisar que sempre durante a criação de uma access-list, existe implicitamente o critério "DENY ALL" que é atribuído ao final da ordenação da mesma. Um pacote que não é explicitamente permitido será rejeitado pelo critério implícito "Deny All" ao final de uma acess-list. Outro erro freqüente durante a criação de uma access-list é o esquecimento deste detalhe. Até os administradores de rede e profissionais de segurança mais experientes às vezes são pegos de surpresa durante a aplicação de uma access-list ordenando o bloqueio de tráfego e esquecendo do "implicit deny".

O modelo correto de implementação de um roteador, tendo-se em consideração que o roteador é um dispositivo que deve estar dedicado ao roteamento de pacotes, é executar o bloqueio apenas de tráfego originário de redes inválidas com objetivo de evitar risco de ataques do tipo Spoofing e Denial of Service, ou até mesmo de tráfego identificado pelos sistemas de detecção de intrusão (IDS), que indicam com precisão os endereços de origem de um respectivo tipo de ataque, sendo possível, a partir dessas informações, o bloqueio do endereço IP de hosts ou redes que freqüentemente atormentam a vida de uma corporação.

Access-lists são processadas seqüencialmente, iniciando-se a leitura através do topo até o final (top-down). Cada pacote, ao ser recebido em uma interface que encontra-se com uma access-list aplicada, é verificado contra cada regra configurada em uma access-list, até que seja descartado, ou não, de acordo com as regras criadas. Caso o pacote seja autorizado, o mesmo será roteado para a próxima interface de rede, estando sujeito a um novo grupo de access-lists.

Somente uma acess-list pode ser aplicada em uma interface em cada direção (inbound ou outbound, ou seja, entrada e saída), totalizando duas access-lists por interface. O quadro a seguir exemplifica a sintaxe a ser utilizada durante a concepção e aplicação de uma access-list.

A access-list extendida permite o controle do fluxo da informação em ambos os endereçamentos de rede (origem e destino), além do tipo de tráfego sendo transferido dentro de cada pacote. Access-lists extendidas são capazes de filtrar pacotes baseados no IP de origem ou destino, protocolos e opções específicas relativas aos protocolos.

Uma vez escrevendo-se uma access-list, faz-se necessária a aplicação da mesma em uma interface específica. Assim como escrever as access-lists, o ato de aplicá-las a uma interface específica é realizado no modo de configuração do roteador. Para aplicar uma access-list para uma respectiva interface o seguinte comando deve ser utilizado:

# ip access-group access-list-number in/out

O quadro a seguir exemplifica a sintaxe de aplicação do access-group:

Proteção do Roteador Cisco - Desabilitando Serviços e Protocolos

Antes de estudar, através de uma política de segurança, a definição das access-lists que necessitam ser aplicadas ao roteador, faz-se necessário a execução de procedimentos de segurança no equipamento. Assim como um sistema operacional que necessita ser preparado com procedimentos de segurança para receber um Firewall, o roteador também necessita passar por procedimentos de segurança através da desabilitação de serviços default e ações específicas com a finalidade de melhoria das condições de segurança do mesmo. Devemos pensar que ao sair da caixa, o roteador necessita passar por procedimentos de configuração de segurança assim como um sistema operacional em uma instalação default. Existem muitas recomendações de segurança a serem aplicadas para a melhoria de um roteador. A seguir, citamos alguns exemplos de serviços que necessitam de cuidados.

- CDP (Cisco Discovery Protocol)

O Cisco Discovery Protocol (CDP) é utilizado para funções de gerenciamento. A utilização de CDP em ambientes onde existam mais de um roteador ou dispositivo de conectividade diretamente conectados a um determinado segmento de rede permite a prática de aprendizado do modelo e versão do Cisco IOS dos demais equipamentos. Isso significa que se um roteador de borda for comprometido, e se o mesmo estiver em um segmento com outro roteador conversando CDP, pode-se obter informações importantes para comprometer o equipamento responsável pela conectividade do próximo nível de perímetro da rede.

O protocolo CDP pode ser desabilitado a partir do comando global "no cdp run".

- Finger Service

Equipamentos Cisco proporcionam a implementação do serviço finger, muito útil para obtenção de usuários que estão logados aos equipamentos. Esta informação pode ser muito útil a um invasor, caso existam diferentes níveis de acesso por usuários configurados no roteador.

O serviço finger pode ser desabilitado com o comando "no service finger".

- Source Routing

Source routing é a habilidade de lidar com um pacote de modo que este seja direcionado a certos roteadores sem que passe pelos roteadores convencionais. Tipicamente, utiliza-se source routing quando um roteador executa o bloqueio de algum tipo de tráfego que o invasor deseja explorar, onde o roteamento é alterado na tentativa de burlar o dispositivo de conectividade. Hoje em dia, no ambiente Internet, não existe motivos legítimos que levariam alguém a necessidade de ditar o caminho que o pacote deverá percorrer até chegar ao seu destino. Desde que o roteamento é feito apenas de e para uma respectiva rede privada, deve-se atentar para o cuidado de não aceitar pacotes no roteador de borda que instruam este roteador a encaminhar pacotes para outra rede.

É necessário desabilitar o source routing com o comando "no ip source-route".

- UDP Small Servers and TCP Small Servers

Como estudamos anteriormente, assim como alguns sistemas operacionais, dispositivos de rede também possuem os chamados "small services": echo, chargen, e discard. Estes serviços, especialmente as versões baseadas em protocolo UDP, são freqüentemente utilizados para ataques do tipo Denial of Service.

Estes serviços podem ser desabilitados com os seguintes comandos:

"no service tcp-small-servers" "no service udp-small-servers"

- HTTP Server

Os dispositivos de conectividade mais recebentes suportam o modo de configuração remota e monitoramento através do procotolo HTTP. Isso significa que o acesso HTTP equivale ao modo interativo de acesso ao roteador. A vulnerabilidade na utilização do HTTP Server reside em enviar senhas em claro pela rede. É altamente recomendada a desabilitação do gerenciamento HTTP do roteador. Aos que necessitam trabalhar com essa característica devem certificar que somente endereços Ips autorizados acessem a interface. Para isso, é necessário restringir um ou mais endereços com a utilização do comando "ip http access-class". Para o aumento de segurança do procedimento de login e autenticação, deve-se utilizar um servidor TACACS+ ou RADIUS.

O serviço HTTP pode ser desabililitado com o comando "no ip http"

- Log

Roteadores Cisco são capazes de gerar logging de uma variedade de eventos. Muitos eventos possuem um grau de criticidade significativo, de muito valor para resolução de incidentes de segurança assim como, em mãos erradas, importante para estudo e levantamento do mapeamento de uma rede ou de seu respectivo comportamento.

Os logs gerados pelo roteador Cisco se classificam em:

01. AAA logging

Responsável por receber informações importantes, como conexões discadas estabelecidas, logins, logouts, acessos através de HTTP, mudanças de nível (privilégios), comandos executados e eventos similares. As entradas de um log AAA são enviadas aos servidores de autenticação utilizando-se os protocolos TACACS+ e/ou RADIUS e são armazenadas localmente nestes servidores. Se o ambiente de uma entidade necessita da implementacão de tais recursos, é de fundamental importância habilitar o logging para o rastreamento destas ações (ex: aaa accounting).

02. SNMP traps logging

Responsável por enviar notificações importantes de mudanças significativas no estado de operação de um sistema. Estes "traps" são enviados aos servidores e estações de gerência SNMP. E esta sends notifications of significant changes in system status to SNMP management stations. You will probably want to use SNMP traps only if you have a preexisting SNMP management infrastructure.

03. System Logging

Os logs do sistema são variadades de eventos, dependendo da configuração do equipamento, que geram informações importantes sobre a sua utilização. Estes eventos podem ser mantidos localmente ou portados para localidades remotas, utilizando-se para esta finalidade a porta de console (logging console), servidores Unix utilizando o protocolo SYSLOG (logging ip-adress, logging trap), sessoes remotas nos terminais VTY ou locais nos terminais TTY (logging monitor, terminal monitor) ou ainda como buffer na RAM do próprio roteador (logging buffered).

Os eventos mais importantes, focando-se na esfera de segurança, são aqueles responsáveis por gravar as mudanças no estado de uma interface, mudanças na configuração do equipamento, regras de access-lists executando bloqueio ou permitindo tráfego e eventos detectados por características opcionais como detecção de intrusão.

Cada evento do sistema é associado a um nível de urgência. Os níveis variam de informações de debugging (menor prioridade), a emergências de sistema que possuem maior prioridade. Cada destino previamente configurado para recebimento dos logs pode receber eventos classificados em um certo nível de prioridade.

Implementando Access-List contra Spoofing e ICMP Mappig:

Roteadores Cisco são filtros de pacotes que proporcionam proteção em forma de access-lists que são criadas para permitir ou negar o fluxo de informações através de uma ou mais interfaces do equipamento. Possuí como princípio fundamental o bloqueio imediato de pacotes originários de redes inválidas com objetivo de evitar risco de ataques do tipo Spoofing e Denial of Service. A tabela a seguir exemplifica a aplicação de access-lists em um roteador de borda para proteção do tráfego de entrada:

Analisemos cada regra implementada:

Regra #1 - Bloqueio de pacotes originários de redes privadas identificados em RFC como endereçamento classe A.

Regra #2 - Bloqueio de pacotes originários de redes privadas identificados em RFC como endereçamento classe B.

Regra #3 - Bloqueio de pacotes originários de endereçamento privado para testes.

Regra #4 - Bloqueio de pacotes que tenham como origem o endereço de loop-back.

Regra #5 - Bloqueio de pacotes que tenham como origem endereço de multicast.

Regra #6 - Bloqueio de pacotes que tenham como origem endereço reservado pelo IETF.

Regra #7 - Bloqueio de pacotes que tenham como endereço de origem e destino origem o endereço da serial do roteador.

Regra #8 - Bloqueio de pacotes que não tenham endereçamento IP.

Regra #9 - Permissão da passagem de tráfego ICMP (retorno de ping quando o mesmo é solicitado a partir da rede interna).

Regra #10 - Bloqueio de qualquer pacote do tipo ICMP com destino a qualquer host no perímetro ou rede interna.

Regra #11 - Permite a passagem de qualquer tipo de tráfego.

A regra #7 de nossa implementação restringe o envio de pacotes ao roteador que tenham como origem e destino o próprio endereço do router. O ataque LAND consiste em gerar um pacote tendo como origem e destino o endereço da serial do router que muitas vezes faz o equipamento entrar em looping eterno causando seu reboot automático.

Deve-se atentar também para a última regra #11, que deve sempre liberar o protocolo IP. Como vimos anteriormente, ao iniciar a criação de uma access-list a última regra será sempre, de forma implícita, DENY ALL. A inexistência da regra #11 fará com que o roteador descarte todos os pacotes recebidos. Atenção permanente para este detalhe!

A access-list criada (101) deverá ser aplicada como INBOUND na Serial0 do roteador de borda. Ela é responsável por filtrar todo o tráfego de entrada a partir da Internet.

Proteção do Tráfego de Saída

Para aumentar o nível de segurança do perímetro, é recomendada a criação de outra access-list que iremos batizar de "access-list extended 102", responsável por filtrar o tráfego de saída. O objetivo desta access-list é permitir somente a saída de pacotes que pertençam ao range de Ips válidos utilizados pela corporação. Em outras palavras, quem do perímetro interno de uma empresa necessita abrir conexão para o mundo externo? Deve-se focar nos endereços NAT controlados pelo Firewall (nat hide, utilizado para mascarar o endereçamento do range de Ips da rede interna e static, especifico para cada servidor), assim como proxy servers ou outros servidores que necessitam de comunicação com o mundo exterior.

Normalmente, identifica-se a subnet com endereçamento válido atribuída a uma corporação para que o filtro de pacotes realizado pelo roteador permita somente a saída de máquinas que estejam dentro desta subnet. Entretanto, um nível maior de segurança pode ser obtido especificando-se individualmente a permissão de saída a cada endereço IP. Este método é mais trabalhoso, porém traz maior segurança e confiabilidade, assegurando que somente os endereçamentos previamente autorizados trafegem para a Internet. Isso evita, por exemplo, a prática de burlar servidores de proxy ou Firewalls adicionando-se o IP válido a máquinas da rede interna da instituição. Em nosso exemplo a seguir, adotaremos a permissão de saída para uma subnet inteira visto que, como estamos em um mundo imaginário, não existe a possibilidade de identificação de endereços de host através da citação de endereçamento de IP"s válidos.

A tabela a seguir exemplifica a aplicação de access-lists em um roteador de borda para proteção do tráfego de saída:

Analisemos cada regra implementada:

Regra #1 - Permissão de saída de endereços pertencentes a classe de endereçamento válido da corporação.

Regra #2 - Permissão de saída de pacotes do tipo ICMP.

Regra #3 - Bloqueio de todos os pacotes que não satisfazem as condições estabelecidas pelas regras #1 e #2, executando logging.

A access-list criada (102) deverá ser aplicada como INBOUND na Ethernet0 do roteador de borda. Ela é responsável por filtrar todo o tráfego de saída a partir da rede interna com destino a Internet.

É importante verificar que, ao contrário da access-list 101, que baseia-se em critérios de negações específicas liberando no último critério todo tipo de tráfego IP desde que o pacote não tenha satisfeito as condições estabelecidas, a access-list 102 baseia-se primeiramente em critérios de permissões específicas negando e logando os pacotes que, por sua vez, não tenham satisfeito as condições de permissão estabelecidas.

Autorizações para publicação :

Portal IBEST Imasters
http://www.imasters.com.br/artigo.php?cc=159

Portal Módulo Security Solutions
http://www.modulo.com.br/pt/page_i.jsp?page=3&catid=2&objid=280&pagecounter=0&idiom=0

 

RETORNAR PARA PÁGINA PRINCIPAL