Google
 
Lista de controle de acesso - ACL PDF Imprimir E-mail
Escrito por Elaine Turatto   
Seg, 21 de abril de 2008 20:37

O objetivo desse artigo é descrever como as listas de acesso IP (ACLs) podem filtrar o tráfego em uma rede. Também contém uma breve descrição dos tipos de ACL IP, características e exemplos de uso.

As ACLS não são utilizadas somente com o propósito de filtrar tráfego IP, elas podem ser utilizadas também para definir tráfego que esta sujeito ao Network Address Translation (NAT) e o tráfego que será criptografado em uma configuração de VPN, entre outras utilidades.

O processamento das ACLs ocorre da seguinte forma: o tráfego que entra no roteador é comparado com as entradas nas ACLs na ordem em que elas foram escritas. Por isso é muito importante tomar cuidado na hora de redigir as ACLs para que um tráfego que você precisa permitir não fique bloqueado atrás de uma entrada na ACL que negue um tráfego específico.
Novas linhas da ACL pode ser adicionada ao final da lista e o roteador ou switch de camada 3 irá analisar as linhas da lista até encontrar uma que combine com o tráfego específico. Se nenhuma combinação é encontrada na lista, o tráfego é negado. Existe um entrada negando tudo (deny implícito) ao final da lista de controle de acesso. Por essa razão a lista de controle de acesso precisa ter pelo menos uma linha permitindo o tráfego desejado, caso contrário todo o tráfego será negado.   

Para exemplificar, analisamos os dois exemplos a seguir, eles têm o mesmo resultado:

Exemplo 1: access-list 101 permit ip 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255
Exemplo 2: access-list 102 permit ip 10.1.1.0 0.0.0.255 172.16.1.0 0.0.0.255 
                  access-list 102 deny ip any any

Além de definir a origem e o destino do tráfego, podemos definir portas de origem e destino, tipos de mensagens ICMP e outros parâmentros que ajudam ainda mais a restringir as entradas das listas de acesso que serão aplicadas nas interfaces dos roteadores.

Exemplo 3:
access-list 102 permit icmp host 10.1.1.1 host 172.16.1.1 14 - permite todos os tipos de mensagens icmp
access-list 102 permit icmp host 10.1.1.1 host 172.16.1.1 eco-request - permite apenas um tipo de mensagem icmp

As listas de controle de acesso só terão efeito depois de aplicadas a uma interface. Uma boa prática é aplicar a ACL na interface mais próxima da origem do tráfego.

 

Como mostra o exemplo, quando você quer bloquear um tráfego de uma origem para um destino, você pode aplicar a ACL na E0 no Router A como inbound, ao invés de aplicar como outbound na interface E1 do Router C.
Os termos in, out, source e destination são utilizados como referência pelos roteadores e possuem os seguintes significados:

  • in: tráfego entrante na interface.
  • out: tráfego sainte na interface.
  • source: origem do tráfego.
  • destination: destino do tráfego.

Tipos de ACLs:

ACL padrão: esse tipo de ACL existe desde a versão 8.3 do Cisco IOS Software e controla o tráfego comparando o endereço  de origem dos pacotes IP com o endereço configurado na ACL. A sintaxe da ACL padrão é a seguinte:

access-list access-list-number {permit|deny} {host|source source-wildcard|any}

Os números desse tipo de ACL podem ser de 1 a 99, a partir da versão 12.0.1 do IOS foram adicionados os números 1300 a 1999 e a partir da versão 11.2 do IOS podemos identificar uma ACL padrão pelo nome. A palavra any substitui qualquer endereço IP e a palavra host indica que a regra se aplica apenas aquele determinado endereço IP.

Exemplo 4:
access-list 10 permit host 10.10.10.1 - apenas o host 10.10.10.1 será liberado
access-list 10 deny any - todo o tráfego restante será negado.

Depois de elaborada a lista de acesso, ela precisa ser aplicada a uma interface.
interface <interface>
ip access-group number {in|out}

Caso a palavra in ou out não for especificado, out fica aplicado como padrão.

ACL estendida: A lista de acesso estendida possui maior recursos de verificação. Com esse tipo de ACL podemos analisar o IP de origem, o IP de destino, a porta de origem, a porta de destino, os protocolos e alguns outros parâmetros.
Os números desse tipo de ACL podem ser de 101 a 199, a partir da versão 12.0.1 do IOS foram adicionados os números 2000 a 2699 e a partir da versão 11.2 do IOS podemos identificar uma ACL estendida pelo nome.

Exemplo 5:

Router(config)# access-list 101 deny icmp any 10.1.1.0 0.0.0.255 echo - nega o tráfego de ping
Router(config)# access-list 101 permit ip any 10.1.1.0 0.0.0.255 - permite todo o tráfego ip
Router(config)# interface Ethernet0/1
Router(config-if)# ip address 172.16.1.2 255.255.255.0
Router(config-if)# ip access-group 101 in
 

ACLs Nomeadas: esse tipo de ACL foi criada a partir da versão 11.2 do IOS e permite que ACLs padrão e estendida sejam nomeadas.
ip access-list {extended|standard} name

Exemplo 6: 
Router(config)# ip access-list extended Saida
Router(config-ext-nacl)# permit tcp host 10.1.1.2 host 172.16.1.1 eq telnet
Router(config)# interface Ethernet0/0
Router(config-if)# ip address 10.1.1.1 255.255.255.0
Router(config-if)# ip access-group Saida in

ACLs Reflexivas: esse tipo de ACL foi criada a partir da versão 11.3 do IOS e são utilizadas por exemplo, para quando você libere um tráfego de saida da tua rede local, a resposta desse tráfego retorne. Essa tipo de ACL permite somente temporariamente o tráfego, as entradas são criadas automaticamente quando uma nova sessão IP é incializada e é removida quando a sessão termina.

Exemplo 7:
Router(config)# ip access-list extended name
Router(config-ext-nacl)# permit protocol any any reflect name [timeout seconds]
Router(config-if)# ip access-group name out
ou
Router(config-if)# ip access-group name in

Comentários em listas de acesso: os comentários foram adicionados a partir do IOS  12.0.2.T para tornar mais fácil o entendimento da ACL. Pode ser utilizado em lista de acesso padrão e estendida.
Exemplo 8:
Router(config)# access-list 101 remark permit_telnet
Router(config)# access-list 101 permit tcp host 10.1.1.2 host 172.16.1.1 eq telnet

Ao editar uma ACL tenha sempre muita atenção. Se você pretende apagar uma linha de ACL numerada, como mostrado, a ACL inteira será apagada.
Exemplo 9:
router#configure terminal
  Enter configuration commands, one per line.  End with CNTL/Z.
  router(config)#access-list 101 deny icmp any any
  router(config)#access-list 101 permit ip any any
  router(config)#^Z
  router#show access-list
  Extended IP access list 101
      deny icmp any any
      permit ip any any
  router#
  *Apr  9 00:43:12.784: %SYS-5-CONFIG_I: Configured from console by console
  router#configure terminal
  Enter configuration commands, one per line.  End with CNTL/Z.
  router(config)#no access-list 101 deny icmp any any
  router(config)#^Z
  router#show access-list
  router#
  *Apr  9 00:43:29.832: %SYS-5-CONFIG_I: Configured from console by console

Dica importante: Sempre copie a ACL para um editor de texto, antes de fazer qualquer alteração e de preferência faça uma cópia de todas as configurações do equipamento que você está editando as regras, para que você tenha em mãos a última configuração válida, caso algum problema ocorra.

Troubleshooting:

Para remover uma ACL de uma interface: vá para o modo de configuração da interface e digite um no na frente do comando ip access-group.
interface <interface>
no ip access-group # in|out

O comando show ip access-list (nome ou número) mostra a contagem de pacotes que estão combinando com a ACL.
router#sh ip access-lists Saida
Extended IP access list Saida
    10 permit tcp any any established (1848 matches)
    20 permit tcp any any eq www (440501 matches)
    30 permit tcp any any eq 443 (40147 matches)
    40 permit tcp any any eq ftp (222 matches)

A palavra log pode adicionada ao final de uma entrada na ACL para mostrar os pacotes que estão combinando com determinada entrada.
Router(config)# ip access-list extended Saida
Router(config-ext-nacl)# deny ip any any log

Para verificar todos os pacotes que estão sendo negados utilize o comando:
router# terminal monitor

 

Última atualização ( Ter, 22 de abril de 2008 08:58 )