Então, fiquei com essa mesma dúvida e fui pesquisar melhor como o roteador lê a ACL. A lógica é a seguinte:
Nas ACLs padrão ou estendidas do Cisco, tudo que não é permitido explicitamente é automaticamente negado no final. Existe um implicit deny any any que o roteador coloca sozinho, mesmo que a gente não escreva.
Por isso, quando a gente coloca:
deny tcp ...
permit ip any any
o que estamos fazendo é assim:
Primeiro nego exatamente o tráfego que não quero (por exemplo, TCP da rede X para Y).
Depois eu libero todo o resto, porque, se eu não colocar esse permit ip any any, o roteador vai negar todo o restante do tráfego automaticamente.
Ou seja, sem esse permit final, a ACL iria bloquear tudo — não só o TCP que a gente queria negar, mas qualquer outro protocolo, porta ou comunicação, inclusive o que deveria continuar funcionando.
Resumindo:
Negamos o tráfego específico que queremos bloquear.
Permitimos todo o resto para evitar que a ACL “mate” a rede inteira.
Se a ACL terminar sem um permit explícito, o roteador aplica automaticamente um deny all.
Por isso a ordem importa tanto — o roteador lê de cima para baixo, e a primeira regra que bate é a que vale.