Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facilmente
Qual de vocês não teve dificuldade em entender Lista de Controle de Acesso? As famosas ACL´s.
Poucos. E invariavelmente tropeçávamos nos mesmos erros quando fazíamos os testes ou lab´s. Se não
fosse a tal máscara wildcard, era onde aplicar a ACL.
Após ler muito sobre elas, e decidir que não poderia deixar de lado tão importante tópico no exame
CCNA, afinal, aproximadamente 30% das questões seriam ou sobre elas especificamente ou em torno do
assunto mesclado a outros assuntos, quando fui parar no site da Global Knowledge. Por sinal excelente.
Lá, encontrei um artigo entitulado IOS Access Control Lists Made Easy que desmistificou o “bicho-
papão” das ACL´s. O autor do artigo, Kurt Patzer, é instrutor da Global e tem 8 anos de estrada na área. Ele
foi bastante específico, claro e direto quando tratou as ACL´s. No “white-paper”, ele consegui descomplicar
e muito, o que para nós, pobres mortais, estava quase criptografado.
Li o artigo apenas uma vez e foi o necessário para superar mais essa barreira. E espero que seja útil
para vocês como foi para mim.
Aqui é assumido que diferentes leitores terão diferentes níveis de experiência com as Access Control
List (ACL´s). Alguém não terá experiência. Outros terão interesse pelas ACL´s nos ambientes Lab. E ainda
outros terão extensa experiência no mundo real com a implementação das ACL´s. O objetivo deste “white-
paper” é para ser interessante para leitores com qualquer nível de experiência em ACL. O novato em ACL
deverá adquirir um entendimento e apreciação da definição de uma ACL. E felizmente, o expert em ACL
também poderá adquirir um “insight” a mais com este material elucidativo.
O que é ACL ?
Tente definir uma ACL usando somente duas palavras. Você sugeriria “filtro de pacote”?!? Esta é a
resposta mais comum, e por uma boa razão. É intuitiva porque ela realmente pode ser definida com duas
palavras e ela descreve o uso mais comum para as ACLs. O problema com esta definição é que as ACLs
podem ser utilizadas para muitos objetivos que não somente filtro de pacotes. Por exemplo, as ACLs podem
ser utilizadas para definir qual a fila de pacote entrará quando vocês estiverem usando um enfileiramento
personalizado ou prioritário. Nos dois casos, os pacotes não são filtrados.
Eles são simplesmente enviados para frente, para o meio, ou para o final da linha dependendo de um
certo critério de avaliação. Outro exemplo é o uso de ACLs para definir tráfego interessante de um link dial-
on-demand (sob demanda). Quando aplicada desta maneira, a ACL irá definir o tráfego que é importante o
bastante para que o router tire o “telefone do gancho” e pague as taxas pelo seu uso do serviço.
O IOS dos routers suportam muitos tipos de ACLs. Existem ACLS que examinam critérios da
Camada 2, tais como valores endereços MAC e LSAP. Existem ACLs que examinam vários protocolos de
Camada 3, tais como IPX, AppleTalk, DECnet, e Vines. Existem ACLs que examinam critérios Ipv6.
Porém este “white paper” focará naquela mais comum hoje em dia : ACLs que examinam o critério IPv4.
ACLs IP são geralmente quebradas dentro de ACLs IP padrão e extendida. Se ou não uma ACL IP é
padrão ou extendida, ela poderá ser definida tanto pelo número quanto pelo nome. Se você escolher por
número, o intervalo do número é importante. Originalmente, as ACLs IP Padrão são numeradas entre 1 a 99,
enquanto que as ACLs IP Extendidas utilizam números de 100 a 199. Estes intervalos foram expandidos
para também incluir 1300 a 1999 para as ACL IP Padrão e 2000 a 2699 para as ACLs IP Extendidas.
Frequentemente isto é exatamente o que é apropriado para usar. Por exemplo, você pode usar a
instrução “access-class” para referenciar uma ACL para limitar o acesso as linhas VTY. Neste caso, você
está interessado em um único endereço IP de origem.
Você sabe que o endereço IP de destino é do seu próprio roteador, o protocolo é TCP e a porta de
destino é a 23 para o Telnet. (Atualmente, neste exemplo ele poderia também ser TCP porta 22 se você tiver
configurado o suporte SSH). Outro exemplo para uso de uma ACL IP Padrão é quando elas são
referenciadas numa definição de “community string” do protocolo SNMP. Novamente, somente o endereço
IP de origem é de interesse, como nós sabemos que o endereço IP de destino é do nosso próprio router e o
protocolo é o UDP com porta de destino 161 (SNMP).
As ACLs IP Extendidas permite que você examine todos os cabeçalhos da Camada 3 e 4 dos
pacotes IP. Você pode especificar um critério usando tanto o endereço IP de origem quanto o de destino.
Você pode especificar o protocolo IP. Com o TCP e UDP, você pode especificar as portas de origem e de
destino, e com o ICMP você pode especificar o código e tipo ICMP.
Ordem é Importante
Como foi mencionado anteriormente, as entradas ACL são processadas em ordem. Se existirem duas
ou mais entradas com critérios que coincidem com que o está no pacote, ele é permitido ou negado na
primeira entrada de coincidência que é importante. Devido a isto, você deve colocar entradas mais
específicas no topo da ACL. Por exemplo, se você quiser permitir toda a rede 172.16.x.x, mas negar um
único endereço desta rede, como 172.16.10.10, você deverá colocar a entrada deny que é mais específica
antes da entrada permit que é mais genérica. Outro ponto que deve ter cuidado é a existência implícita de
uma instrução “deny tudo mais” no final de cada ACL. O que significa que se não existirem coincidências
das entradas anteriores para cada pacote, então a classificação implícita é negar todos os pacotes. Se desejar,
este deny implícito pode ser cancelado por uma entrada “permit tudo mais”.
Márcia Guimarães
Olá !
Doses homeopáticas de ACLs fazem bem a saúde, então veremos a 2a parte do artigo.
O Cenário
Considere a rede projetada na figura 1. Nós temos 4 engenheiros. Suas estações utilizam os
endereços IP de 172.16.100.4 até 172.16.100.7 Também temos 2 servidores de engenharia.Eles utilizam os
endereços IP 172.16.101.163 até 172.16.101.179. Os engenheiros utilizam três aplicações TCP entre suas
estações e os servidores: telnet, FTP e X Windows. O objetivo é escrever as entradas ACL que coincidam
com estas aplicações das estações da engenharia para os servidores de engenharia. Nós queremos ser
cuidadosos para coincidir exatamente este tráfego, nem mais nem menos.
Quantas entradas seriam necessárias para este cenário ? O método geral para determinar isto é
multiplicar o número de endereços de origem específicos pelo número total de endereços de destino e
novamente pelo número total de portas de destino. No nosso caso qual seria ? Nós temos 4 endereços IP de
origem e 2 endereços IP de destino, porém quantas portas de destino TCP ? Temos 3 aplicações, porém
algumas utilizam múltiplas portas. O FTP mesmo utiliza a porta 21 como canal de controle, e a porta 20
como canal de dados ( nota : isto é diferente se você utilizar o modo passivo FTP, porém vamos nós ater ao
modo padrão FTP para o nosso exemplo). O X Windows utiliza as portas 6000 e 6001 (novamente, isto
poderia mudar diferentes instalações do X Windows, porém vamos nos ater ao uso das portas 6000 e 6001).
Isso significa que podemos exasutivamente listar todas as possíveis combinações usando a seguinte
fórmula :
Além do fato de sermos preguiçosos e não podermos digitar 40 entradas diferentes, existem questões
de performance em risco. O router tem que seqüencialmente processar cada entrada da ACL até encontrar
uma entrada coincidente. A maioria das entradas na ACL significa, na média, mais processamento por
pacote. O pior caso seria se o engenheiro que geralmente mais trabalhasse, utilizasse um protocolo em
particular no servidor e a entrada que coincidisse com este tráfego fosse a de número 40 na ACL, ou seja, a
última na lista !! Nesse caso, 39 entradas seriam processadas antes que uma coincidisse com cada pacote
daquele engenheiro “workaholic”.
Assim, usando sua experiência com ACLs, como você reduziria o número de entradas necessárias
para esta especificação ? Aqueles de vocês que são mais velhos devem lembrar de um game chamado
“Name That Tune”. Aqui, vamos jogar o “Name That ACL”, onde o objetivo é especificar uma ACL com
menor número de linhas. Antes de continuar a ler, pense sobre quantas linhas você poderia reduzir a
definição da ACL. Pensou ? Agora, guarde sua resposta…
Mostrarei a você como especificar exatamente o tráfego desejado, nem mais, nem menos, em apenas
3 linhas. Para fazer isto, teremos de agrupar os endereços IP de origem, os endereços IP de destino, e as
portas TCP. Nós utilizaremos o conceito de máscaras coringa ou wildcard para agrupar todos os quatro
engenheiros dentro de um único grupo. Nós também utilizaremos a máscara wildcard para agrupar todos os
servidores de engenharia em um único grupo. E finalmente, utilizaremos intervalos de portas para agrupar
as portas TCP dentro de três grupos separados. Com este agrupamento, ele ficará com 1 x 1 x 3 = 3 entradas
para uma especificação total do tráfego desejado.
Sds.
Márcia Guimarães
O conceito de máscara wildcard é muito similar aqueles de máscara de subrede, com uma pequena
mas muito significante diferença na lógica. Uma máscara de subrede é uma sequência de binário 1s e 0s que
são utilizados para determinar qual parte de um endereço IP é associado com o endereço de rede. Com uma
máscara de subrede, se um bit em particular em um endereço IP é parte de um endereço de rede, o
correspondente bit na máscara de subrede é setado para 1. Uma máscara wildcard é muito similar, porém a
lógica é inversa. Um binário 1 na máscara wildcard significa “não se preocupe”. É o digito binário 0 na
máscara wildcard que distingue os bits importantes.
Vamos iniciar com um exemplo. A máscara de subrede mais comumente em uso hoje em dia é
255.255.255.0. Os primeiros 3 octetos, quando convertidos para binário, contém 8 binários 1´s. Toda a
máscara tem 24 binários 1´s, seguidos de 8 binários 0´s. Isto é frequentemente referido como “máscara de
24 bits” ou “/24”, que é utilizada como uma notação abreviada.
O que significa é que cada bit de cada um dos 3 octetos no endereço é parte do endereço de rede. O
último octeto é definido por 8 binários 0´s, de forma que nenhum bit no último octeto são parte do endereço
de rede. Eles são todos utilizados para especificar um host naquela rede. A correspondente máscara
wildcard dos 24 bits seria 0.0.0.255. Com esta máscara wildcard, você se preocupa somente com cada bit
dos 3 primeiros octetos, porém nenhum dos bits no último octeto. Assim, a combinação de endereço e a
máscara wildcard 172.16.100.0 0.0.0.255 coincide com todos os endereços que iniciam com 172.16.100, e
não se importa com o valor do último octeto. Aqui está outro modo de pensar sobre isso :
172.16.100.0 0.0.0.255 especifica que endereço IP deve parecer exatamente como 172.16.100.0 até
os primeiros 24 bits, e porém não se preocupe com o que os últimos 8 bits são !
Vamos olhar para outro exemplo comum de máscara de subrede : 255.255.255.252. A maioria de
vocês podem reconhecer isto tipo de máscara que é utilizada em link WAN ponto-a-ponto.
Em binário, esta máscara tem 30 digitos 1´s seguidos de 2 digitos 0´s. Portanto ela poderia ser
chamada de máscara de subrede de 30 bits e poderia ser escrita com a abreviação /30. Esta máscara de
subrede é utilizada para conservar espaço de endereço IP. Em um link ponto-a-ponto, existem somente 2
endereços IP ativos. Com a máscara de subrede 255.255.255.0, existiriam 254 endereços disponíveis. Se
somente 2 endereços são utilizados, a vasta maioria de espaço de endereços IP seria disperdiçada. Com essa
máscara de subrede 255.255.255.252, existem somente dois endereços IP disponíveis, o que é o encaixe
perfeito para uma rede ponto-a-ponto. Observe que a máscara atualmente especifica um grupo de 4
endereços, porém o primeiro endereço é o próprio endereço da rede, e o último é de broadcast. Portanto,
existem dois endereços à direita disponíveis.
A máscara wildcard equivalente da máscara de subrede é 30 dígitos 0´s seguidos de 2 dígitos 1´s, ou
0.0.0.3. Como você poder ver no exemplo de máscara de subrede, se nós juntarmos o endereço base
172.16.100.4 com uma máscara de 30-bits (por exemplo, 172.16.100.4 0.0.0.3), ele coincidirá exatamente
com os 4 endereços: 172.16.100.4 até 172.16.100.7. Bastante conveniente, porque com isto irá coincidir
com os endereços IP dos engenheiros no nosso cenário. Não fique confuso com o fato de que, com a
máscara de subrede, você perde o primeiro e último endereços IP. Com as ACLs e máscara wildcard, nós
não definiremos redes (com endereços de rede e endereço de broadcast), nós apenas queremos especificar
o intervalo de endereços IP.
Além de inverter o significado no valor dos bits, as máscaras wildcard diferem das máscaras de
subrede naquilo dos bits “não se preocupe” que podem ser misturados por toda a máscara wildcard. Isto é,
eles não tem necessariamente de estar na sequência de 0´s seguidos pela sequência de 1´s. Devido a isto,
você pode utilizar padrões que existem no meio do endereço IP, ao invés de apenas no final. Nós levaremos
vantagem desse truque para definir nossos 2 servidores de engenharia como um endereço base com uma
máscara wildcard.
A figura 3 descreve os últimos octetos dos endereços IP dos servidores da engenharia. Observe que
o par de endereços IP não tem como aparecer que não tem nada em comum quando você olha para eles no
formato decimal, porém, quando você converte para binário o últmo octeto, você poderá ver que eles variam
somente em um único bit. O 4o. bit. O que nós especificaremos para os servidores da engenharia é
172.16.101.163 0.0.0.16. Isto significa que os endereços que coincidem tem exatamente como
172.16.101.163, porém não se preocupam sobre o valor do 4o. octeto. Além do próprio 172.16.101.163,
existe um único endereço IP que parece exatamente como 172.16.101.163, exceto por um bit. Esse endereço
é 172.16.101.179.
Usar esta máscara wildcard realmente nos deixa com menos entradas em nossa ACL, porém essa não
é a principal razão que apresentei este exemplo. A principal razão é que quero que você entenda totalmente
o que uma máscara wildcard faz. Ela simplesmente especifica quais bits devem estar coincidindo no
endereço IP para qual é aplicada, se ela é relativamente direta ou uma máscara mais complexa. Usar
máscaras wildcard corretamente pode melhor a eficiência de suas ACLs, porém existem alguns “lados
obscuros” também. Primeiro, você poderia cometer um erro em sua aritmética binária. Para reduzir este
potencial, entenda totalemente as máscara wildcard, e pratique a aritmética binária. O segund potencial
problema é, embora você possa ser capaz de ler uma ACL com sua wildcard “abreviada”, outros poderiam
não ser capazes de entender o que você fez. Para ajudar neste item, eu recomendo muito que você use o
comando “remark” da ACL, que discutiremos mais tarde.
.Sds.
Márcia Guimarães
Muito mais simples do que usar máscaras wildcad para agrupar endereços IP é usar intervalos de
porta para definir grupos de portas TCP e UDP. Quando especificando portas TCP e UDP, você deve
especificar um operador em particular. Se você quer comparar uma única porta, você deverá usar o operador
eq. Em nosso cenário exemplo, especificaremos eq 23 para coincidir com o tráfego telnet. Se você quer
especificar um intervalo de portas TCP e UDP, você deverá usar o operador range. Em nosso exemplo, nós
utilizaremos um range 20 21 para especificar o FTP e o range 6000 6001 para especificar o X Windows.
Elas não estão em grandes intervalos, porém elas estão apesar de tudo. Outros operadores que
também poderiam ser usados para especificar as portas TCP e UDP que incluem o neq para “not equal to”
ou “não igual”, gt para “greather than” ou “maior que”, e lt para “less than” ou “menor que”.
Operador Significado
eq igual
neq não igual
gt maior que
lt menor que
range faixa exclusiva
Sintaxe da ACL
Nós escreveremos essas 3 ACLs na próxima seção. Antes de podermos fazer isso, de qualquer
forma, precisamos ainda entender a sintaxe utilzada na definição de uma ACL. Novamente, existem
diferentes tipos de ACLs, e todas elas tem uma sintaxe diferente. Neste exemplo, nós usaremos a sintaxe da
ACL IP Numerada e Extendida. Existem muitas opções para ACLs IP Extendidas, e estas opções se alteram
dependendo do protocolo que é referenciado. Nâo fique preocupado com cada opção neste exemplo. A
sintaxe que é importante para nós é a seguinte:
Em bom Português : você utiliza o comando access-list no modo de configuração global. A primeira
coisa que você deve especificar é o número da ACL. Desde que seja uma ACL IP Extendida, o número deve
estar entre 100 a 199. Então, você especifica a classificação para esta entrada em particular (permit ou
deny). A seguir você especifica o protocolo, que no caso é o tcp. Especificando o tcp também nos permite
especificar as portas de origem e de destino. Então você especifica os endereços IP de origem. Este pode ser
um único endereço precedido da palavra host como em, host 10.10.10.10. Ele pode ser um único endereço
onde a máscara de wildcard especificará que todo bit do endereço é importante, como em 10.10.10.10
0.0.0.0. Em nosso caso ele será o endereço base e uma máscara de subrede que lista poucos bits como bits
A aplicação cliente Telnet vem do Sistema Operacional na estação de trabalho e requisita a porta de
origem, e é o SO que escolhe qual porta utilizar (acima de 1024, inclusive). A única coisa que nós podemos
ter certeza é que que a porta será maior que 1023. Algumas aplicações podem reservar portas de origem do
SO, e nesses casos nós podemos ser ainda mais restritivos em nosso exemplo. Assim, o próximo item que
você deve especificar é o endereço IP de destino. As mesmas opções estaram disponíveis como foi para o
endereço IP de origem. Novamente, nós utilizaremos o endereço IP base e a máscara wildcard que vai
espevificar quais são os bist “não se preocupe”. E finalmente, finalizamos ao especificar a porta TCP de
destino. No nosso caso, utilizaremos o operador eq ou range, dependendo da entrada.
Finalizando o Cenário
Assim, agora que você entendeu a sintaxe básica, é hora de escrever a ACL. Usando os construtores
já descritos acima, você deverá digitar essas três linhas como se segue:
Interessante é que se você exibir o seu “show run” das suas ACLs, o router não exibirá exatamente o
que você digitou. O “eq 23″ será transformado em “eq telnet” e o “range 20 21″ será transformado em
“range ftp ftp-data“. Você também poderia entrá-la de outro modo, especificando os nomes das portas bem-
conhecidas (well-known). Enquanto for conveniente, poder ser uma dica.
Pergunta : No que “eq 80” será transformado ? hum ? A intuição mais comum seria dizer “eq http”,
porém ao invés disso é “eq www”. (rs)
Existem ainda pequenas coisas que você deve entender. É provável que estas entradas não sejam a
ACL inteira. Se a nossa ACL é exatamente aquelas 3 entradas, então existe uma outra entrada implícita no
final da ACL que é “deny ip any any” e somente estas 3 entradas podem ser comparadas.
Também, simplesmente definir a ACL não tem efeito algum sobre o comportamento do router. Depois que
ela é definida, ela deve ser aplicada em algum lugar. Vc pode assumir que nós estivemos tentando
configurar um filtro de pacote. Porém poderíamos estar tentando especificar este tráfego como mais
importante e daí por diante seria permitido dentro de uma fila de alta-prioridade. Se a topologia for mais
complexa, poderemos estar especificando este tráfego como tráfego que queremos encriptar em um tunel
IPSec, ou tráfego para qual nós queremos especificar uma rota baseada em uma regra de segurança.
Também, entenda que a direção é importante. Vamos assumir que nós verdadeiramente queremos
configurar um filtro de pacote, e portanto utilizaremos o comando “access-group” em uma interface. Volte
a figura 1. Nossas duas escolhas são aplicar esta ACL de entrada ou INBOUND na interface ethernet 0 ou
aplica-lá como saída ou OUTBOUND na interface ethernet 1. A sequências de comandos para a primeira
opção (INBOUND) deverá ser :
Router(config)#interface ethernet 0
Router(config-if)#ip access-group 101 in
Listas de Controle de Acesso criadas Facilmente
Artigo criado por Márcia Guimarães
12
Referência: Kurt Patzer
Você Pode Pensar em Enganar !
Eu configuro uma instrução para permitir exatamente o tráfego desejado, nada mais, nada menos.
Efetuamos isso com três entradas na ACL. Existe uma opção digna de se considerar que poderia reduzir o
número de entradas para somente duas. O que utiliza a porta 22 TCP ? Se nós especificarmos um único
intervalo de 20 a 23, deveria ser a única outra porta de destino que coincidisse com as instruções permit.
Neste caso, ela poderia ser uma opção a ser considerada. A porta 22 TCP é usada pelo protocolo SSH
(Secure Shell). O SSH foi originalmente desenvolvido para tratar casos de autenticação em texto puro e
dados como texto no telnet. Isto é, o SSH é mais uma alternativa segura ao telnet. O SSH foi aumentado
para incluir o SCP (Secure Copy). SCP é mais uma alternativa segura ao FTP. Administradores de Firewall
genéricamente odeiam a idéia de permitir Telnet e FTP, porque eles são particularmente protocolos
inseguros. Meu conselho é, antes de compor suas ACLs, você deve estabelecer sua política de segurança.
Então escreva sua ACL para coincidir exatamente com a política de segurança de sua empresa. Não pegue
atalhos só porque eles são pequenos em relação a política de segurança. Porém políticas de segurança
devem estar em documentos que podem ser atualizados conforme o tempo passa. Valeria a pena considerar
a adição do SSH à política da segurança. Melhor até deveria ser adicionar uma planta da migração para
todos os sistemas dependentes do telnet/FTP sobre o uso do SSH/SCP. Uma vez que todos os sistemas
foram migrados, atualize a política da segurança e as ACLs para permitir somente SSH/SCP e não telnet ou
FTP.
Até este ponto, você deve ter uma boa base sobre os componentes básicos das ACLs IP. Para treinar
ACLs, você pode fazer alguns exames práticos com aritmética binária conseguir uma boa maneira de
calcular máscaras de wildcard, mas se você compreendeu a função da máscara wildcard neste momento,
você está na forma boa. Há muitas outras opções que podem ser usadas em ACLs IP Extendida. As
seguintes seções, quando longe de detalhado, discutirem algumas das opções o mais geralmente usadas. Nas
seções seguintes, discutiremos algumas das opções mais geralmente usadas.
Usando Comentários
ACLs podem ser longas e complexas. E pode ser uma luta lembrar porque você colocou um certo
conjunto de entradas na ACL seis meses depois. Pior ainda, imagine herdar uma ACL de 500 linhas de um
administrador anterior. É realmente um grande esforço entender cada uma das linhas da ACL herdada. Isto é
porque uso dos comentários é tão importante.
Infelizmente, eles não são utilizados quanto deveriam ser. O comando remark foi introduzido na
versão do IOS 12.0(2)T. Muitos administradores aprendem a sintaxe da ACL antes que elas iniciam usando
as versões do IOS que suportem o comando “remark“. Isto provávelmente seja porque elas não são usadas
extensivamente. Porém o conceito é muito simples.
Usando nosso exemplo de três linhas, com algumas máscaras wildcard, nós devemos preceder as três
linhas com um comentário, como se segue :
access-list 101 remark As próximas 3 linhas combinam 172.16.100.4-7 e 172.16.101.163 & 179
access-list 101 permit tcp 172.16.100.4 0.0.0.3 172.16.101.163 0.0.0.16 eq 23
access-list 101 permit tcp 172.16.100.4 0.0.0.3 172.16.101.163 0.0.0.16 range 20 21
access-list 101 permit tcp 172.16.100.4 0.0.0.3 172.16.101.163 0.0.0.16 range 6000 6001
Olá.
O refinamento que Kurt faz aqui nos fornece a maneira correta de implementar uma ACL.
Vamos lá….
Eu disse a você anteriormente que reduzir o número de entradas em uma ACL, na média, reduz o
processamento overhead exigido por aquela ACL. Um preço que deverá ser pago, entretanto, é que a ACL
pode tornar-se difícil de ler. Outra solução poderia ser o uso de “Turbo ACLs”, também conhecidas como
ACLs Compiladas. Quando você compila uma ACL, ela se transforma em tabelas lookup que podem ser
processadas muito mais eficientemente do que pelo método linear padrão, porém esta característica está
somente disponível em routers de alta capacidade (como 7200,7500 e a série 12000). Compilar ACLs
também exigem uma RAM mais significante, maior, do que as não-compiladas. Para ativar esta
característica em um router compatível, emita o comando “access-list compiled” no modo de configuração
global. Isto compilará todas as ACLs que são maiores do que as três entradas. Qualquer modificação para
uma ACL resultará em imediata recompilação daquela ACL. Para visualizar a memória utilizada pela sua
turbo ACL, emita o comando “show access-list compiled” no modo EXEC.
O fato de que o TCP é um protocolo orientado a conexão, onde conexões são negociadas com um
triplo handshake(handshake three-way), permiti-nos obter alguma eficiência no processamento da ACL. O
handshake triplo especifica que o primeiro pacote em uma conexão não deverá ter um bit ACK setado; ele
deverá somente ter o bit SYN setado. O segundo pacote deverá ter tanto o bit SYN, quanto o ACK. Devido
a isto, você nunca deverá ver o bit ACK setado no pacote a menos que um pacote anterior com um único bit
SYN setado já tenha sido permitido por alguma entrada na ACL. A palavra-chave “established” especifica
somente permitir pacotes que estejam associados com uma conexão TCP estabelecida, isto é, pacotes além
do pacote inicial o qual somente tem o bit SYN setado. Geralmente, isto é utilizado com a palavra-chave
“any” com ambos endereços de origem e destino, e como primeira linha na ACL. A teoria é que se o
primeiro pacote do handshake triplo (SYN, SYN+ACK, ACK) fosse permitido por uma entrada posterior na
ACL, não desperdiçaria tempo processando cada entrada na ACL para chegar lá; encaminharia o pacote
baseado na primeira entrada. Em nosso exemplo, a primeira linha da ACL leria :
Agora você deve entender que usar a palavra-chave “established” faz com que a ACL seja
processada com grande eficiência, porém ela diminue sua margem de segurança. Se você está usando esta
entrada em um filtro de pacote, é possível para um atacante mascarar o pacote com um bit ACK setado,
embora ele não sido parte de uma conexão TCP existente.
Como discutido anteriormente, você sabe que deve colocar as entradas mais específicas antes das
entradas mais gerais ou generalizadas dentro da ACL. Isto tem de ser feito para assegurar um
comportamento apropriado. Porém se uma entrada que é utilizada mais frequentemente, poderia ser movida
para o alto da ACL sem modificar o comportamento da mesma, com isso sua performance aumentaria.
Como você saberia quais as entradas estão sendo mais utilizadas ?? Usando o comando “show access-list“.
O número de vezes que cada entrada na ACL fosse utilizada seria exibido. O exemplo abaixo foi
conseguido, porém ele mostra nosso exemplo de ACL e a entrada FTP sendo mais utilizada que a entrada
telnet. Se este comportamento for consistente, ela deverá ser digna de alteração para ordernar as entradas.
Você pode resetar os contadores da ACL com o comando “clear access-list counters”. Vc deverá
especificar um único número ou nome de ACL para apagar os contadores daquela lista em particular. Se
você não especificar um nome ou um número, os contadores irão resetar todas as ACLs . Fique atento.
Observe, contadores de ACL podem ser utilizados para um método de contagem rápida e “suja”. Você deve
estar curioso para saber se o jogo Doom está sendo utilizado em sua rede ?? Permita o tráfego TCP
destinado a porta 666. No dia seguinte, exiba sua ACL. Se você ver qualquer contagem daquela entrada
(porta 666 TCP), então você tem uma boa idéia de que alguém está usando a rede para jogar Doom. Mas
quem será ??? Para achar quem está jogando Doom, use o logging da ACL.
Você pode auditar as entradas coincidentes da ACL ao adicionar a palavra-chave “log” ou “log-
input” no final da entrada. Isto fará que as mensagens de syslog sejam geradas para esta contagem. A
palavra-chave “log” causará uma mensagem de syslog similar a seguinte:
Observe que ela lista o número da ACL, a ação, o protocolo, os endereços IP de origem e destino, e
o número de porta TCP/UDP, ou neste caso o tipo ou código ICMP. Vc obterá a mensagem de syslog para o
primeiro pacote de uma única combinação de protocolo, os endereços IP de origem e destino, e o número de
porta TCP/UDP ou o tipo ou código ICMP. Você então conseguirá resumos de 5 em 5 minutos por um
conjunto único de critérios que lista quantas matches ocorreram no intervalo de 5 minutos.
Fazer o logging de violações da ACL é válido para redes forenses. Por exemplo, você poderia
aplicar uma ACL para usar linhas vty usando o comando access-class. Isto limitaria os endereços IP que
são permitidos fazer telnet (ou SSH) para seu router. Se a última entrada na ACL é um deny any log
explícito, então todas as tentativas inválidas de fazer telnet para seu router serão enviadas para o log e
podem ser objeto de uma investigação posterior numa inspeção dos logs.
.Sds.
Márcia Guimarães.
Bem, chegamos ao fim meu amigos. Espero que tenham gostado dos artigos e que seja útil no dia-a-
dia.
O assunto ACL pode ser mais explorado do que isso. Existem as listas de acesso reflexivas que são
um poucos mais complicadas do que as listas de acesso comuns. Elas se diferem das últimas pela
característica de ANINHAMENTO. Quem é programador aqui sabe o que é aninhamento. É uma instrução
que será executada somente sobre certa condição, que pode ser verdadeira ou falsa. Resumindo : a ACL da
resposta é criada dinamicamente quando a ACL da solicitação original é correspondida. Mas isso é assunto
para oooutro artigo.
Sds.
Márcia Guimarães
Se você está utilizando métodos in-band de conexão para um router remoto (como telnet ou SSH),
você tem que ser cuidadoso com as ACLs que edita para que você não bloqueie sua conexão atual. A razão
mais comum para que isso aconteça é que quando você emite o comando “no access-list 101“, a entrada da
ACL é removida (mesmo se você especificar precisamente uma única linha, ela ainda assim remove toda a
ACL). Neste ponto, o router tratará a ACL 101 com um “permit any“. Porém, assim que você adicione a
primeira linha na nova ACL 101, o estado se altera de “permit any” para um “negue tudo exceto para o que
é permitido pela primeira entrada”. Se sua sessão telnet ou SSH está por muito tempo no ar, você perderá
sua conexão !
Um truque que é um pouco de divertido, e não é configurável em todos os ambientes, é usar uma
variante do comando “reload“. Se você especificar “reload in 5“, ele instruirá o router para aguardar por 5
minutos e então recarregar. Assuma que você entrou o comando no router e então iniciou a edição de suas
ACLs. Se você acidentalmente travou a si mesmo, o router em breve recarregará. Ele reverterá para sua
antiga configuração startup que especifica as ACLs originais. Você pode então reconectar ao router e tentar
novamente. Este truque não é uma opção para uma organização que demanda um uptime 24 x 7. Porém se
sua organização tem algumas filiais onde não existam funcionários após as 18:00 hs e você administra as
ACLs quando todos da equipe remota já foi embora, esta poderia ser uma opção para você. Agora lembre-se
de usar o comando “reload cancel” se sua edição funcionar, ou senão seu router ainda ficará recarregando e
sua edição será perdida mais uma vez.
Outra idéia é não editar as ACLs on-line, porém, ao invés disso, editar usando um editor de texto ou
o Word numa estação. Depois de editar, você copia as ACLs para o router usando o TFTP. Uma vantagem
disso é que o router não implementaria a nova ACL até que todas as entradas tenham sido copiadas via
TFTP, assim você está muito menos propenso a travar a si mesmo. A principal vantagem, entretanto, é que
isso deixa as coisas mais fáceis para você adicionar e deletar linhas do meio de uma ACL. ACLs Nomeadas
permitem a habilidade de remover uma linha do meio de uma ACL, porém é mais comum você precisar
adicionar uma linha no meio da ACL. E, como discutimos anteriormente, você pode querer reordenar a
Para recompensar a perseverança exigida para ler todo este white paper, finalizarei com uma dica
que fará com que você ganhe algumas apostas com seus amigos que também admininistram um IOS Cisco.
É bastante conhecimento comum de que nomear ACLs IP oferecem a vantagem de ser capaz de remover as
linhas do meio daquela ACL IP Nomeada. Isto porque se você entrar o comando “no command” e
precisamente especificar uma única entrada na ACL numerada, toda ACL será finalizada e removida. Você
pode apostar com seus amigos que acreditam nisto que você removerá a linha do meio de uma ACL
Numerada tão fácilmente quanto numa ACL Nomeada. A dica é tratar a ACL Numerada como se ela fosse
uma ACL Nomeada que apenas tem um nome que utiliza somente caracteres numéricos. A seguir é
mostrado como remover a entrada FTP de uma ACL IP Numerada que nós utilizamos em nosso exemplo:
router#config t
Enter configuration commands, one per line. End with CNTL/Z.
router(config)#ip access-list extended 101
router(config-ext-nacl)#no permit tcp 172.16.100.4 0.0.0.3 172.16.101.163 0.0.0.16 range ftp-data
ftp
router(config-ext-nacl)#end
01:27:48: %SYS-5-CONFIG_I: Configured from console by console
Uma ACL é um “classificador de pacote” que pode ser aplicado de muitas maneiras diferentes.
ACLs IP podem ser numeradas e nomeadas, e elas podem ser padrão (standard) ou extendida
(extended)
Podemos usar máscaras wildcard para agrupar endereços IP. Enquanto que a matemática binária
possa ser complexa, o propósito é muito simples. Máscaras wildcard específica quais bits do
endereço IP são importante para a classificação.
Podemos usar um operador de intervalo para a grupar sequencialmente portas TCP ou UDP juntas.
A otimização da performance da ACL é importante, entenda-se como otimização da leitura da ACL.
Remarks ou comentários é uma ferrramenta disponível para melhora a leitura da ACL.
Turbo ACLs são uma opção poderosa disponível em routers Cisco de alta capacidade.
A palavra-chave established pode melhorar muito o processamento eficiente da ACL e pode
potencialmente utilizar esta informação para otimizar uma entrada colocada dentro da ACL.
Você pode rever os hit counts de cada entrada numa ACL e pode potencialmente usar esta
informação para otimizar uma entrada dentro da ACL.
Você pode capturar via log da ACL as violações para uso da rede forense.
Quando usar comunicação in-band para o router, seja cuidadoso que sua ACL não atualiza numa
queda de conexão.
Contrário a “compreensão comum”, é possível remover uma entrada do meio de uma ACL
numerada.