É 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, a máscara de sub-rede 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 endereco 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 corresponte a sub-rede ( 16 até 31 ), o quarto octeto corresponde ao host.
O administrador deseja usar as máscaras wildcard para bits IP para verificar as sub-redes 172.30.16.0 até 172.30.31.0. Isso é feito da seguinte forma:
- Inicialmente a máscara verifica os dois primeiros octetos 172.30, para isso usa 0s nos bits do wildcard;
- Como não existe interesse em filtar a parte host o quarto octeto será ignorado, para isso os bits devem ser setados para 1;
- No terceiro octeto, onde está localizada a sub-rede, a máscara irá verificar a posição correspondente ao binário 16, ou seja este bit deve estar com 0 bem como os bits superiores, já os bits abaixo do binário 16 devem ser ignorados, para que isso ocorra devem ser setados com 1s, assim temos:
Figura 12 - exemplo de wildcard para IP 172.30.16.0 a 172.30.31.0
O resultado final é:
Para o endereço: 172.30.16.0
Com a máscara: 0.0.15.255
Serão verificadas as sub-redes: 172.30.16.0 a 172.30.31.0
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 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 os hosts 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, não falei isso no início por que sempre uso a lógica militar "se pode complicar...para que simplificar" ...

.
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 - mascara de rede = 255 - 255 = 0
segundo octeto = 255 - mascara de rede = 255 - 255 = 0
terceiro octeto = 255 - mascara de rede = 255 - 224 = 31
quarto octeto = 255 - mascara 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.
Criando Listas de Acesso
Como dito anteriormente neste artigo tratamos das listas standard e extended, desta forma vamos passar para a sintaxe deste tipo de listas.
STANDARD
Figura 13 - Sintaxe de uma lista de acesso standard
Lembre-se que para listas de controle de acesso standard a faixa de numeração utilizada inicia-se em 1 e vai até 99.
A partir do modelo apresentado na figura-15, vamos montar alguns exemplos de lista de controle de acesso:
Exemplo 1: permitir somente a entrada de pacotes com origem na rede 172.16.0.0:
access-list 1 permit 172.16.0.0 0.0.255
Exemplo 2: bloquear um hosts específico com origem na rede 172.16.0.0:
access-list 1 deny 172.16.1.30 255.255.255
Exemplo 3: bloquear uma determinada sub-rede :
access-list 1 deny 172.16.1.0 0.0.0.255
EXTENDED
Figura 14 - Sintaxe de uma lista de acesso extended
Para as listas de controle de acesso extended 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:
- IP;
- TCP;
- UDP;
- ICMP;
- GRE;
- IGRP;
Os operadores são:
- lt (less than) - menor que
- gt (greater than) - maior que
- eq (equal) - igual
- neq (not equal) - não igual
Exemplo 1: bloquear FTP para a interface ETH0:
access-list 101 deny tcp 172.16.1.0 0.0.0.255 192.168.0.0 0.0.255.255 eq 21 access-list 101 deny tcp 172.16.1.0 0.0.0.255 192.168.0.0 0.0.255.255 eq 20 Exemplo 2: bloquear tentativas de telnet para fora da rede 192.168.1.0 e permite os demais tráfegos:
access-list 101 deny tcp 192.168.1.0 0.0.0.255 any eq 23 access-list 101 permit ip any any Implementando as Listas de Acesso
Modo de Configuração Para implementar uma lista de controle de acesso devemos:
- Entrar em modo de configuração:
absoluta# configure
absoluta(config)#
- Remover a lista de controle de acesso vigente:
absoluta(config)# no access-list numero da lista
- Aplicar a lista com as novras regras:
absoluta(config)# access-list numero da lista
absoluta(config)# access-list numero da lista
absoluta(config)# access-list numero da lista
- Selecionar uma interface para aplicar a lista de controle de acesso:
absoluta(config)# interface ethernet 0
- 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}
- Para sair do modo de configuração digite: exit ou end ou CTRL-Z.
- Gravar a nova configuração na NVRAM:
absoluta(config)# write mem
Performance
Geralmente a performance do roteador é uma das principais preocupações dos administradores de rede quando se fala em implementação de listas de controle de acesso em roteadores. sabemos que as regras da lista de controle de acesso são analisadas seqüencialmente, ou seja, regra-1, regra-2, regra-3 e assim sucessivamente até que seja encontrada uma regra, que coincida com o pacote analisado ou encontrar a ú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:
- Mensurar os recursos do roteador (memória, processador, outros);
- Avaliar os serviços habilitados no roteador (criptografia, outros);
- Entender o tráfego da rede;
- Mensurar o volume de pacotes;
- Classificar o volume de tráfego por servidor, protocolo e sentido do tráfego;
- 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 é:
- Sempre que possível aplicar as listas de controle de acesso no sentido de entrada (in), pois desta forma os pacotes serão descartados antes de serem roteados para uma das interfaces de saída, consequentemente minimizando o processamento de roteamento de pacotes;
- Implementar inicialmente as regras que contemplam o maior volume de transações da sua rede, agrupada por servidor/serviços;
- Como a pilha IP inclui ICMP,TCP e UDP. Sempre insira primeiro as regras mais específicas, para depois colocar as mais genêricas;
- Após a implementação da lista por grupo de servidor/serviço insira uma regra que bloqueia todos os demais pacotes do grupo, isso evita que o pacote passe pelo crivo de outros grupos ao qual não pertence;