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.
RETORNAR
PARA PÁGINA PRINCIPAL
|