Práctica ASA access-list

26
Práctica ASA access-list SENA 2012 Danny Stewart Garzón Rico William Andres Agudelo Villegas SENA 2012

Transcript of Práctica ASA access-list

Page 1: Práctica ASA access-list

Danny Stewart Garzón RicoWilliam Andres Agudelo Villegas

SENA 2012

SENA 2012

Práctica ASA access-list

Page 2: Práctica ASA access-list

En está ocasión, haremos una práctica interesante, donde utilizaremos un firewall ASA de Cisco, para poder permitir o denegar tráfico determinado, presentamos nuestra topología

Page 3: Práctica ASA access-list

Un poquito enredada, pero con el pasar de este tutorial iremos abordando cada uno de los puntos, simplemente, familiaricémonos con lo que es, direccionamiento, lo que es la LAN, DMZ y outside, que serán nuestros pilares para esta práctica, imprimamos un “write terminal”, de nuestro ASA

ciscoasa(config)# write terminal: Saved:ASA Version 8.0(2)!hostname ciscoasaenable password 8Ry2YjIyt7RRXU24 encryptednames!interface Ethernet0/0no shutdownnameif inside security-level 100 ip address 192.168.1.1 255.255.255.0!interface Ethernet0/1no shutdownnameif dmz security-level 50 ip address 172.16.0.1 255.255.0.0!interface Ethernet0/2 no shutdown nameif outsidesecurity-level 0 ip address 200.200.200.1 255.255.255.0

He omitido, demasiadas cosas, pero lo que pretendo mostrar, es como están configuradas las interfaces en nuestro ASA, ya que con el “nameif”, asignamos “la función” de nuestra interfaz, para luego asignarle un “security-level”, para ya luego asignar permisos o denegaciones desde cada interfaz hacia cada una de las demás interfaces.

Para que sea un poco más entendible lo anterior, como cada interfaz tiene un “security-level” designado, de la forma:

Inside: security-level 100

Page 4: Práctica ASA access-list

dmz: security-level 50

outside: security-level 0

De esta forma, decimos, que en forma jerárquica, el número más elevado, es quien tiene más seguridad en frente de las restantes, aunque la dmz, es donde están nuestros servicios/servidores estos, también son vistos algunos en la internet, como la página WEB de la organización, concluyendo, de forma predeterminada, la “inside” podría “ver” a las demás redes, pero no de forma inversa.

Teniendo claro lo anterior, podríamos empezar a trabajar en nuestra topología y hacer unos ejercicios que son utilizados comúnmente en producción.

¿Qué haremos?

1. Permitiremos el acceso WEB al Router que está en la DMZ, desde la inside (LAN)2. Haremos una publicación de nuestro Router (que hace función de servidor WEB) de la dmz

en internet.3. Haremos un POOL de direcciones públicas para que nuestros usuarios de nuestra inside

(LAN), puedan salir a internet y haremos peticiones a un servidor en la “Internet”4. Configuraremos para que desde la outside (Internet) vea solamente nuestro Router que

hace función de servidor web por solamente HTTPS y que desde la inside (LAN) pueda verlo por HTTP y HTTPS.

Bueno empecemos en este mismo orden, pero cada vez que avancemos, no eliminaremos lo que ya hemos hecho para poder hacer una práctica sólida.

1. Permitir acceso WEB al router que está en la DMZ, desde la inside (LAN)

Page 5: Práctica ASA access-list

Retomando nuestra topología, he eliminado la outside de la imagen por el momento, ya que no la tocaremos para nada en este punto, bueno, ¿qué necesitamos?, primero que todo, verificar, que haya un ping exitoso, entre nuestros clientes en la inside (LAN) y la puerta de enlace.

Del cliente al ASA

Del ASA al cliente

Como nuestro “Servidor WEB” es un Router, ¿qué necesitamos?, si, una ruta en el para poder comunicarnos entre redes diferentes.

acme(config)# ip route 0.0.0.0 0.0.0.0 172.16.0.1

Page 6: Práctica ASA access-list

Ahora, para verificar conexión desde nuestro cliente en la inside (LAN), hacia nuestro Servidor Web, tenemos que hacer una Access-list, para que nuestro ASA lo permita.

ciscoasa(config)# access-list pingc permit icmp any any echo-replyciscoasa(config)# access-list pingc permit icmp any any unreachableciscoasa(config)# access-list pingc deny icmp any any

Y asignamos dicha access-list a la interfaz, donde está conectada la dmz

ciscoasa(config)# interface ethernet 0/1ciscoasa(config-if)# access-group pingc in interface dmzVerificamos que nuestro cliente en la inside (LAN) pueda hacer ping a nuestro Servidor Web

Page 7: Práctica ASA access-list

Ahora, en nuestro Router, permitiremos la administración por Web

acme(config)# ip http serveracme(config)# ip http secure-server #Está linea es para habilitar la conexión segura a nuestro router (HTTPS)

Ahora crearemos una access-list para permitir las conexiones desde la inside (LAN) a esté, nuestro servidor WEB y asignamos dicha access-list a la interfaz inside

ciscoasa(config)# access-list web permit tcp 192.168.1.0 255.255.255.0 host 172.16.0.2 eq wwwciscoasa(config)# access-list web deny ip any anyciscoasa(config)# interface ethernet 0/0ciscoasa(config-if)# access-group web in interface inside

IMPORTANTE: Luego de permitir algo, denegar todo el tráfico restante, para así, no abrir brechas de seguridad.

Page 8: Práctica ASA access-list

Ahora una prueba desde nuestro cliente

2. Haremos una publicación de nuestro Router (que hace función de servidor WEB) de la dmz en internet.

Page 9: Práctica ASA access-list

Para poder hacer esto, tenemos que hacer un enrutamiento desde nuestro ASA hacia la red que comunica nuestra topología a internet y asignar una IP pública a nuestro servidor Web por medio de un NAT

Haremos una ruta por defecto, para que cualquier tráfico entrante/saliente hacia/desde la internet sea por una ruta que nosotros definamos, que casi siempre será una ruta que la ISP nos asigne

ciscoasa(config)# route outside 0 0 200.200.200.2

También tendremos que asignar una ruta por defecto para que el tráfico que viene desde internet pueda comunicarse con nuestro ASA, como en nuestra topología el Router 2, hace de enrutar nuestro tráfico desde/para internet, acá es donde tenemos que poner nuestra ruta por defecto

Page 10: Práctica ASA access-list

R2(config)#ip route 0.0.0.0 0.0.0.0 200.200.200.1

Ahora, asignaremos una IP pública que rentaremos para poder ver el servidor Web desde internet usando NAT

ciscoasa(config)# static (dmz,outside) 7.7.7.7 172.16.0.2 netmask 255.255.255.255

Ahora cada petición que se haga en internet a la dirección 7.7.7.7 responderá nuestro servidor Web

De igual forma, también tenemos que crear una access-list para poder permitir las peticiones http en nuestra red, desde la outside.

ciscoasa(config)# access-list public permit tcp any 7.7.7.7 255.255.255.255 eq wwwciscoasa(config)# access-list public deny ip any anyciscoasa(config)# interface ethernet 0/2ciscoasa(config-if)# access-group public in interface outside

Probemos lo anterior simulando un cliente de internet

Page 11: Práctica ASA access-list

3. Ahora haremos un POOL de direcciones públicas para que nuestros usuarios de nuestra inside (LAN), puedan salir a internet y haremos peticiones a un servidor en la “Internet”

Page 12: Práctica ASA access-list

Para que nuestro usuarios de la inside (LAN), pueda hacer una petición de nuestro servidor Web local y no tengan que recorrer internet para poder encontrarlo, hacemos un NAT 0 en el ASA y como global, asignaremos un rango de direcciones públicas para que nuestros clientes puedan salir a internet.

ciscoasa(config)# nat (inside) 0 192.168.1.0 255.255.255.0ciscoasa(config)# global (outside) 1 8.0.0.1-8.0.0.10

Antes de seguir, también tenemos que agregar una access-list para poder permitir que la LAN pueda hacer peticiones web hacia todas las redes, es decir, la internet, pero, ¿recuerdan que ya tenemos una access-list asignada a la interface inside?, lo que haremos es editarla y agregar una nueva línea.

Vamos a agregar una nueva regla usando la línea 2, pero no quiere decir que eliminaremos lo que tenemos en ella, agregaremos algo en su puesto y lo que está en la línea 2, quedara bajo está, de la siguiente forma

ciscoasa(config)# access-list web line 2 permit tcp 192.168.1.0 255.255.255.0 any eq 80

Page 13: Práctica ASA access-list

ciscoasa(config)# access-list web line 3 permit tcp 192.168.1.0 255.255.255.0 any eq 443

¿Por qué dos lineas?, para permitir las conexiones seguras (Puerto 443) y las no seguras (80)Ahora nuestra access-list, quedara así

Ahora configuraremos otro servidor web en la internet

En el Router 2, aprovechando que lo tenemos configurado con una IP publica, habilitaremos la administración Web del mismo.

Page 14: Práctica ASA access-list

R2(config)#ip http server

Haremos una prueba con un cliente en nuestra LAN

También, podremos hacer peticiones a nuestro servidor local como lo habíamos dicho, tanto como con la IP pública como con la privada.

4. Configuraremos para que desde la outside (Internet) vea solamente nuestro Router que hace función de servidor web

Page 15: Práctica ASA access-list

por solamente HTTPS y que desde la inside (LAN) pueda verlo por HTTP y HTTPS.

Primero que todo, vamos a revisar que access-list tenemos y cuales podremos editar para poder hacer esto y poder adaptarlas a nuestras necesidades

Como vemos, en nuestra access-list “public” no se acomoda a lo que queremos, permitir solo conexiones seguras hacia nuestro servidor local, procedemos a editar dicha línea para solo permitir conexiones seguras hacia nuestro servidor.

ciscoasa(config)# access-list public line 1 permit tcp any host 7.7.7.7 eq 443ciscoasa(config)# no access-list public permit tcp any host 7.7.7.7 eq 80

Page 16: Práctica ASA access-list
Page 17: Práctica ASA access-list

Ahora verificamos si desde la LAN tenemos acceso tanto como seguro y como no seguro a la administración por WEB de nuestro Router ubicado en la dmz

Page 18: Práctica ASA access-list

De este modo, podremos ya jugar con el sinfín de opciones que el mundo de las redes nos ofrece, como permitir que solamente un segmento o un host que pueda administrar un servidor o un dispositivo, como sea por Telnet o SSH, simplemente hay que agregar una regla en nuestra lista de acceso y asignársela a una interfaz de entrada.

Por ejemplo, vamos a permitir que solamente un host de nuestra LAN pueda entrar por SSH y telnet a nuestro Router en la dmz

ciscoasa(config)# access-list web permit tcp host 192.168.1.2 255.255.255.0 host 172.16.0.2 eq 22

Agregamos está regla a nuestra access-list “web”, ya que está es la que tenemos asignada en nuesta interfaz

Page 19: Práctica ASA access-list

Ahora, vamos a dar unos tips, por si tenemos algún problema poder revisar, por medio de comandos en nuestro ASA y así revisar nuestra configuración en busca de errores.

Primero el packet-tracer, su uso es fundamental para el reconocimiento de errores en nuestra red, ya que, este comando, realiza una serie de pasos para verificar si nuestra red está funcionando correctamente, su uso es sencillo

ciscoasa# packet-tracer input inside tcp 192.168.1.2 1234 172.16.0.2 http

input = decimos si es tráfico entrante o saliente

inside = nombre de la interfaz, como en nuestro caso, inside, outside, dmz

tcp = protocolo a hacer el trazado

192.168.1.2 = dirección IP de origen

1234 = puerto origen

172.16.0.2 = dirección IP de destino

http = protocolo de destino

Si todo sale como Allow, quiere decir que está funcinando bien, si en caso contrario tenemos resultados no deseados, el problema es de enrutamiento.

Page 20: Práctica ASA access-list
Page 21: Práctica ASA access-list

También, es muy práctico, cuando hacemos una access-list y queremos verificar si está sirviendo o no, hay algo que se conoce como Match, que es un contador que nos indica cuantas veces esa regla se ha usado en nuestra red, sea denegando o permitiendo, con el comando

ciscoasa# show access-list

Los Match, los podremos ver como hitcnt, ahora, provoquemos un Match de una petición web.

Como vemos ha incrementado en 1 y eso significa que está funcionando correctamente nuestra regla en el ASA

Page 22: Práctica ASA access-list

Otra herramienta es capturar paquetes por medio de una access-list; primero hacemos una access-list y permitimos todo el tráfico IP del host o red que queremos analizar

ciscoasa(config)# access-list cap0 permit ip any host 192.168.1.2

Luego empezamos a capturar todo el tráfico generado y le asignamos una interfaz de salida, que es la que queremos analizar y determinar el tráfico que genera un segmento de red por dicha interfaz

ciscoasa(config)# capture cap0 access-list cap0 interface outside

Después de generar tráfico, damos un show capture

ciscoasa(config)# show capturecapture cap0 type raw-data access-list cap0 interface outside [Capturing - 3362 bytes]

El tráfico que hice fue una petición http

Page 23: Práctica ASA access-list

Otra ayuda también, es realizar un GREP para realizar una búsqueda cómoda en nuestras configuraciones, como filtrar solo las interfaces, las access-list, los access-group, nuestro direccionamiento, etc…

ciscoasa(config)# show running-config | grep access-list