Zone-Based Firewall configuration example.

Los objetivos para este escenario son:
-Configurar Zone-Based Firewall.
-Declarar tres zonas de seguridad (Ext, Int, DMZ)
-Permitir (pass) el tráfico icmp desde el Ext (representado por R1)hacia el Int (representado por R3)
-Inspeccionar (inspect) el tráfico ssh desde el Ext (representado por R1)hacia el Int (representado por R3)
-Denegar (drop) todos los otros tráficos adicionales desde el Ext (representado por R1)hacia el Int (representado por R3), principalmente telnet.

Topología:

R4 Config:
!
hostname R4
!
ip cef
!
ip domain name test.com.cu
!
parameter-map type inspect TRACKING //Se definen mapas de parámetros que pueden ser usados como condiciones a cumplirse cuando es aplicado a una acción de inspect.
audit-trail on //permite auditar la acción de inspect
tcp idle-time 30 //este comando tiene como objetivos demostrar la aplicación de esta regla de idle-time a la acción de inspect. Más adelante se demuestra su efecto.
sessions maximum 0
!
username cisco password 0 cisco
!
ip ssh version 2
!
class-map type inspect match-any SSH-to-Int //Con estos class-map del tipo inspect se seleciona el tráfico que va a ser evaluado para las acciones del firewall.
match protocol ssh //evaluar ssh
class-map type inspect match-any ICMP-to-Int
match protocol icmp //evaluar icmp
!
policy-map type inspect Ext-Int //Este policy-map del tipo inspec tiene como objetivo aplicarle acciones a los tráficos selecccionados de icmp, ssh y telnet.
class type inspect ICMP-to-Int //ICMP que viene del extertior hacia el interior, como se vera más tarde a la hora de aplicar el policy-map en un zone-pair.
pass //Esta acción permite pasar el tráfico sin ninguna inspección. Muy importante: En el sentido contrario a donde va el tráfico tiene que haber otra regla del firewall que permita tráfico de regreso.
class type inspect SSH-to-Int
inspect TRACKING //La acción de inspect permite inspeccionar el tráfico seleccionado por la clase. Se le puede añadir un parameter map (en este caso TRACKING) que condiciona la acción de acuerdo a lo que se defina arriba.
class class-default
drop log //Esta acción en la clase por default elimina todo el tráfico que no macheo en las clases anteriores (se vera en este ejemplo con telnet) y genera un log por cada ejecución.
policy-map type inspect Int-Ext //Este policy-map permite pasa el tráfico de regreso desde el Int hacia el Exterior y también permite pasar todo el tráfico interno hacia cualquier lado, siempre que cumpla con la condición de que haya un pass en el otro sentido.?
class class-default
pass
!
//Declaración de las zonas de seguridad Interna, Externa y DMZ.
zone security Ext
zone security DMZ
zone security Int
//Esto permite declarar los pares de zonas que serviran para aplicar los policy-map en el sentido indicado.
zone-pair security Ext-Int source Ext destination Int //Tiene cómo objetivo general dejar pasar el imcp, inspeccionar el ssh y bloquear el telnet.
service-policy type inspect Ext-Int
zone-pair security Int-Ext source Int destination Ext //Tiene cómo objetivo dejar pasar el tráfico de icmp que regresa hacia el exterior.
service-policy type inspect Int-Ext
!
interface Loopback0 //Configurada y utilizada como referencia para generar los tráficos que van a ser usados para probar el firewall.
ip address 172.22.1.4 255.255.255.255
!
interface FastEthernet1/0
description ExternalNetwork
ip address 10.1.5.2 255.255.255.248
zone-member security Ext //Declaración de pertenencia de la interfaz a determinada declaración de seguridad.
duplex auto
speed auto
!
interface FastEthernet1/1
description DMZNetwork
ip address 10.1.5.10 255.255.255.248
duplex auto
speed auto
!
interface FastEthernet2/0
description InternalNetwork
ip address 10.1.5.18 255.255.255.248
zone-member security Int //Declaración de pertenencia de la interfaz a determinada declaración de seguridad.
duplex auto
speed auto
!
router eigrp 1
network 10.0.0.0
network 172.22.0.0
no auto-summary
!
line vty 0 4
login local
transport input telnet ssh

R1 Config:
!
ip domain name test.com.cu
!
username cisco password 0 cisco
!
ip ssh version 2
!
interface Loopback0
ip address 172.22.1.1 255.255.255.255 //Configurada y utilizada como referencia para generar los tráficos que van a ser usados para probar el firewall.
!
interface FastEthernet1/0
ip address 10.1.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/1
ip address 10.1.5.1 255.255.255.248
duplex auto
speed auto
!
router eigrp 1
network 10.0.0.0
network 172.22.0.0
no auto-summary
!
line vty 0 4
login local
transport input telnet ssh
!

R2 Config:
!
username cisco password 0 cisco
!
ip ssh version 2
!
interface Loopback0
ip address 172.22.1.2 255.255.255.255 //Configurada y utilizada como referencia para generar los tráficos que van a ser usados para probar el firewall.
!
interface FastEthernet1/0
ip address 10.1.2.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/1
ip address 10.1.5.9 255.255.255.248
duplex auto
speed auto
!
router eigrp 1
network 10.0.0.0
network 172.22.0.0
no auto-summary
!
line vty 0 4
login local
transport input telnet ssh
!

R3 Config:
!
username cisco password 0 cisco
!
ip ssh version 2
!
interface Loopback0
ip address 172.22.1.3 255.255.255.255 //Configurada y utilizada como referencia para generar los tráficos que van a ser usados para probar el firewall.
!
interface FastEthernet1/0
ip address 10.1.3.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet1/1
ip address 10.1.5.17 255.255.255.248
duplex auto
speed auto
!
router eigrp 1
network 10.0.0.0
network 172.22.0.0
no auto-summary
!
line vty 0 4
login local
transport input telnet ssh
!

Comprobación:

R4#sh policy-map type inspect zone-pair

policy exists on zp Int-Ext
Zone-pair: Int-Ext

Service-policy inspect : Int-Ext

Class-map: class-default (match-any)
Match: any
Pass
5 packets, 400 bytes

policy exists on zp Ext-Int
Zone-pair: Ext-Int

Service-policy inspect : Ext-Int

Class-map: ICMP-to-Int (match-any)
Match: protocol icmp
0 packets, 0 bytes
30 second rate 0 bps
Pass
0 packets, 0 bytes

Class-map: SSH-to-Int (match-any)
Match: protocol ssh
0 packets, 0 bytes
30 second rate 0 bps

Inspect
Session creations since subsystem startup or last reset 0
Current session counts (estab/half-open/terminating) [0:0:0]
Maxever session counts (estab/half-open/terminating) [0:0:0]
Last session created never
Last statistic reset never
Last session creation rate 0
Maxever session creation rate 0
Last half-open session total 0

Class-map: class-default (match-any)
Match: any
Drop
0 packets, 0 bytes
R4#

Primero el tráfico de icmp.
!
R1#ping 172.22.1.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.22.1.3, timeout is 2 seconds:
!!!!!

R4#sh policy-map type inspect zone-pair
!!!!
Service-policy inspect : Int-Ext

Class-map: class-default (match-any)
Match: any
Pass
10 packets, 800 bytes //El policy-map en el sentido outbound permitió el regreso del tráfico icmp
!!!!
policy exists on zp Ext-Int
Zone-pair: Ext-Int

Service-policy inspect : Ext-Int

Class-map: ICMP-to-Int (match-any)
Match: protocol icmp
5 packets, 400 bytes //El policy-map en el sentido inboud permitió el ingreso del tráfico icmp
30 second rate 0 bps
Pass
5 packets, 400 bytes

//Nota: como ya mencione, sin el zone-pair de arriba, el de abajo no funciona.

Segundo, el tráfico telnet.

R1#telnet 172.22.1.3
Trying 172.22.1.3 …
% Connection timed out; remote host not responding

R4#
*Mar 2 20:56:55.367: %FW-6-DROP_PKT: Dropping Other session 10.1.5.1:48862 172.22.1.3:23 on zone-pair Ext-Int class class-default due to DROP action found in policy-map with ip ident 0
!
*Mar 2 20:57:51.075: %FW-6-LOG_SUMMARY: 4 packets were dropped from 10.1.5.1:48862 => 172.22.1.3:23 (target:class)-(Ext-Int:class-default)
!
R4#sh policy-map type inspect zone-pair
!!!!!!
Class-map: class-default (match-any)
Match: any
Drop
4 packets, 96 bytes //el tráfico de telnet cae en la clase por default y es eliminado.

Tercero, el tráfico de ssh

R1#ssh -l root 172.22.1.3
Password:
R3>en
Password:
R3#

//lo deja pasar!!

R4#
*Mar 2 21:01:19.295: %FW-6-SESS_AUDIT_TRAIL_START: (target:class)-(Ext-Int:SSH-to-Int):Start ssh session: initiator (10.1.5.1:28143) — responder (172.22.1.3:22)
//Debido al audit-trail configurado como parámetro para el inspect, se genera este log cuando se procesa la conexión ssh.

// Después de 30 segundo de inactividad tcp, el firewall debe tumbar la conexión ssh, según la condición de idle-time configurada como parámetro del inspect.

R3#
[Connection to 172.22.1.3 closed by foreign host]
!
*Mar 2 21:02:01.791: %FW-6-SESS_AUDIT_TRAIL: (target:class)-(Ext-Int:SSH-to-Int):Stop ssh session: initiator (10.1.5.1:28143) sent 1411 bytes — responder (172.22.1.3:22) sent 2239 bytes

R4#sh policy-map type inspect zone-pair
!
Class-map: SSH-to-Int (match-any)
Match: protocol ssh
1 packets, 24 bytes
30 second rate 0 bps

Inspect
Packet inspection statistics [process switch:fast switch]
tcp packets: [0:71]

Session creations since subsystem startup or last reset 1
Current session counts (estab/half-open/terminating) [0:0:0]
Maxever session counts (estab/half-open/terminating) [1:1:0]
Last session created 00:05:14
Last statistic reset never
Last session creation rate 0
Maxever session creation rate 1
Last half-open session total 0
!!!!!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s