Seguimos con la segunda parte del tutorial de configuración del módulo firewall de Vyatta configurando las reglas de firewall que vamos a aplicar a la interfaz bond0.10 correspondiente a la VLAN 10 y que van a gestionar las conexiones del departamento de Ventas según la política de conexiones permitidas establecida en la parte 1 del presente tutorial.

A modo de resumen:

  – Departamento de Ventas (VLAN 10):

  • En cuanto al tráfico local que será gestionado por la maquina Vyatta a este grupo le vamos a permitir las consultas DHCP de cliente (puerto 68 TCP y UDP), las consultas DNS (puerto 53 TCP y UDP), este tráfico será local (con destino a la propia maquina Vyatta y administrado por ella), con lo que tendremos que crear un grupo de reglas con las conexiones permitidas para asignar a la interfaz VLAN 10 (bond0.10) como tráfico local.
  • Acceso permitido a los servidores de la empresa (VLAN 80) solo para los servicios http (puerto 80), https (puerto 443), Microsoft SQL (puerto 1433 TCP), MySQL (puerto 3306 TCP).
  • Permitiremos también que tengan acceso a servidores de correo seguros POP, SMTP e IMAP (puertos 995, 465 y 993 TCP) de cualquier sitio de internet (podríamos limitar el acceso solo a los servidores de correo corporativos, luego veremos cómo hacerlo).
  • Permitiremos el acceso a páginas web de clientes y a algunos servicios de banca, paquetería, etc.



Vamos ahora con la configuración de los grupos de reglas:

  • Grupo de reglas locales en interfaz bond0.10 (VLAN 10):

    openredes@openredesR1:~$ configure
    [edit]
    openredes@openredesR1# edit firewall name vlan10-local
    [edit firewall name vlan10-local]
    openredes@openredesR1# edit rule 5
    [edit firewall name vlan10-local rule 5]
    openredes@openredesR1# set state invalid enable
    [edit firewall name vlan10-local rule 5]
    openredes@openredesR1# set action reject
    [edit firewall name vlan10-local rule 5]
    openredes@openredesR1# up
    [edit firewall name vlan10-local]
    openredes@openredesR1# edit rule 10
    [edit firewall name vlan10-local rule 10]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-local rule 10]
    openredes@openredesR1# set destination port domain
    [edit firewall name vlan10-local rule 10]
    openredes@openredesR1# set protocol tcp_udp
    [edit firewall name vlan10-local rule 10]
    openredes@openredesR1# up
    [edit firewall name vlan10-local]
    openredes@openredesR1# edit rule 20
    [edit firewall name vlan10-local rule 20]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-local rule 20]
    openredes@openredesR1# set destination port bootpc
    [edit firewall name vlan10-local rule 20]
    openredes@openredesR1# set protocol tcp_udp
    [edit firewall name vlan10-local rule 20]
    openredes@openredesR1# commit
    [edit firewall name vlan10-local rule 20]
    openredes@openredesR1# up
    [edit firewall name vlan10-local]
    openredes@openredesR1# show
     rule 5 {
         action reject
         state {
             invalid enable
         }
     }
     rule 10 {
         action accept
         destination {
             port domain
         }
         protocol tcp_udp
     }
     rule 20 {
         action accept
         destination {
             port bootpc
         }
         protocol tcp_udp
     }
    [edit firewall name vlan10-local]
    openredes@openredesR1#



    En primer lugar hemos creado una regla que bloquea los paquetes con estado de conexión invalido y otras dos reglas que permiten las consultas DNS y DHCP a openredesR1

  • Grupo de reglas que gestionaran el tráfico de entrada por la interfaz bond0.10 (VLAN 10):

    Otra norma que vamos a seguir y que es aconsejable para la agilidad del análisis de firewall en paquetes pertenecientes a conexiones previamente establecidas y por tanto permitidas es la de crear una primera regla que permita este tráfico ya establecido o relacionado a trafico ya establecido (si es trafico ya establecido es porque ya se había permitido su inicio anteriormente por alguna regla de firewall y no tiene sentido volver a analizarlo como trafico nuevo, este es el principio básico de un firewall basado en estados o stateful firewall) solamente analizando el estado asignado a dicha conexión y los puertos a los que está destinado para tener un grado más de seguridad, para esto, vamos a crear un grupo de puertos de uso permitido y común para cada departamento. Si volvemos un momento a la parte 1 donde hemos descrito la política de conexiones a seguir vemos que en cuanto a tipo de trafico entrante tenemos los mismo tipos de tráfico a permitir en las subredes vlan10, vlan20, vlan30 y vlan40 (interpretar tipo de trafico como puertos a los que permitimos el acceso, las direcciones de destino no tienen por qué coincidir), con lo que podemos crear un grupo de puertos común para usar en las reglas de firewall de las cuatro interfaces listadas anteriormente.

    [edit firewall name vlan10-local]
    openredes@openredesR1# top
    [edit]
    openredes@openredesR1# edit firewall group port-group puertos-vlan10-20-30-40
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 80
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 443
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 1433
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 3306
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 995
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 465
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# set port 993
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# commit
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# show
     port 80
     port 443
     port 1433
     port 3306
     port 995
     port 465
     port 993
    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1#



    Y ahora creamos las reglas que aplicaremos como firewall de entrada en la interfaz bond0.10 y en las que usaremos el grupo de puertos creado:

    [edit firewall group port-group puertos-vlan10-20-30-40]
    openredes@openredesR1# top
    [edit]
    openredes@openredesR1# edit firewall name vlan10-in rule 2
    [edit firewall name vlan10-in rule 2]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-in rule 2]
    openredes@openredesR1# set destination group port-group puertos-vlan10-20-30-40
    [edit firewall name vlan10-in rule 2]
    openredes@openredesR1# set state established enable
    [edit firewall name vlan10-in rule 2]
    openredes@openredesR1# set state related enable
    [edit firewall name vlan10-in rule 2]
    openredes@openredesR1# up
    [edit firewall name vlan10-in]
    openredes@openredesR1# edit rule 5
    [edit firewall name vlan10-in rule 5]
    openredes@openredesR1# set action reject
    [edit firewall name vlan10-in rule 5]
    openredes@openredesR1# set state invalid enable
    [edit firewall name vlan10-in rule 5]
    openredes@openredesR1# up
    [edit firewall name vlan10-in]
    openredes@openredesR1# commit
    [edit firewall name vlan10-in]
    openredes@openredesR1# edit rule 10
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# set destination port 80,443,1433,3306
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# set destination address 192.168.1.192/26
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# set protocol tcp
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# set state new enable
    [edit firewall name vlan10-in rule 10]
    openredes@openredesR1# up
    [edit firewall name vlan10-in]
    openredes@openredesR1# commit
    [edit firewall name vlan10-in]
    openredes@openredesR1# edit rule 20
    [edit firewall name vlan10-in rule 20]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-in rule 20]
    openredes@openredesR1# set destination port 995,465,993
    [edit firewall name vlan10-in rule 20]
    openredes@openredesR1# set protocol tcp
    [edit firewall name vlan10-in rule 20]
    openredes@openredesR1# set state new enable
    [edit firewall name vlan10-in rule 20]
    openredes@openredesR1# up
    [edit firewall name vlan10-in]
    openredes@openredesR1# commit
    [edit firewall name vlan10-in]
    openredes@openredesR1# nslookup www.cliente1.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8 dns.google.com
    
    Name:      www.cliente1.com
    Address 1: 198.51.100.7
    [edit firewall name vlan10-in]
    openredes@openredesR1# nslookup www.cliente2.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8 dns.google.com
    
    Name:      www.cliente2.com
    Address 1: 198.51.100.8
    [edit firewall name vlan10-in]
    openredes@openredesR1# nslookup www.banco1.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8 dns.google.com
    
    Name:      www.banco1.com
    Address 1: 198.51.100.22
    [edit firewall name vlan10-in]
    openredes@openredesR1# nslookup www.banco2.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8 dns.google.com
    
    Name:      www.banco2.com
    Address 1: 198.51.100.23
    [edit firewall name vlan10-in]
    openredes@openredesR1# nslookup www.paqueteria1.com
    Server:    8.8.8.8
    Address 1: 8.8.8.8 dns.google.com
    
    Name:      www.paqueteria1.com
    Address 1: 198.51.100.51
    [edit firewall name vlan10-in]
    openredes@openredesR1# top
    [edit]
    openredes@openredesR1# set firewall group address-group webs-vlan10 address 198.51.100.7
    [edit]
    openredes@openredesR1# set firewall group address-group webs-vlan10 address 198.51.100.8
    [edit]
    openredes@openredesR1# set firewall group address-group webs-vlan10 address 198.51.100.22
    [edit]
    openredes@openredesR1# set firewall group address-group webs-vlan10 address 198.51.100.23
    [edit]
    openredes@openredesR1# set firewall group address-group webs-vlan10 address 198.51.100.51
    [edit]
    openredes@openredesR1# edit firewall name vlan10-in rule 30
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# set action accept
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# set destination group address-group webs-vlan10
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# set destination port 80,443
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# set protocol tcp
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# set state new enable
    [edit firewall name vlan10-in rule 30]
    openredes@openredesR1# up
    [edit firewall name vlan10-in]
    openredes@openredesR1# commit
    [edit firewall name vlan10-in]
    openredes@openredesR1# show
     rule 2 {
         action accept
         destination {
             group {
                 port-group puertos-vlan10-20-30-40
             }
         }
         state {
             established enable
             related enable
         }
     }
     rule 5 {
         action reject
         state {
             invalid enable
         }
     }
     rule 10 {
         action accept
         destination {
             address 192.168.1.192/26
             port 80,443,1433,3306
         }
         protocol tcp
         state {
             new enable
         }
     }
     rule 20 {
         action accept
         destination {
             port 995,465,993
         }
         protocol tcp
         state {
             new enable
         }
     }
     rule 30 {
         action accept
         destination {
             group {
                 address-group webs-vlan10
             }
             port 80,443
         }
         protocol tcp
         state {
             new enable
         }
     }
    [edit firewall name vlan10-in]
    openredes@openredesR1#



    Vemos que para saber la IP pública de cada acceso web que queremos controlar hemos usado el comando nslookup, que hace una consulta al servidor DNS para resolver la IP del nombre de dominio que le estamos pasando a continuación, aquí he publicado una entrada con la explicación del funcionamiento de la herramienta nslookup. En este caso hemos puesto dominios de ejemplo y les hemos asignado de forma ficticia Ips del rango TEST-NET-2.


    En caso de querer limitar el acceso únicamente al servidor de email de la empresa se puede configurar en la regla 20 un destino único prefijado o un grupo de destino creando un grupo de direcciones y asignarlo con el comando set firewall name vlan10-in rule 20 destination address IP_server_mail_corporativo.

  • Por último asignamos los nuevos grupos de reglas a la interfaz correspondiente en el sentido correspondiente:
    [edit firewall name vlan10-in]
    openredes@openredesR1# top
    [edit]
    openredes@openredesR1# set interfaces bonding bond0 vif 10 firewall local name vlan10-local
    [edit]
    openredes@openredesR1# set interfaces bonding bond0 vif 10 firewall in name vlan10-in
    [edit]
    openredes@openredesR1# commit
    [edit]
    openredes@openredesR1# save
    Saving configuration to '/opt/vyatta/etc/config/config.boot'...
    Done
    [edit]
    openredes@openredesR1# show interfaces bonding bond0
     description LANTRUNK1A
     hash-policy layer2
     mode transmit-load-balance
     vif 10 {
         address 192.168.0.126/25
         description Ventas
         firewall {
             in {
                 name vlan10-in
             }
             local {
                 name vlan10-local
             }
         }
     }
     vif 20 {
         address 192.168.0.190/26
         description Marketing
     }
     vif 30 {
         address 192.168.0.206/28
         description Administracion
     }
     vif 40 {
         address 192.168.0.222/28
         description Gerencia
     }
     vif 50 {
         address 192.168.0.238/28
         description DMZ
     }
    [edit]
    openredes@openredesR1#



Lo que acabamos de hacer en esta parte del tutorial ha sido simplemente crear un grupo de reglas de firewall con un nombre claro de interpretar y una vez definido y aplicado a la configuración (con el comando commit) se ha aplicado el grupo de reglas a la interfaz correspondiente en el sentido correspondiente. La interfaz a la que estaban destinadas estos grupos de reglas era la interfaz que gestiona la subred VLAN 10, es decir, bond0.10. Y los grupos de reglas que se han creado ha sido uno destinado a proteger las conexiones con destino a la propia maquina Vyatta (sentido local) llamado vlan10-local y otro destinado a proteger las conexiones que entran por la interfaz con destino a otras redes o subredes distintas de VLAN 10 (192.168.0.0/25), trafico entrante (in, que entra por la interfaz) llamado vlan10-in.
Un fallo tonto pero común es crear los grupos de reglas y no asignarlo a las interfaces correspondientes con lo que el módulo de firewall se queda configurado pero inactivo.
Eso es todo, ahora los equipos pertenecientes a la VLAN 10 solo podrán realizar conexiones permitidas, el resto están siendo bloqueadas.







vyatta_fortune_large