Zone-Based Firewall configuration example.

Objetivos:
-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:

Configuraciones:

R4 Config:
!
hostname R4
!
ip cef
!
ip domain name tust.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 roos password 0 roosunt
!
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 tuts.com.cu
!
username roos password 0 roosunt
!
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 roos password 0 roosunt
!
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 roos password 0 roosunt
!
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
!!!!!

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 )

Google photo

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.