NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
16 de março de 2001 | volume 5, número 2

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



Segurança em Roteadores

Frank Ned <>

Rede Nacional de Ensino e Pesquisa (RNP)

Resumo
1. Introdução
2. Os Três As (AAA)
3. Componentes Básico do Hardware
4. O Processo de Inicialização do Roteador
5. O Fluxo dos Dados
6 - Controle do Tráfego com ACL
7. Como Funciona a ACL
7.1 O Fluxo dos Pacotes Através das Listas de Acesso
7.2 Tipos de Listas de Acesso
7.3 Identificando as Listas de Acesso
8. Implementando ACL
8.1 O Funcionamento do Wildcard em Roteadores Cisco
8.2 Criando Listas de Acesso
8.2.1 Padrão
8.3 Implementando as Listas de Acesso
8.3.1 Modo de Configuração
8.3.2 Desempenho
8.4 Exemplos
8.5 Mantendo Backup dos Arquivos de Configuração
9. Conclusão
11. Sites relacionados
Referências bibliográficas

Resumo

Este artigo tem por objetivo abordar a configuração de listas de controle de acesso (ACL) em roteadores, com ênfase na arquitetura Cisco. Além disso, ele apresenta, de forma bastante didática, conceitos que ajudam a entender o funcionamento desta importante ferramenta de segurança, como o processo de inicialização do roteador, o fluxo de dados no mesmo, etc.

^

1. Introdução

Este artigo tem por objetivo abordar a configuração de listas de controle de acesso (ACL) em roteadores Cisco. Inicialmente, faremos algumas considerações sobre o hardware e software destes roteadores. Em seguida, abordaremos os conceitos das listas de controle de acesso e sua implementação no roteador.

A segurança possui muitas faces, e uma das mais importantes é a capacidade de controlar o fluxo de pacotes em uma rede com o objetivo de protegê-la de falhas, degradação dos servicos, roubo ou comprometimento dos dados resultantes de uma ação intencional ou de um erro provocado por usuários.

Mas uma solução efetiva de segurança não deve ser baseada somente em recursos técnicos. Deve-se elaborar uma política de segurança de forma a definirem-se as diretrizes de segurança da instituição. Para tanto, existem padrões internacionais com as melhores práticas de segurança, que podem auxiliar no processo de elaboração da política.

Antes de prosseguir a leitura deste artigo analise o item 9 - Exemplos, mesmo que agora você não entenda tudo, pois com a visualisação da ACL o entendimento dos conceitos torna-se mais rápido.

^

2. Os Três As (AAA)

O controle de acesso é a forma pela qual pode-se controlar quem tem acesso aos servidores da rede e quais serviços pode-se utilizar uma vez possuindo acesso aos mesmos.

Neste texto, estaremos focados na AUTORIZAÇÃO. Para tanto, iremos tratar dos recursos de controle de acesso que podem ser implementados em roteadores Cisco, embora os conceitos possam ser aplicados a outros elementos de controle de acesso.

Deve-se ter em mente que um sistema efetivo de segurança não deve ser baseado somente em regras nos roteadores, deve-se utilizar outros elementos como:

O sistema operacional da Cisco (IOS - Internetwork Operational System) fornece várias funcionalidades que podem ser utilizadas para elevar o nível de segurança de uma rede. Dentre estas funcionalidades, está o filtro de pacotes que serão estudados nos próximos tópicos.

^

3. Componentes Básico do Hardware

A Cisco produz vários tipos de roteadores. Embora estes produtos possuam diferenças consideráveis quanto ao seu poder de processamento e quanto ao número de interfaces que suportam, eles utilizam um conjunto básico de hardware. A Figura 1 mostra um esquema genérico que destaca os componentes básicos de um roteador. Embora a CPU, a quantidade de RAM e ROM, a quantidade e os tipos de porta de I/O possam ser diferentes de produto para produto, cada roteador possui os componentes referenciados na figura.

Componentes básicos do hardware

Figura 1 - Componentes básicos do hardware

^

4. O Processo de Inicialização do Roteador

Quando você liga o roteador, algumas rotinas de inicialização são executadas (veja a figura 2).

Inicialmente, o roteador executa o POST (power-on self-test). Durante este processo, ele executa diagnósticos a partir da ROM para verificar as operações básicas da CPU, a memória e as interfaces. Após a verificação das funções do hardware, no estado seguinte, o roteador realiza a inicialização do software.

Após o POST, o roteador procura o registro de configuração para determinar onde está localizado a imagem do IOS. Se o roteador não encontrar uma imagem válida do sistema ou se a sequência de boot for interrompida, o sistema entra no modo ROM monitor; caso contrário, o mesmo procura na NVRAM o indicador da localização da imagem que pode estar:

Uma vez que a imagem do IOS seja encontrada e carregada, passa-se para a próxima fase, que consiste em localizar e carregar o arquivo de configuração.

Este arquivo possui todas as informações de configuração especificadas para o roteador em questão. O arquivo de configuração é armazenado na NVRAM, mas você pode configurar o roteador para carregá-lo a partir de um servidor TFTP. Caso não seja encontrado um arquivo de configuração o roteador entra no modo de setup.

Após completar o processo de inicialização, o roteador começa a operar. A partir deste ponto você pode construir novos parâmetros de configuração ou alterar os existentes.

Fluxo do processo de inicialização do roteador

Figura 2 - Fluxo do processo de inicialização do roteador

Após a inicialização, tanto a imagem do IOS quanto o arquivo de configuração são armazemados na RAM, sendo que a imagem do IOS é armazenado nos endereços baixos e o arquivo de inicialização no endereço alto, conforme ilustrado na Figura 3.

IOS e arquivo de configuração na RAM

Figura 3 - IOS e arquivo de configuração na RAM

^

5. O Fluxo dos Dados

Uma vez que o roteador sabe quais são os tipos de interfaces (Ethernet, Token Ring, FDDI, X.25, Frame Relay, etc) presentes, o mesmo pode verificar o formato dos frames que chegam e montar de saída. Além disso, o roteador pode verificar a integridade dos dados que chegam, pois como o mesmo conhece o tipo de interface, pode calcular o cyclic redundancy check (CRC). Da mesma forma, ele pode calcular o CRC dos frames de saída.

Caso as tabelas de roteamento possuam apenas rotas estáticas, estas não serão trocadas com outros roteadores.

O cache ARP representa uma área da memória onde são armazenadas as relações entre o endereco IP e seu endereço físico (o endereço MAC da camada 2).

Os dados que são recebidos ou preparados para transmissão podem entrar em filas de prioridades, onde o tráfego de baixa prioridade é atrasado em favor do processamento do tráfego de alta prioridade. Se o modelo do roteador suportar priorização de tráfego, certos parâmetros de configuração podem ser informados ao roteador para indicar como realizar esta priorização.

As informações sobre o fluxo dos dados como localização e status dos pacotes são armazenadas na hold queue.

As entradas das tabelas de roteamento informam a interface de destino para o qual determinados pacotes devem ser roteados. Se o destino for uma LAN e for necessária a resolução de endereço, o roteador procúra o endereço MAC inicialmente no cache ARP. Caso o endereço não seja encontrado neste local, o roteador monta um pacote ARP para descobrir o endereço MAC.

Uma vez que o endereço de destino e o método de encapsulamento são determinados, os pacotes são enviados para a porta da interface. Dependendo do volume de tráfego, novamente, o pacote pode entrar em uma fila de prioridade, hardware buffer, até que possa ser enviado. A Figura 4 ilustra o que foi dito acima.

Fluxo dos dados

Figura 4 - Fluxo dos dados

^

6 - Controle do Tráfego com ACL

Uma lista de controle de acesso ( ACL ) é uma lista de regras ordenadas que permitem ou bloqueiam o tráfego de pacotes baseado em certas informações presentes nestes. Vamos analisar esta frase de forma mais detalhada:

Além do controle de acesso, as ACLs podem ser utilizadas para outras funções como:

Note que estas funções são diferentes do controle de fluxo de pacotes através do roteador.

Listas de acesso podem ser configuradas para todos os tipos de protocolos roteáveis como: IP, AppleTalk entre outros. Neste texto, nosso foco é o protocolo TCP/IP.

Visão geral do fluxos de uma lista de acesso

Figura 5 - Visão geral do fluxos de uma lista de acesso

^

7. Como Funciona a ACL

7.1 O Fluxo dos Pacotes Através das Listas de Acesso

O processo tem início quando uma interface recebe um pacote. O roteador verifica a tabela de roteamento à procura de uma rota para o pacote. Caso não tenha uma rota, este pacote será descartado e será enviada para a origem uma mensagem de ICMP (unreachable destination). Caso contrário, verifica-se se existe uma lista de controle de acesso aplicada à interface. Não existindo, o pacote é enviado para o buffer da porta de saída. Existindo, o pacote é analisado pela lista de controle de acesso da interface em questão. Uma vez que o fluxo de dados através da uma determinada interface é bidirecional, uma ACL pode ser aplicada em uma direção especifica da interface:

Vale notar que os pacotes gerados pelo roteador especificamente para troca de tabelas de roteamento não são afetados pelas regras aplicadas a uma interface no sentido outbound. A única forma de controlar os pacotes gerados pelo roteador como atualizaçãoo de tabela é através de ACL de inbound.

Fluxo do pacote através da ACL

Figura 6 - Fluxo do pacote através da ACL

A lista de acesso é conferida em ordem seqüencial, ou seja, o pacote é testado a partir da primeira regra. Assim, se o pacote enquadrar-se em alguma regra, é verificada a condição do mesmo - se permitido ou bloqueado. Caso o pacote não se enquadre em nenhuma das regras, o mesmo será bloqueado pela última regra, a qual é implícita e bloqueia tudo que não está explicitamente permitido, conforme já dito anteriormente. Isto pode ser visto através da Figura 7.

Fluxo de análise do pacote

Figura 7 - Fluxo de análise do pacote

^

7.2 Tipos de Listas de Acesso

Os dois principais tipos de listas de acesso são:

^

7.3 Identificando as Listas de Acesso

Ao se configurar listas de acesso em um roteador, deve-se identificar cada lista de forma única.

Em alguns protocolos, as listas de acesso devem ser identificadas por nome; já em outros, devem ser identificadas por número; e alguns protocolos permitem a identificação por nome ou número. Quando utilizamos números para identificar as listas de acesso, estes devem pertencer a um conjunto de números que "identificam" o protocolo. A partir do IOS 11.2, é permitida a identificação da lista de acesso utilizando-se nomes definidos pelo administrador. Isso para listas de acesso padrão ou estendidas.

Baseado no identificador, o roteador decide qual software de controle de acesso deve ser utilizado.

Observe, nas tabelas abaixo (Tabelas 1 a 3), o agrupamento de nomenclatura para listas de acesso:

Agrupamento por tipo de lista de acesso

Tabela 1 - Agrupamento por tipo de lista de acesso

Protocolos identificados por nome

Tabela 2 - Protocolos identificados por nome

Protocolos identificados por número

Tabela 3 - Protocolos identificados por número

^

8. Implementando ACL

Finalmente é chegada a hora da implementação.

Inicialmente, será abordado um tópico que com freqüência causa confusão ao se tratar de listas de controle de acesso: as máscaras de wildcards.

^

8.1 O Funcionamento do Wildcard em Roteadores Cisco

A filtragem de endereço ocorre com a utilização de máscaras wildcard para identificar o que é permitido ou bloqueado nos bits do IP. As máscaras wildcard para os bits de endereço IP utilizam o número 1 e o número 0 para a identificação do que deve ser filtrado.

Exemplo de

Figura 8 - Exemplo de wildcard

É importante observar que estes bits NÃO possuem relação com as máscaras de IP. A máscara de sub-rede é utilizada para determinar quantos bits de um IP representam uma porção da sub-rede, ou seja, esta máscara determina quais bits são importantes para definir uma sub-rede. Um binário setado em 1 indica que o bit do endereço IP é parte de uma sub-rede; já o binário setado com 0 indica que o bit do endereço IP faz parte da porção host.

No exemplo a seguir, vamos verificar como as máscaras de bits (0|1) bloqueiam ou permitem o tráfego de pacotes baseado no endereço IP.

Teste de condição de uma lista de controle de acesso com protocolo IP: um administrador deseja testar um endereço IP por sub-rede (172.30.16.0 até 172.30.31.0). Os dois primeiros octetos correspondem a parte rede (172.30). O terceiro octeto corresponde à sub-rede (16 até 31), e o quarto corresponde ao host.

O administrador deseja usar as máscaras wildcard para verificar as sub-redes 172.30.16.0 até 172.30.31.0. Isso é feito da seguinte forma:

Existem algumas abreviações que facilitam a utilização dos wildcard. Vamos considerar uma rede onde o administrador permite a entrada de qualquer endereço IP, ou seja, qualquer destino para sua rede é permitido. Para indicar qualquer endereço IP, o administrador deve informar 0.0.0.0. Agora, para indicar que a lista de controle de acesso, deve ignorar a verificação de qualquer bit a máscara deve ser setada com 1s, ignorar a verificação de qualquer bit significa aceitar todos, o resultado final será:

Endereço IP: 0.0.0.0
Máscara: 255.255.255.255
Resultado: permite/aceita qualquer endereço

Neste caso, a máscara 255.255.255.255 pode ser substituída pela palavra (abreviação) any.

Outra possibilidade é quando o administrador deseja criar uma regra que verifique um endereço IP específico; dado o IP 172.30.1.29, deseja-se que a regra criada verifique todo o endereço, para que isso ocorra todo os bits devem ser setados com 0s, desta forma teremos:

Endereço IP: 172.30.1.29
Máscara: 0.0.0.0
Resultado: verificação do endereço específico.

Neste caso a máscara 0.0.0.0 pode ser substituída pela palavra (abreviação) host.

A utilização de máscara incorreta pode levar à implementação de listas de acesso com falhas, como no exemplo a seguir:

Vamos supor que desejamos permitir todos os pacotes IP originados na sub-rede 10.10.0.0 (máscara 255.255.0.0) com destino ao host 160.10.2.100. Todos os demais pacotes devem ser bloqueados. Caso não entenda os comandos, eles serão explicados no próximo tópico.

absoluta(config)# access-list 101 permit ip 10.10.0.0 0.0.0.0 160.10.2.100 0.0.0.0
absoluta(config)# exit
absoluta(config)# show access-list 101
Extended IP access list 101
permit ip host 10.10.0.0 host 160.10.2.100

Pode-se notar que foi criada uma lista de acesso usando a máscara 0.0.0.0. Quando usamos o comando "show access list" o roteador exibe uma entrada com "host". Isso significa que o endereço de origem deve ser exatamente 10.10.0.0, ou seja, somente será permitido o tráfego de pacotes com endereço IP de origem 10.10.0.0 e destino 160.10.2.100. Todos os demais endereços serão bloqueados, inclusive 10.10.1.1, 10.10.1.2, etc. Não é isso que queremos. O nosso objetivo é permitir o tráfego de todos as máquinas da sub-rede 10.10.0.0/16.

Tendo por base o exemplo acima, deve-se criar uma máscara que verifique os dois primeiros octetos "10.10" e ignore os dois últimos "0.0". Lembre-se que binário 0 significa verificar e binário 1 significa ignorar, baseado nesta informação, vamos novamente criar a lista de controle de acesso:

absoluta(config)# access-list 101 permit ip 10.10.0.0 0.0.255.255 160.10.2.100 0.0.0.0
absoluta(config)# exit
absoluta(config)# show access-list 101
Extended IP access list 101
permit ip 10.10.0.0 0.0.255.255 host 160.10.2.100

Agora, o comando "show access-list" mostra a nova máscara, desta vez de forma correta. Os dois últimos octetos contém todos os bits setados para 1, o que equivale ao decimal 255.

Existe, contudo, uma forma mais prática de determinar a máscara a ser utilizada: tudo que você tem a fazer é subtrair a máscara de sub-rede em formato decimal de 255. Isso para cada um dos octetos. Vejamos um exemplo:

máscara de rede: 255.255.224.0
máscara wildcard: ???.???.???.???
pimeiro octeto = 255 - máscara de rede = 255 - 255 = 0
segundo octeto = 255 - máscara de rede = 255 - 255 = 0
terceiro octeto = 255 - máscara de rede = 255 - 224 = 31
quarto octeto = 255 - máscara de rede = 255 - 0 = 255
máscara wildcard: 0.0.31.255

Esta é a forma rápida e fácil de determinar as máscaras wildcard. Mas o importante é entender por que isso funciona e não simplesmente como funciona.

^

8.2 Criando Listas de Acesso

Como dito anteriormente, neste artigo, tratamos das listas padrão e estendidas. Desta forma, vamos passar para a sintaxe deste tipo de listas.

^

8.2.1 Padrão

A sintaxe de uma lista de acesso padrão é a seguinte:

Sintaxe de uma lista de acesso padrão

Lembre-se que, para listas de controle de acesso padrão, a faixa de numeração utilizada inicia-se em 1 e vai até 99.

A partir do modelo apresentado na Figura 9, vamos montar alguns exemplos de lista de controle de acesso:

8.2.1 Estendida

A sintaxe de uma lista de acesso estendida é a seguinte:

Sintaxe de uma lista de acesso estendida

Para as listas de controle de acesso estendida, a faixa de numeração utilizada para referência inicia-se em 100 e vai até 199.

Os protocolos passíveis de filtragem no caso de TCP/IP, são:

Os operadores são:

Ainda tomando como base o modelo apresentado na Figura 9, são exemplos de listas de controle estendidas:

^

8.3 Implementando as Listas de Acesso

8.3.1 Modo de Configuração

Para implementar uma lista de controle de acesso devemos:

  1. Entrar em modo de configuração:

    absoluta# configure absoluta(config)#

  2. Remover a lista de controle de acesso vigente:

    absoluta(config)# no access-list numero da lista

  3. Aplicar a lista com as novas regras:

    absoluta(config)# access-list absoluta(config)# access-list absoluta(config)# access-list

  4. Selecionar uma interface para aplicar a lista de controle de acesso:

    absoluta(config)# interface ethernet 0

  5. Aplicar a lista de controle de acesso de acordo com o sentido de verificação:

    absoluta(config)# ip access-group numero da lista {in | out}

  6. Sair do modo de configuração:

    absoluta(config)# exit

  7. Gravar a nova configuração na NVRAM: class="less"

    absoluta(config)# write mem

^

8.3.2 Desempenho

Geralmente o desempenho do roteador é uma das principais preocupações dos administradores de rede quando se fala em implementação de listas de controle de acesso no mesmo. Sabemos que as regras da lista de controle de acesso são analisadas seqüencialmente até que seja encontrada uma regra, que coincida com o pacote analisado, ou que se chegue à última regra que bloqueia tudo que não está permitido. Desta forma, devemos observar alguns procedimentos que devem ser adotados no sentido de minimizar o impacto que as listas de controle de acesso possam causar:

A análise destas informações é de vital importância para a implementação das regras de forma a minimizar os possíveis impactos que possam vir a ocorrer no roteador.

Uma sugestão de estratégia de implementação com atenção ao impacto é:

^

8.4 Exemplos

O objetivo desta seção é demonstrar o processo de criação de regras. Não existe a intenção de demonstrar um grupo completo de regras, uma vez que cada rede possui suas características próprias, e os filtros devem ser criados em conformidade com a realidade da rede.

Caso você não compreenda o que esta fazendo, poderá ter problemas devido a uma má implementação de filtros. Desta forma, evite simplesmente copiar as regras que encontrar nos livros e artigos. Procure entendê-las antes de partir para a sua implementação. De qualquer forma, consulte os artigos listados nas referências, pois os mesmos possuem um conjunto de regras interessantes.

Para nossos exemplos, vamos assumir uma topologia de rede conforme ilustrado na Figura 9.

visão da topologia de rede para os exemplos

Figura 9 - Visão da topologia de rede para os exemplos

Inicialmente, vamos usar como exemplo para montagem de regras a conexão de SMTP, de forma a permitir o envio e recebimento de mensagens de correio eletrônico. A tabela montada abaixo facilita a definição das regras.

regra direção ip_orig. ip_dest. protocolo porta_dest. ação
A entrada externo interno TCP 25 permite
B saída interno externo TCP >1023 permite
C saída interno externo TCP 25 permite
D entrada externo interno TCP >1023 permite
E ambas qualquer qualquer qualquer qualquer bloqueia

Tabela 4 - Tabela de regras considerando apenas portas de destino

Com relação à tabela acima:

Vamos considerar alguns exemplos de pacotes para facilitar o entendimento das regras. Nosso servidor SMTP possui o IP 10.0.0.1 e alguem de uma rede externa com IP 172.16.2.3 tenta enviar uma mensagem para nós. A porta de origem utilizada pelo cliente externo é 1234 com destino para 25. Analisando esta situação de acordo com as regras implementadas, temos o seguinte:

pacote direção ip_orig. ip_dest. protocolo porta_dest. ação
1 entrada 172.16.2.3 10.0.0.1 TCP 25 permite (A)
2 saída 10.0.0.1 172.16.2.3 TCP >1023 permite (B)

Tabela 5 - Resumo de ação para mensagem que chega

Neste caso, as regras do nosso roteador permitem a entrada dos pacotes de email:

Agora, vamos considerar o caso de alguém respondendo a esta mensagem. O cliente localizado na rede interna possui o IP 10.0.0.4 usando a porta 1245 e vai responder para um usuário que possui conta no servidor 172.16.2.1 porta 25:

pacote direção ip_orig. ip_dest. protocolo porta_dest. ação
3 saída 10.0.0.4 172.16.2.1 TCP 25 permite (C)
4 entrada 172.16.2.1 10.0.0.4 TCP >1245 permite (D)

Tabela 6 - Resumo de ação para mensagem que sai

Neste caso, as regras do nosso roteador permitem a saída dos pacotes de mensagens de correio eletrônico:

Suponhamos agora que alguém localizado em uma rede externa (número IP 172.16.2.3), usando a porta 4321 tente abrir uma conexão no servidor 10.0.0.1 na porta de x-windows, 6000:

pacote direção ip_orig. ip_dest. protocolo porta_dest. ação
5 entrada 172.16.2.3 10.0.0.1 TCP 6000 permite (D)
6 saída 10.0.0.1 172.16.2.3 TCP 4321 permite (B)

Tabela 7 - Resumo de ação para conexão com x-windows

Aqui, as regras do nosso roteador comportam-se da seguinte forma:

Certamente isso não é o que queremos. Para contornar esta situação devemos agregar mais um elemento as nossas regras, a porta de origem. Vejamos como fica:

regra direção ip_orig. ip_dest. protocolo porta_orig. porta_dest. ação
A entrada externo interno TCP >1023 25 permite
B saída interno externo TCP 25 >1023 permite
C saída interno externo TCP >1023 25 permite
D entrada externo interno TCP 25 >1023 permite
E ambas qualquer qualquer qualquer qualquer qualquer bloqueia

Tabela 8 - Tabela de regras considerando também portas de origem

Agora vejamos o comportamento das regras com este novo elemento:

pacote direção ip_orig. ip_dest. protocolo porta_origem porta_dest. ação
1 entrada 172.16.2.3 10.0.0.1 TCP 1234 25 permite (A)
2 saída 10.0.0.1 172.16.2.3 TCP 25 1234 permite (B)
3 saída 10.0.0.4 172.16.2.1 TCP 1245 25 permite (C)
4 entrada 172.16.2.1 10.0.0.4 TCP 25 1245 permite (D)
5 entrada 172.16.2.3 10.0.0.1 TCP 4321 6000 bloqueia (E)
6 saída 10.0.0.1 172.16.2.3 TCP 6000 4321 bloqueia (E)

Tabela 9 - Novo resumo de ação considerando porta de origem

Como podemos observar, após a inclusão deste novo elemento de filtragem tornou-se possível bloquear o ataque à porta x-windows.

Mas o que impede de alguem tentar abrir uma conexão na porta x-windows, 6000, usando como origem a porta 25?

Vamos analisar o que acontece nesta situação:

pacote direção ip_orig. ip_dest. protocolo porta_orig. porta_dest. ação
7 entrada 172.16.1.2 10.0.0.1 TCP 25 6000 permite (D)
8 saída 10.0.0.1 172.16.1.2 TCP 6000 25 permite (C)

Tabela 10 - Resumo de ação para conexão na porta de x-windows com origem na porta 25

Como podemos notar este pacote será permitido e a tentativa de abertura de conexão terá sucesso.

Para resolvermos este problema, temos que incluir mais um elemento em nossos filtros. Desta vez, vamos incluir a análise das flags dos pacotes TCP, expecificamente a flag ACK.

regra direção ip_orig. ip_dest. protocolo porta_orig. porta_dest.   flag  ação
A entrada externo interno TCP >1023 25 qualquer permite
B saída interno externo TCP 25 >1023 somente
  ACK
permite
C saída interno externo TCP >1023 25 qualquer permite
D entrada externo interno TCP 25 >1023 somente
  ACK
permite
E ambas qualquer qualquer qualquer qualquer qualquer qualquer bloqueia

Tabela 11 - Tabela de regras considerando também flags

Como você sabe, no processo de estabelecimento de conexão TCP, sempre o primeiro pacote possui a flag ACK setada como 0. Já os demais pacotes da conexão possuem a flag ACK setada em 1.

Agora vamos analisar o que ocorre com a inclusão deste novo elemento em nosso filtro:

pacote direção ip_orig. ip_dest. protocolo porta_orig. porta_dest. flag ação
7 entrada 172.16.1.2 10.0.0.1 TCP 25 6000 ACK=0 bloqueia(E)

Tabela 12 - Novo resumo de ação para conexão na porta de x-windows com origem na porta 25

Como você pode notar agora as tentativas de abertura de conexão com origem em redes externas e destinadas a portas maiores que 1023 serão bloqueadas.

Vale lembra que é recomendável registrar todas as tentativas de violação das regras, pois desta forma você poderá descobrir as tentivas de violação da sua política de segurança.

No caso de roteadores Cisco, as regras A e B são traduzidas para uma única regra, pois o mesmo possui recursos de manter tabelas internas com status da conexão. Este recurso está disponível em roteadores de outros fabricantes. Esta regra seria traduzida para o seguinte:

access-list   101   permit tcp    any  host    <endereco_IP_serv_SMTP>    eq    smtp

Agora, irei apresentar uma série de regras reais. Analise cuidadosamente cada uma de forma a entender sua aplicação. Mas lembre-se, estas regras podem não representar as necessidades da sua rede. Como dito anteriormente, cada rede possui uma realidade própria.

!Lista 101 - Regras de Entrada
!Limpar a lista para permitir atualização
no access-list 101
!Restrições aos endereços de origem dos pacotes
!proíbe endereços iguais ao IP interno (spoofing)
access-list 101 deny ip 0.0.0.255 any log
!proíbe endereços das interfaces do router (land attack)
<Endereço_IP_da_S0><Endereço_IP_da_S0> access-list 101 deny ip 0.0.0.0 0.0.0.0 log
<Endereço_IP_da_S1><Endereço_IP_da_S1> access-list 101 deny ip 0.0.0.0 0.0.0.0 log
<Endereço_IP_da_Eth0><Endereço_IP_da_Eth0> access-list 101 deny ip 0.0.0.0 0.0.0.0 log
!proíbe endereços reservados a redes privativas (RFC-1918)
access-list 101 deny ip 10.0.0.0 0.255.255.255 any log
access-list 101 deny ip 172.16.0.0 0.15.255.255 any log
access-list 101 deny ip 192.168.0.0 0.0.255.255 any log
!proíbe o endereço de loopback
access-list 101 deny ip 127.0.0.0 0.255.255.255 any log
!proíbe o bradcasting (evita ping amplifying)
access-list 101 deny ip host 255.255.255.255 any log
!Permite conexões iniciadas internamente (TCP ACK=1)
access-list 101 permit tcp any any established
!Restrições e redirecionamento de serviços
!proíbe acesso ao TFTP
access-list 101 deny udp any any eq 69 log
!proíbe acesso ao X-Windows
access-list 101 deny tcp any any range 6000 6005 log
access-list 101 deny udp any any range 6000 6005 log
!proíbe o acesso ao SNMP
access-list 101 deny udp any any eq snmp log
access-list 101 deny udp any any eq snmptrap log
!permite o acesso a porta 113/tcp e 113/udp (identd e auth), mas faz log
!essas portas sao usadas em winoob/winnuke attacks
access-list 101 permit tcp any any eq 113 log
access-list 101 permit udp any any eq 113 log
!HTTP apenas para o servidor HTTP
<Endereço_IP_Serv_WWW> access-list 101 permit tcp any host eq www
<Endereço_IP_Serv_WWW> access-list 101 permit udp any host eq 80
!SMTP apenas para o servidor de mail
access-list 101 permit tcp any host <Endereco_IP_Serv_SMTP> eq smtp
!POP3 apenas para o servidor de POP3 (se for permitir externo)
access-list 101 permit tcp any host <Endereco_IP_Serv_POP3> eq pop3
!DNS x-fer apenas para secundarios
access-list 101 permit udp any host <Endereco_IP_Serv_DNS1> eq domain
access-list 101 permit udp any host <Endereco_IP_Serv_DNS2> eq domain
access-list 101 permit tcp host <Endereco_IP_Secund_DNS1> host <Endereco_IP_Serv_DNS1> eq domain
access-list 101 permit tcp host <Endereco_IP_Secund_DNS1> host <Endereco_IP_Serv_DNS2> eq domain
access-list 101 permit tcp host <Endereco_IP_Secund_DNS2> host <Endereco_IP_Serv_DNS1> eq domain
access-list 101 permit tcp host <Endereco_IP_Secund_DNS2> host <Endereco_IP_Serv_DNS2> eq domain
!permite pacotes TCP e UDP apenas para portas nao privativas do SO
access-list 101 permit tcp any any gt 1023
access-list 101 permit udp any any gt 1023
!proíbe todo o resto, mas faz log
access-list 101 deny ip any any log

!Lista 102 - Regras de Saída
!Limpar a lista para permitir atualização
no access-list 102
!permite apenas endereços internos
access-list 102 permit ip <Endereço_Classe_C_Interno> 0.0.0.255 any
!proíbe qualquer outra coisa e faz log
access-list 102 deny ip any any log

^

8.5 Mantendo Backup dos Arquivos de Configuração

A manutenção de cópias de segurança dos arquivos de configuração e do IOS é de fundamental importância, pois, eventualmente, devido a falhas de corrente elétrica, estes arquivos pode ser danificados ou apagados da memória flash. Além disso, a manutenção de backup dos arquivos facilita a administração de redes com vários roteadores.

O admistrador de rede possui várias possibilidades de realização de cópias de segurança, uma delas é o TFTP.

O ideal é existir uma rede segregada dedicada para a função de gerência de rede, onde se inclui a gerência da segurança. Esta deve estar isolada da rede de dados e prover canais de comunicação out-of-band. No caso de necessidade de utilização dos canais de dados para funções de gerência, é recomendável a utilização de canais seguros.

De qualquer forma, como o serviço TFTP não requer autenticação, é extremamente recomendável a implementação de algum mecanismo que controle a origem das conexões ao servidor TFTP.

Os comandos TFTP para realizar cópia de segurança e atualização de arquivos são:

Assim, para carregar uma nova versão da imagem do IOS para a memória flash do roteador, use o comando copy tftp flash , como mostrado abaixo:

absoluta# copy tftp flash
System flash directory:

File      Length        Name/status
1        4171336    c4500-j-mz_112-15a.bin
[4171400 bytes used, 22904 available, 4194304 total]
Address or name of remote host [10.1.10.40]? 10.1.10.40
Source file name? c4500-j-mz_112-15a.bin
Destination file name [c4500-j-mz_112-15a.bin]? yes
Accessing file 'c4500-j-mz_112-15a.bin' on 10.1.10.40...
Loading c4500-j-mz_112-15a.bin from 10.1.1.12 (via TokenRing1): [OK]

Erase flash device before writing? [confirm] yes
Flash contains files. Are you sure you want to erase? [confirm] yes

Copy 'c4500-j-mz_112-15a.bin' from server 
    as 'yes' into  Flash WITH erase? [yes/no] yes 
Erasing device... eeeeeeeeeeeeeee ...erased 
Loading c4500-j-mz_112-15a.bin from 10.1.1.12 (via TokenRing1): !!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
[OK - 4171336/4194304 bytes]
verifying checksum... OK (0x29D5) Flash copy took 00:00:30 [hh:mm:ss] absoluta#

Para realizar um backup do arquivo de configuração, use o comando copy running-config tftp, conforme o exemplo abaixo:

absoluta# copy running-config tftp
Remote host [ ]?  10.1.10.40
Name of configuration file to write [router-confg]? config_router_principal_2000-05-20.bak 
Write file config_router_principal_2000-05-20.bak  on host 10.1.10.40? [confirm] yes 
Building configuration... 

Write config_router_principal_2000-05-20.bak !!!!!! [OK] 
absoluta#

^

9. Conclusão

Como dito no início, o assunto tratado neste texto tem por objetivo principal ajudar os administradores de rede no processo de configuração de roteadores. Com sua modesta abrangência, este trabalho pretende servir como motivação ao leitor para busca de novos conhecimentos no campo da segurança da informação. Não houve aqui a pretensão de esgotar o assunto, mas sim fornecer ao leitor um texto condensado, reunindo conceitos fundamentais ao entendimento dos termos relacionados.

Desta forma, procurei descrever o processo de tomada de decisão interno de um roteador de forma a permitir ao leitor um melhor entendimento dos recuros presentes em suas redes. Além disso vale notar que a simples implementação de listas de contorle de acesso em roteadores não é o suficiente para garantir a segurança de uma rede, trata-se mais um recurso que deve ser utilizado de acordo com a política de segurança e em conjunto com os demais elementos que componhem o perímetro de segurança da rede.

Firewall é uma tecnologia que permite várias abordagens, onde podemos chamar um simples elemento com filtros de pacote de firewall até estruturas de várias camadas com zonas desmilitarizadas.

Antes de realizar qualquer implementação tenha certeza de que entendeu o funcionamento de todas as regras criadas.

O autor não dá nenhuma garantia quanto a danos que possam ser causados devido a implementação das regras discutidas neste artigo.

^

11. Sites relacionados

Melhorando a Segurança com Filtros de Pacote: http://www.xxx.com.br

Aumentando a segurança de redes TCP/IP através de filtros de pacote: http://www.absoluta.org

Filtros de Pacote em Roteadores Cisco: http://www.rnp.br - Março de 1998

Cisco Systems: http://www.cisco.com

^

Referências bibliográficas

[1] Cisco Security Architectures, Gil Held & Kent Hundley - (ISBN: 0-07-134708-9).

[2] Cisco IOS Network Security - (ISBN: 1-57870-057-4).

[3] Cisco A Beginner's Guide - (ISBN: 0-07-212115-7).

[4] Cisco Access Lists - (ISBN: 0-07-212335-4 ).

[5] Introduction to Cisco Router Configuration: Student Guide.

[6] Building Bastion Routers Using Cisco IOS - Phrack Magazine (P55-10).

[7] Building Internet Firewalls (ISBN - 1-56592-124-0).

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004