Você já pensou porque ACL assusta tanto quando estamos começando a aprender as configurações do Cisco IOS para uma certificação?
Eu mesmo tenho que confessar que cheguei a passar vergonha na minha primeira aula de ACL a muito tempo atrás… Foi em 2002 na minha primeira turma de CCNA aqui em Curitiba quando trabalhava no SENAI.
Mas de lá para cá passaram-se muitos anos, muitas turmas, vídeos, perguntas de alunos e por isso resolvi revelar quatro dicas que aprendi e ajudam muito a você perder o medo para virar o jogo e dominar o assunto ACL.
Nesse artigo você vai aprender os seguintes pontos para ajudar a “destruir” em um exercício de ACL:
- Lógica de Encaminhamento dos Pacotes IP
- Criar e Interpretar as Regras de Filtragem
- Máscara Curinga
- Direção do Tráfego nas Interfaces
- Exemplos de Criação de ACL
Ah, no final do artigo deixei um PDF com o resumo dos comandos para criação de ACLs IP Padrão e as principais portas TCP/UDP para os exames Cisco.
Lógica de Encaminhamento dos Pacotes IP
Antes de tentar entender os comandos e criar Access Control Lists você deve (deve com D maiúsculo) entender como os pacotes IP são encaminhados na rede.
Por exemplo, você sabe como é um acesso de um cliente da sua rede LAN a um servidor HTTP para buscar uma página da Web localizado na Internet?
Se você não sabe responder essa pergunta em termos de fluxo dos pacotes IP e segmentos TCP então é importante que você primeiro resolva esse passo nos seus estudos.
Você deve estar se perguntando: “Mas porque?”.
A resposta é simples uma ACL ou Lista de Controle de Acesso é utilizada para filtrar pacotes conforme características do tráfego utilizando campos do pacote IP ou do segmento TCP ou datagrama UDP, portanto se você não sabe como se dá o fluxo de pacotes na rede como vai criar ou interpretar uma ACL?
Lembre-se que maioria das aplicações no TCP/IP são do tipo “cliente/servidor”, ou seja, um cliente requisita um serviço e tem uma reposta do servidor.
Que serviços são esses? São os protocolos da camada de aplicação tais como DNS, HTTP, HTTPS, FTP, TFTP, SMTP, IMAP, Telnet, SSH, SNMP e muitos outros, porém esses que citei são os mais “quentes” para as certificações iniciais como CCENT, ICND-2 e CCNAX (CCNA Routing and Switching).
Você não precisa saber como funciona cada um deles, suas mensagens e coisas desse tipo, apenas precisa saber se eles utilizam TCP ou UDP na camada de transporte e que porta é utilizada para criar e interpretar um exercício ou simulador de ACL.
Por exemplo, o HTTP utiliza o TCP como protocolo de transporte através da porta 80, já o TFTP utiliza UDP na porta 69.
Deixei a lista desses protocolos relacionados a porta TCP/UDP no PDF para download no final do artigo, não se preocupe em sair procurando nada agora, continue lendo e estudando comigo o artigo, ok?
Tem 4 coisas que você deve lembrar na comunicação dos protocolos TCP e UDP:
- O TCP é orientado a conexão, por isso antes de dois dispositivos trocarem dados da camada de aplicação eles precisam sincronizar com o processo de Handshake de três vias (SYN > SYN/ACK > ACK).
- Quando o TCP abre uma conexão sempre o primeiro segmento tem o flag ACK igual a zero e o SYN setado em 1, permitindo que você identifique quando alguém deseja abrir conexão com seu computador.
- O UDP não é orientado a conexão, por isso quando é preciso enviar algo via protocolo UDP o computador de origem manda os dados, desculpe a brincadeira mas, sem frescuras… Manda e acabou, simples assim.
- Tanto o TCP como o UDP utilizam números de portas para identificar os serviços e conexões dentro do próprio computador e no servidor remoto. Portanto é com esse número de porta que identificamos um serviço dentro de uma regra, por exemplo, se quero bloquear acesso Web basta bloquear a porta 80 do protocolo TCP.
Então vamos fazer o caminho de um fluxo de dados com o que aprendemos até agora, ok?
Por exemplo, você abriu um navegador e quer acessar uma página de Internet.
Primeiro seu computador deve resolver o nome da URL que você digitou para um endereço IP, ele faz via DNS.
Essa requisição DNS utiliza o protocolo UDP na porta 53, porém e agora? O que o UDP faz para que isso seja encaminhado na rede?
Simples, passa para o protocolo IP, ou seja, tanto para TCP como para UDP não existe opção de envio, ambos enviarão suas informações para o protocolo IP encaminhar na rede.
No protocolo IP é montado um pacote com o endereço de origem do computador, que está na própria placa de rede configurado normalmente via DHCP, e também o endereço do DNS do seu provedor de Internet.
Pronto, agora o protocolo IP finaliza o pacote com o IP de origem e destino, empacota junto o que ele recebeu do UDP ou TCP e manda pela camada de acesso aos meios, ou seja, normalmente através da sua placa de rede com fio ou sem fio, dependendo do seu computador.
Essa informação navega pela rede, é roteada ao servidor de destino que deve processar a informação (seu pedido ou requisição) e devolver uma resposta.
Aqui vem outro ponto muito importante, o retorno da resposta!
Agora no servidor o que era origem no TCP/UDP e IP vira destino, por exemplo, ele recebeu um pacote com seu IP de origem e uma porta UDP sua também de origem pedindo o IP da URL digitada no navegador, certo?
Na hora do servidor devolver a resposta o IP de origem do pacote dele será o endereço do servidor e a porta de origem a porta 53, já o IP e porta UDP de destino serão seus endereços, os do seu computador.
Por que isso é importante para criação de regras de ACL? Pense um pouco…
Se seu gerente pede para você bloquear acesso ao e-mail convencional via POP3, que utiliza TCP na porta 110, o que você vai fazer?
Por exemplo, pode bloquear na saída da sua rede quaisquer pacotes que tentem deixar a rede via protocolo TCP na porta 110.
Se você colocar a mesma regra na entrada da rede não vai surtir efeito, pois os pacotes serão de retorno e nesse caso a porta TCP será uma porta alta do seu computador, ou seja, não funciona!
Dedique um tempo para entender o fluxo de informações TCP e UDP na sua rede, vale a penas não só para o exame de certificação, mas também para que você consiga resolver problemas de rede mais facilmente. “#Ficaadica” como falam nas redes sociais! 🙂
O próximo passo, depois de saber como os pacotes são enviados na rede, é criar regras, entender o que são regras e os tipos que podemos criar utilizando ACL, por isso relaxe e vamos em frente porque é isso que vamos estudar a seguir.
Criar e Interpretar as Regras de Filtragem
As listas de controle de acesso ou ACL mais cobrada nos exames iniciais da Cisco pode ser de dois tipos: ACL IP Padrão e ACL IP Estendida.
A ACL IP padrão é a mais simples das duas, sendo que ela só filtra pela endereço IP de origem do pacote, mais nada.
Então uma aplicação para esse tipo de lista de controle de acesso seria negar ou permitir acesso a sub-redes específicas a uma região da rede.
A regra seria simples, por exemplo, permitir (permit) ou negar (deny) acesso a pacotes cuja rede IP de origem seja 192.168.1.0/24, por exemplo.
Já com uma ACL estendida você pode criar regras mais complexas, podendo fazer sua filtragem utilizando vários parâmetros, sendo que os mais importantes são:
- Endereços, redes ou sub-redes IP de origem
- Endereços, redes ou sub-redes IP de destino
- Portas TCP de origem
- Portas TCP de destino
- Estado da conexão TCP (verificar flag ACK)
- Portas UDP de origem
- Portas UDP de destino
O importante sobre as regras criadas com ACL, seja ela padrão ou estendida, são interpretadas na sequência, da primeira regra criada para a última, por isso “a ordem das batatas aqui afeta a maionese“.
Se você quer bloquear o acesso a Internet via HTTP e antes coloca uma regra que libera toda e qualquer conexão o HTTP nunca será bloqueado, concorda?
Além disso, no final da ACL o Cisco IOS coloca uma negação implícita (deny implícito), ou seja, não importa quantas regras você crie no final vai ter um “bloqueia tudo”.
Isso é muito importante, pois se você só criar regras de negação e aplicar a uma interface simplesmente NADA vai passar, é como colocar um cadeado na interface.
Normalmente fazemos regras que bloqueiam tudo e liberam somente o que é permitido ou permite tudo e bloqueia o que não é permitido.
No primeiro caso você precisará colocar uma permissão pelo menos no final para não travar a interface, já no segundo caso não é preciso, pois você vai criar regras de liberação e o bloqueio já está implícito no final da ACL.
Você pode utilizar uma tabela que utilizamos em nossos cursos para o CCENT e CCNA Security, veja exemplo a seguir e a tabelinha de regras na sequência.
Por exemplo, um exercício pede para criar uma ACL que permita que apenas o host 192.168.10.20 acesse o servidor SMTP com endereço 192.154.192.3, além disso nesse mesmo servidor temos o serviço de HTTP que pode ser acessado por quaisquer redes.
Outro requisito é que a rede 192.168.10.0/24 acesse quaisquer servidores HTTP sem restrição.
Os demais tráfegos devem ser negados. Veja abaixo a tabela com as regras na sequência solicitada, mas nem sempre vai ser assim, fiz desse jeito só para ficar mais didático.
Essa tabela representa cada linha que vamos ter que criar no Cisco IOS para configuração da ACL.
Então quando um pacote for testado frente a essa lista de controle de acesso ele verifica cada linha e se “bater” o teste ele faz a ação configurada de permitir ou negar a entrada ou saída do pacote, simples assim, só duas opções após o teste.
Por exemplo, se o pacote com origem 10.0.0.1 quiser acessar o servidor 192.168.10.3 pela porta TCP 110 que é POP3 ele vai ser testado na primeira regra e não bate, pois ela testa a origem 192.168.10.20.
Na segunda regra a origem bate (qualquer origem), o destino também (192.168.10.3), o protocolo também (TCP), mas a porta não, então vai para a próxima linha.
A origem não bate também, pois na regra tem que ser 192.168.10.0/24 (192.168.10.1 a 10.254) e vai para a próxima linha.
Agora dá o match ou bate a regra, pois ela diz que quando chegar ali qualquer origem ou destino ou protocolo ou porta vai ser negado, por isso o pacote não entra ou não sai da rede, depende de como foi aplicada a lista na interface.
Note que se conseguir montar uma tabela dessas a partir das especificações do exercício ou de um cliente que você está atendendo fica muito fácil traduzir essas regras em comandos de ACL no Cisco IOS.
Na sequência vamos estudar sobre a máscara curinga, pois na hora de selecionar redes as ACLs não utilizam a máscara de rede normal.
Máscara Curinga
Antes de começar a traduzir suas regras em ACL saiba que ela não usa a máscara normal de rede ou sub-rede, ao invés disso a ACL usa uma máscara curinga ou “Wildcard Mask” para selecionar redes, sub-redes e endereços específicos.
Tem gente que chama a máscara curinga de “máscara invertida”, mas eu particularmente não gosto de chamar assim, pois ela é invertida em alguns casos apenas.
Na máscara de sub-rede o bit 1 indica rede e zero indica a porção de host, já na máscara curinga o 1 indica que nada precisa ser testado, já deu “match” ou bateu, e o bit zero indica que o bit do pacote IP deve ser igual ao do que você indicou na ACL.
Por exemplo, uma ACL IP padrão configurada com 10.0.10.1 e máscara curinga 0.0.0.0 exige que o IP de origem do pacote IP seja idêntico a 10.0.10.1, pois todos os seus bits são zero e indicam que TUDO precisa bater ou dar match.
Se fizermos ao contrário, colocando 10.0.10.1 com a máscara curinga 255.255.255.255 (tudo 1) qualquer coisa que vier no pacote IP passa, pois o 1 na máscara curinga indica que “vale tudo” para a ACL.
Maioria dos exercícios utilizam redes ou sub-redes, nesse caso é só inverter a máscara de rede que você tem a máscara curinga, até por isso que muita gente a chama de “máscara invertida”.
Por exemplo, para selecionar a rede 192.168.10.0/24 (255.255.255.0) utilizamos a máscara curinga 0.0.0.255, o inverso do /24, ficando “192.168.10.0 0.0.0.255“. Isso serve para quaisquer redes ou sub-redes IP.
Além disso, para facilitar a vida do pessoal de infra de redes quando queremos selecionar todas as redes podemos utilizar o mnemônico “any” e para selecionar um endereço específico podemos utilizar o “host”.
Por exemplo, quero permitir todas as redes: “permit any”. Agora quero apenas o endereço do computador 10.0.0.1: “permit host 10.0.0.1”.
Direção do Tráfego nas Interfaces
A ACL pode ser aplicada a uma interface ou então dentro de outras configurações como seleção de redes, por exemplo, para identificar que redes podem fazer parte do processo do OSPFv2 no comando “network”.
Quando aplicamos uma ACL em uma interface para fazer filtragem de pacotes podemos fazer isso em duas direções: inbound ou outbound.
No Cisco IOS essas direções são indicadas como “in” e “out”.
Para facilitar memorize que o “IN” é o que está entrando na interface, já o “OUT” o tráfego que sai da interface do roteador ou switch.
Veja a figura abaixo para facilitar o entendimento.
Portanto o processo completo é criar a ACL e depois aplicar em uma interface.
Por exemplo, o exercício pede para você bloquear acesso a um servidor que está conectado à rede F0/0 do roteador R1 da figura, onde você aplicaria essa interface? Veja que ele tem três interfaces. Pense um pouco antes de ver a resposta…
Tem duas opções de resolução. Ou aplicamos em ambas as seriais na entrada (IN) ou apenas na saída da LAN (F0/0 – OUT).
Na realidade a segunda opção é a mais correta, pois é um comando apenas e fica mais leve para o roteador analisar a lista em apenas uma interface.
No final do artigo vou indicar três artigos com exemplos de ACLs IP padrão, estendida e temporizada, assim você vai poder analisar casos mais reais e ver em prática o que estudou nesse artigo.
Não esqueça baixar o PDF comandos para criar ACLs IP Padrão e principais portas TCP e UDP para o CCNAX 200-120, CCENT e ICND-2.
Exemplos de Criação de ACL
Agora veja esses conceitos aplicados a exemplos de ACLs na prática lendo três artigos que vou indicar a seguir.
É muito importante que ao ler esses artigos você visualize o que aprendeu aqui sobre tráfego, regras, máscara curinga e direção da ACL nas interfaces, pois assim tenho certeza que o assunto vai clarear as dúvidas que você eventualmente tenha ficado.
Seguem abaixo os artigos indicados com exemplos de criação de ACL:
Se você quer mais ajuda pode escolher tornar-se um Membro Premium DlteC e ter acesso ao curso CCNA CCENT e CCNA Security para aprender ACL definitivamente, além disso sendo Membro Premium você poderá tirar suas dúvidas diretamente comigo ou com um dos nossos tutores, o que você acha da ideia? Clique aqui e saiba mais sobre o plano Premium.
Espero que o artigo tenha sido útil e aguardo seus comentários, dúvidas e sugestões no final dessa página na área de comentários! É só descer a página que está lá embaixo…
Claro que você também pode usar os botões de compartilhamento se achar que o artigo vai ajudar seus amigos.
Compartilhando você pode ajudar seus amigos e nos ajudar a transmitir conhecimento para o máximo de profissionais ou futuros profissionais da área!
Que a força esteja com você e até um próximo artigo!
5 Responses
Parabens pelo artigo, muito bom, me ajudou muito!!
Valeu Moises! Fico feliz por ter ajudado.
Prof Marcelo Nascimento
DlteC do Brasil
Ola, gostaria de uma informação!
Na minha rede tenho um router Cisco na rede 172.16.0.0/16, se comunicando normalmente com a rede 192.168.0.0/24, porem um unico IP, 192.168.0.25, não consigo comunicação, o restante da rede vai normal.
O que poderia fazer pra resolver isso?
Obrigado
Oi José, esse IP é o que? Se for um PC pode ser o firewall do sistema operacional bloqueando, por exemplo, no windows ocorreria isso.
Parabéns!!! Muito bom a didática e explicação!!!
Top!!!