Posts com a tag: ACL

Editor e Simulador de access-list

Por , 04/02/2010 10:22

Para quem dificuldade em criar access-lists ou apenas para conferir o resultado da ACL antes de aplicá-la, uma boa opção é o Cisco ACL Editor and Simulator (que não é desenvolvido pela Cisco). Com este programa inserimos as informações e ele cria a ACL.

ACL Editor and Simulator

Além de criar, também é possível verificar o que acontecerá com o tráfego que passar pela lista de acesso. Com a access-list já criada, clique no ícone com a engrenagem para iniciar a simulação. Especifique o tráfego, indicando se é TCP, UDP, o IP de origem e destino, bem como as portas e pronto.

Esta funcionalidade lembra o Packet Tracer, que temos no ASDM (ASA/PIX), e que talvez um dia seja integrado no IOS.

ACL Editor and Simulator

O programa é pago, mas conta com uma demo de 30 dias para testá-lo.

Para fazer o download do Cisco ACL Editor and Simulator visite a página do desenvolvedor.

Até a próxima.

Access-list dinâmica (Lock-and-Key)

Por , 26/08/2009 05:53

Access-lists dinâmicas são ferramentas interessantes, que podem, por exemplo, nos permitir identificar o usuário antes de dar acesso a um determinado recurso (Lock-and-key).

Com o Lock-and-key configurado, o usuário pode ter acesso a uma host ou rede que era bloqueado inicialmente. Para isso o usuário deve primeiro se autenticar no roteador, via Telnet. Após autenticado a ACL dinâmica é inserida na interface, permitindo o tráfego. Após o tempo limite configurado a ACL é removida, voltando ao cenário inicial (tráfego negado).

Exemplo: Neste cenário o roteador BrainRT01 não permite nenhum tipo de tráfego, além do Telnet para sua Loopback. Apenas após o usuário do Host1 se autenticar ele poderá ter acesso ao Server1.

Topologia - Lock and Key

! Crie um usuário (ou quantos desejar), para autenticação local
username brainwork password cisco123
!
! Crie uma Loopback que será usada para autenticação. Também é possível usar a interface física.
interface Loopback0
ip address 172.16.1.1 255.255.255.255
!
! A primeira linha na ACL 101 permite apenas o Telnet para autenticação (loopback)
access-list 101 permit tcp 1.1.1.0 0.0.0.255 host 172.16.1.1 eq telnet
! Entrada dinâmica na ACL 101, que permitirá acesso total, após autenticação
! Neste exemplo ela ficará ativa 30 minutos após a autenticação, com ou sem tráfego
access-list 101 dynamic testlist timeout 30 permit ip any any
! Aplique a access-list 101 na interface por onde o usuário se conectará
interface FastEthernet0/1
ip address 1.1.1.1 255.255.255.0
ip access-group 101 in
!
line vty 0 4
password cisco
! Indique que a autenticação será local
login local
! Após se autenticar será encerrado o Telnet, e se não tiver atividade a sessão é finalizada, após 5 minutos
autocommand  access-enable host timeout 5

Após configurar o roteador o usuário do Host1 deve dar um Telnet no IP 172.16.1.1, e informar o usuário e senha configurados.

Lock-and-key

Imediatamente após a conexão o usuário é desconectado, afinal ele não deve ter acesso ao equipamento propriamente. Alias CUIDADO:  Após habilitar o comando “autocommand  access-enable host timeout 5” na line, o acesso ao equipamento deverá ser feito pela console!!!

Com o usuário autenticado, a ACL dinâmica é adicionada e o usuário passará a ter acesso, como desejado.

Access-list antes da autenticação:
BrainRT01#sh access-lists
Extended IP access list 101
10 permit tcp 1.1.1.0 0.0.0.255 host 172.16.1.1 eq telnet (53 matches)
20 Dynamic testlist permit ip any any
permit ip host 1.1.1.2 any (12 matches) (time left 599)
BrainRT01#

Access-list depois da autenticação:
BrainRT01#sh access-lists
Extended IP access list 101
10 permit tcp 1.1.1.0 0.0.0.255 host 172.16.1.1 eq telnet (41 matches)
20 Dynamic testlist permit ip any any
permit ip host 1.1.1.2 any (320 matches) (time left 599)
BrainRT01#

Informações sobre o impacto na performance, pré-requisitos e outros, podem ser encontrado nestes dois links: Link 1, Link 2.

Até a próxima.

Object Groups para ACLs

Assim como nos firewalls, a partir da versão 12.4(20)T, é possível criar nos rotadores Cisco grupos com hosts ou serviços para serem utilizados nas access-list.

Por exemplo, podemos criar um grupo com os servidores FTP e um grupo com os serviços que estes servidores podem acessar. Depois basta utilizá-los nas ACLs.

A grande vantagem dos object groups é que serviços e/ou host podem ser adicionados ou removidos do grupo sem a necessidade de editar a ACL inteira.

Para utilização os object groups temos 3 restrições:
- Suportam apenas IPv4
- Podem ser aplicadas apenas em interfaces layer 3 (interfaces roteadas e interfaces VLANs)
- Os object groups podem ser aplicadas apenas em ACL estendida e nomeada

Exemplo:

BrainworkGW01#conf t

! Grupo com os servidores FTP (FTP_SERVER é o nome do grupo)
! Podemos também definir uma rede ou subnet, ao invés de hosts apenas

BrainworkGW01(config)#object-group network FTP_SERVER
BrainworkGW01(config-network-group)# host 209.165.200.23
BrainworkGW01(config-network-group)# host 209.165.200.24

! Grupo com os serviços/portas utilizados pelos servidores FTP(FTP_SERVICE é o nome do grupo)

BrainworkGW01(config)#object-group service FTP_SERVICE
BrainworkGW01(config-service-group)# tcp eq ftp
BrainworkGW01(config-service-group)# icmp echo
BrainworkGW01(config-service-group)# tcp smtp
BrainworkGW01(config-service-group)# tcp telnet
BrainworkGW01(config-service-group)# udp domain

! ACL extended e named (obrigatório) onde utilizaremos os grupos (ACL_FTP é o nome da access-list)

BrainworkGW01(config)#ip access-list extended ACL_FTP

! Grupos criados anteriormente são utilizados na ACL, onde permitimos que os servidores FTP
! do grupo FTP_SERVER, acessem os serviços definidos no grupo FTP_SERVICE

BrainworkGW01(config-ext-nacl)#permit object-group FTP_SERVICE object-group FTP_SERVER any

! Aplique a ACL na interface desejada (onde estão os servidores FTP, neste exemplo)

BrainworkGW01(config)#int f0/0
BrainworkGW01(config-if)#ip access-group ACL_FTP in

Mais detalhes sobre os object groups podem ser encontrados no site da Cisco.

Até a próxima.

Editando ACL numerada

Access-lists são com certeza umas das features mais utilizadas nos roteadores. Servem para bloquear/liberar tráfego que passa pelo roteador, escolher as redes que passarão por NAT, que tráfego será criptografado em uma VPN, quais rotas serão distribuídas por um determinado protocolo de roteamento e podem ainda ser utilizadas em uma infinidade de situações.

Podemos dividir as ACLs em dois tipos: Numeradas e Nomeadas.

Até algum tempo atrás as ACLs nomeadas tinham uma grande vantagem em relação as ACLs numeradas, pois com elas era possível editar uma linha da ACL sem a necessidade de deletar toda a access-list. Enquanto que para editar um ACL numerada você tinha que deletar toda a ACL, editar no bloco de notas e colocar novamente no roteador.

Mas a partir da versão 12.3 do IOS é possível editar uma ACL numerada da mesma forma que uma ACL nomeada. Para isso foi adicionado ao software a função de adicionar um número de seqüencia para cada linha de uma ACL, seja ela numerada ou nomeada. Assim é possível excluir, alterar ou incluir novas linhas a ACL.

Exemplo:

! A ACL pode ser criada normalmente ou via IP Access-list

Brainwork01#conf t
Brainwork01(config)#access-list 100 permit tcp 10.10.1.0 0.0.0.255 any
Brainwork01(config)#access-list 100 permit tcp 10.10.2.0 0.0.0.255 any
Brainwork01(config)#access-list 100 permit tcp 10.10.3.0 0.0.0.255 any
Brainwork01(config)#access-list 100 permit tcp 10.10.4.0 0.0.0.255 any
Brainwork01(config)#exit

! Observe que cada linha da ACL tem um identificador

Brainwork01#sh access-lists
Extended IP access list 100
    10 permit tcp 10.10.1.0 0.0.0.255 any
    20 permit tcp 10.10.2.0 0.0.0.255 any
    30 permit tcp 10.10.3.0 0.0.0.255 any
    40 permit tcp 10.10.4.0 0.0.0.255 any

! Para adicionar uma nova entrada à ACL existente, basta tratá-la como uma ACL nomeada
! Por exemplo, vamos colocar uma nova regra, entre a entrada 10 e 20

Brainwork01#conf t
Brainwork01(config)#ip access-list extended 100
Brainwork01(config-ext-nacl)#15 permit udp 10.10.1.0 0.0.0.255 172.16.0.0 0.0.0.255
Brainwork01(config-ext-nacl)#end

! Pronto, a nova linha foi adicionada onde queríamos

Brainwork01#sh access-list
Extended IP access list 100
    10 permit tcp 10.10.1.0 0.0.0.255 any
    15 permit udp 10.10.1.0 0.0.0.255 172.16.0.0 0.0.0.255
    20 permit tcp 10.10.2.0 0.0.0.255 any
    30 permit tcp 10.10.3.0 0.0.0.255 any
    40 permit tcp 10.10.4.0 0.0.0.255 any

! Para excluir uma entrada pontualmente, basta entrar no modo de edição
! e apontar o identificador da linha a ser excluída (30 no exemplo abaixo)

Brainwork01#conf t
Brainwork01(config)#ip access-list extended 100
Brainwork01(config-ext-nacl)#no 30
Brainwork01(config-ext-nacl)#end

! Mais uma vez a ACL 100 foi editada, sem a necessidade de ser excluída

Brainwork01#sh access-lists
Extended IP access list 100
    10 permit tcp 10.10.1.0 0.0.0.255 any
    15 permit udp 10.10.1.0 0.0.0.255 172.16.0.0 0.0.0.255
    20 permit tcp 10.10.2.0 0.0.0.255 any
    40 permit tcp 10.10.4.0 0.0.0.255 any
Brainwork01#

Caso uma nova entrada seja adicionada, sem que o número de seqüencia seja informado, ela será automaticamente inserida no fim da ACL.

Até a próxima.

Evitando o IP Spoofing

IP Spoofing é uma técnica que consiste em mascarar o IP de origem real por um outro IP e é um dos primeiros passos para uma série de ataques como man-in-the-middle, routing redirect, blind spoofing e SYN flood, entre outros.

Para prevenir o spoofing, e consequentemente evitar ataques, de fora da rede, é necessário criar uma access-list no roteador que está conectado a Internet (Ingress Filtering). Inclusive existem algumas RFCs que tratam do assunto, em especial RFC 3330 (endereçamento de uso específico), RFC 1918 (endereçamento privado) e RFC 2827 (Filtro de entrada na rede)

Basicamente como “melhores práticas” temos que nunca um IP privado, de uso específico ou seu próprio IP, deve ser aceito como tráfego inbound na interface outside de um roteador conectado a Internet.

Assim, tendo como exemplo a topologia abaixo, a ACL anti-spoofing (Ingress Filtering) deve ser aplicada na interface s0/0 no sentido inbound.

image

 

ACL anti-spoofing para o cenário acima:

RT01#conf t
RT01(config)#! RFC 3330
RT01(config)#access-list 110 deny ip host 0.0.0.0 any
RT01(config)#access-list 110 deny ip 127.0.0.0 0.255.255.255 any
RT01(config)#access-list 110 deny ip 192.0.2.0 0.0.0.255 any
RT01(config)#access-list 110 deny ip 224.0.0.0 31.255.255.255 any
RT01(config)#! RFC 1918
RT01(config)#access-list 110 deny ip 10.0.0.0 0.255.255.255 any
RT01(config)#access-list 110 deny ip 172.16.0.0 0.15.255.255 any
RT01(config)#access-list 110 deny ip 192.168.0.0 0.0.255.255 any
RT01(config)#! Seu próprio IP público
RT01(config)#access-list 110 deny ip 200.1.1.1 0.0.0.15 any
RT01(config)#! Permite os demais IPs
RT01(config)#access-list 110 permit ip any any
RT01(config)#int s0/0
RtBrainwork01(config-if)#! aplique a ACL no sentido inbound
RtBrainwork01(config-if)#ip access-group 110 in
RtBrainwork01(config-if)#end
RT01#wr

 

Ainda no combate ao spoofing é indicado que seja criada uma ACL para a interface inside do roteador, também no sentido inbound. Essa ACL, conhecida como Egress Filtering, deve permitir que apenas os pacotes com IP de origem da rede interna passem pelo roteador.

Até a próxima.

Tema Brainwork 0.2(beta)