Configuración básica Cisco ASA
Un Cisco ASA (Adaptive Security Appliances) integra un firewall, IPS y concentrador VPN.
En este post mostraré como configurar lo básico de los Cisco Asa para tener conectividad entre la LAN y otras redes, además de realizar pruebas de conectividad.
Lo que se hará es lo siguiente:
- Configurar direccionamiento IP
- Configurar los nameif y los security level en las interfaces del ASA
- Habilitar la inspección de ICMP
Para este laboratorio, se utilizará la siguiente topología:
Lo primero a realizar, es la configuración de los routers:
R1:
R1(config)#interface g0/0 R1(config-if)#ip add 192.168.10.1 255.255.255.0 R1(config-if)#no sh R1(config-if)# *Apr 21 02:39:32.874: %LINK-3-UPDOWN: Interface GigabitEthernet0/0, changed state to up *Apr 21 02:39:33.875: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to up R1(config-if)#exit R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.2
R2:
R2(config)#interface g0/1 R2(config-if)#ip add 192.168.20.1 255.255.255.0 R2(config-if)#no sh R2(config-if)# *Apr 21 02:41:13.541: %LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to up *Apr 21 02:41:14.541: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to up R2(config-if)#exit R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.20.2
Con respecto a los ASA, la configuración de estos es similar al de los routers, pero en las interfaces es necesario configurar los nameif y los security level.
El security level indica que tan confiable es dicha interfaz, donde puede tomar un valor entre 0 y 100. Una interfaz con un security level de 100 indica que es una red muy confiable (segura), utilizada por lo general en las interfaces que dan hacia la LAN, mientras que una interfaz con security level 0, indica que la red que conecta a esa interfaz no es segura, y se configura en interfaces que conectan a la WAN o Internet.
El comando nameif asigna un nombre a la interfaz, con la finalidad de tener una descripción del tráfico que pasa a través de esta. Por defecto, si se usa el nombre inside, se asigna automáticamente el security level 100, mientras que cualquier otro nombre configura la interfaz con un security level de 0.
Junto con esto, por defecto no se permite el tráfico entre interfaces con igual security level, solo entre interfaces con distinto nivel, pero de uno mayor a uno menor, pero no de menor a mayor.
Como el Cisco ASA es un stateful firewall, este crea una sesión en la comunicación que pasa a través de este, permitiendo la respuesta del tráfico desde un security level menor a uno mayor.
En caso de que se necesite permitir el tráfico entre interfaces con el mismo nivel, usar el comando de configuración global same-security-traffic permit inter-interface.
La configuración del ASA es la siguiente:
ASA(config)# interface g0/0 ASA(config-if)# nameif inside INFO: Security level for "inside" set to 100 by default. ASA(config-if)# ip add 192.168.10.2 255.255.255.0 ASA(config-if)# no sh ASA(config-if)# interface g0/1 ASA(config-if)# nameif outside INFO: Security level for "outside" set to 0 by default. ASA(config-if)# ip add 192.168.20.2 255.255.255.0 ASA(config-if)# no sh ASA(config-if)# sh run interface g0/0 ! interface GigabitEthernet0/0 nameif inside security-level 100 ip address 192.168.10.2 255.255.255.0 ASA(config-if)# sh run interface g0/1 ! interface GigabitEthernet0/1 nameif outside security-level 0 ip address 192.168.20.2 255.255.255.0
Como pueden ver, la configuración del security policy se realiza automáticamente, pero si es necesario configurarlo manual, el comando es ***security-policy
Para comprobar el estado de las interfaces, usar los siguientes comandos:
ASA# show ip System IP Addresses: Interface Name IP address Subnet mask Method GigabitEthernet0/0 inside 192.168.10.2 255.255.255.0 manual GigabitEthernet0/1 outside 192.168.20.2 255.255.255.0 manual Current IP Addresses: Interface Name IP address Subnet mask Method GigabitEthernet0/0 inside 192.168.10.2 255.255.255.0 manual GigabitEthernet0/1 outside 192.168.20.2 255.255.255.0 manual ASA# show interface ip brief Interface IP-Address OK? Method Status Protocol GigabitEthernet0/0 192.168.10.2 YES manual up up GigabitEthernet0/1 192.168.20.2 YES manual up up GigabitEthernet0/2 unassigned YES unset administratively down up GigabitEthernet0/3 unassigned YES unset administratively down up GigabitEthernet0/4 unassigned YES unset administratively down up GigabitEthernet0/5 unassigned YES unset administratively down up GigabitEthernet0/6 unassigned YES unset administratively down up Management0/0 unassigned YES unset administratively down up ASA# show interface g0/0 Interface GigabitEthernet0/0 "inside", is up, line protocol is up Hardware is i82540EM rev03, BW 1000 Mbps, DLY 10 usec Auto-Duplex(Full-duplex), Auto-Speed(1000 Mbps) Input flow control is unsupported, output flow control is off MAC address 5000.0001.0001, MTU 1500 IP address 192.168.10.2, subnet mask 255.255.255.0 50 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 0 pause input, 0 resume input 0 L2 decode drops 16 packets output, 0 bytes, 0 underruns 0 pause output, 0 resume output 0 output errors, 0 collisions, 1 interface resets 0 late collisions, 0 deferred 20 input reset drops, 0 output reset drops input queue (blocks free curr/low): hardware (481/481) output queue (blocks free curr/low): hardware (511/510) Traffic Statistics for "inside": 30 packets input, 2946 bytes 16 packets output, 1456 bytes 5 packets dropped 1 minute input rate 0 pkts/sec, 0 bytes/sec 1 minute output rate 0 pkts/sec, 0 bytes/sec 1 minute drop rate, 0 pkts/sec 5 minute input rate 0 pkts/sec, 0 bytes/sec 5 minute output rate 0 pkts/sec, 0 bytes/sec 5 minute drop rate, 0 pkts/sec ASA# show interface g0/1 Interface GigabitEthernet0/1 "outside", is up, line protocol is up Hardware is i82540EM rev03, BW 1000 Mbps, DLY 10 usec Auto-Duplex(Full-duplex), Auto-Speed(1000 Mbps) Input flow control is unsupported, output flow control is off MAC address 5000.0001.0002, MTU 1500 IP address 192.168.20.2, subnet mask 255.255.255.0 56 packets input, 0 bytes, 0 no buffer Received 0 broadcasts, 0 runts, 0 giants 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 0 pause input, 0 resume input 0 L2 decode drops 26 packets output, 0 bytes, 0 underruns 0 pause output, 0 resume output 0 output errors, 0 collisions, 1 interface resets 0 late collisions, 0 deferred 20 input reset drops, 0 output reset drops input queue (blocks free curr/low): hardware (475/475) output queue (blocks free curr/low): hardware (511/510) Traffic Statistics for "outside": 36 packets input, 3546 bytes 26 packets output, 2456 bytes 21 packets dropped 1 minute input rate 0 pkts/sec, 0 bytes/sec 1 minute output rate 0 pkts/sec, 0 bytes/sec 1 minute drop rate, 0 pkts/sec 5 minute input rate 0 pkts/sec, 0 bytes/sec 5 minute output rate 0 pkts/sec, 0 bytes/sec 5 minute drop rate, 0 pkts/sec
Realizamos pruebas de conectividad local en el segmento:
----# R1 #---- R1#ping 192.168.10.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.10.2, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 2/2/3 ms ----# R2 #---- R2#ping 192.168.20.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.20.2, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 2/2/4 ms
Y ahora pruebas de conectividad entre la red de la interfaz inside hacia la red de la interfaz outside:
R1#ping 192.168.20.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
Según la teoría, la comunicación entre una zona con un security level mayor a uno menor no debería tener problemas, pero por defecto, el ASA no deja pasar el ping, porque este no puede inspeccionar el tráfico icmp. Esto lo podemos comprobar viendo los log del equipo.
NOTA: no se recomienda habilitar el logging en nivel 7, porque el nivel debug puede causar un deterioro del performance del equipo.
ASA# %ASA-7-609001: Built local-host inside:192.168.10.1
%ASA-7-609001: Built local-host outside:192.168.20.1
%ASA-6-302020: Built outbound ICMP connection for faddr 192.168.20.1/0 gaddr 192.168.10.1/3 laddr 192.168.10.1/3
%ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 0, code 0)
%ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 0, code 0)
%ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 0, code 0)
%ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 0, code 0)
%ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 0, code 0)
%ASA-6-302021: Teardown ICMP connection for faddr 192.168.20.1/0 gaddr 192.168.10.1/3 laddr 192.168.10.1/3
%ASA-7-609002: Teardown local-host inside:192.168.10.1 duration 0:00:10
%ASA-7-609002: Teardown local-host outside:192.168.20.1 duration 0:00:10
Para permitir el tráfico icmp, es necesario agregar un policy-map para realizar la inspección de este, o modificar el policy-map global_policy:
ASA(config)# sh run policy-map global_policy ! policy-map global_policy class inspection_default inspect dns migrated_dns_map_1 inspect ftp inspect h323 h225 inspect h323 ras inspect ip-options inspect netbios inspect rsh inspect rtsp inspect skinny inspect esmtp inspect sqlnet inspect sunrpc inspect tftp inspect sip inspect xdmcp ! ASA(config)# policy-map global_policy ASA(config-pmap)# class inspection_default ASA(config-pmap-c)# inspect icmp
Si ahora realizamos la prueba de conectividad otra vez, veremos que tenemos ping desde R1 a R2:
----# R1 #---- R1#ping 192.168.20.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 3/4/7 ms ----# ASA #---- ASA(config)# %ASA-7-609001: Built local-host inside:192.168.10.1 %ASA-7-609001: Built local-host outside:192.168.20.1 %ASA-6-302020: Built outbound ICMP connection for faddr 192.168.20.1/0 gaddr 192.168.10.1/5 laddr 192.168.10.1/5 %ASA-6-302021: Teardown ICMP connection for faddr 192.168.20.1/0 gaddr 192.168.10.1/5 laddr 192.168.10.1/5 %ASA-7-609002: Teardown local-host inside:192.168.10.1 duration 0:00:00 %ASA-7-609002: Teardown local-host outside:192.168.20.1 duration 0:00:00
Y si haces la prueba desde R2 a R1, veremos que el tráfico es denegado:
----# R2 #---- R2#ping 192.168.10.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.10.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) ----# ASA #---- ASA(config)# %ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 8, code 0) %ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 8, code 0) %ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 8, code 0) %ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 8, code 0) %ASA-3-106014: Deny inbound icmp src outside:192.168.20.1 dst inside:192.168.10.1 (type 8, code 0)
Para validar las sesiones de tráfico que pasan a través del firewall, usar el comando show local-host all y show conn:
ASA# show local-host all Interface outside: 1 active, 1 maximum active, 0 denied local host: <192.168.20.1>, SCTP flow count/limit = 0/unlimited TCP flow count/limit = 0/unlimited TCP embryonic count to host = 0 TCP intercept watermark = unlimited UDP flow count/limit = 0/unlimited Conn: ICMP outside 192.168.20.1:0 inside 192.168.10.1:6, idle 0:00:00, bytes 39744, flags Interface inside: 1 active, 1 maximum active, 0 denied local host: <192.168.10.1>, SCTP flow count/limit = 0/unlimited TCP flow count/limit = 0/unlimited TCP embryonic count to host = 0 TCP intercept watermark = unlimited UDP flow count/limit = 0/unlimited Conn: ICMP outside 192.168.20.1:0 inside 192.168.10.1:6, idle 0:00:00, bytes 39744, flags Interface any: 0 active, 0 maximum active, 0 denied Interface identity: 0 active, 1 maximum active, 0 denied ASA# sho conn 0 in use, 1 most used ASA# sho conn 1 in use, 1 most used ICMP outside 192.168.20.1:0 inside 192.168.10.1:7, idle 0:00:00, bytes 21960, flags