top of page

VPN HUB and SPOKE - Dynamic VPN with BGP - Parte 1 - Securizando tus redes OT

Actualizado: 8 jun 2020

En este blog hablaremos sobre cómo configurar túneles VPN en un entorno donde queremos interconectar sedes remotas con una sede central. Las sedes remotas están conectadas a routers con conexión a Internet hacían NAT. Estos routers no tendrán puertos abiertos hacía el FW y tendrán el DHCP activado para darle ip y puerta de enlace al puerto WAN de nuestro FW. Nada más tener conexión a Internet lanzaran un túnel VPN dinámico contra la sede central, donde podremos rutar aquellas redes que nos interesen o sacar todo el tráfico por el túnel. Sí por ejemplo lo unimos a un FMG, podremos hacer un Zero Touch Deployment real donde un equipo sacado de la caja sin configuración estará funcionando en cualquier parte del mundo en unos minutos .


Este entorno se puede usar en redes IT/OT pero es especialmente interesante para redes OT donde tenemos redes más o menos complicadas con máquinas (pcs, servidores, PLCs, HMIs, SCADAS, sensores, etc) repartidas por redes clientes que queremos securizar, realizar mantenimiento predictivo mediante el análisis del dato y además dar soporte correctivo en caso de problemas. Además podemos aplicar todos los perfiles de protección de los NGFWs, incluidas las firmas de IPS exclusivas para entornos OT, así como la segmentación de los ISFW de todos los dispositivos Fortigate.




ree


ree



Este diseño a parte de lo comentado anteriormente tiene la ventaja de la simplicidad de la configuración. Una vez configurado el SPOKE se puede mover a cualquier ubicación y simplemente conectándolo a una red con conexión a Internet con los siguientes puertos abiertos en salida ( UDP 500, UDP 4500, ESP (protocolo IP 50)). No hace falta puertos abiertos en entrada, solo que el router haga NAT y que tenga el DHCP activado (suele ser la mayoría de ellos), tras esto tenemos una ubicación remota interconectada y securizada en pocos minutos.



ree


HUB (Sede Central)


- Configuración de los interfaces

config system interfaces
 edit "wan1"
        set vdom "root"
        set ip 212.181.209.10 255.255.255.248
        set allowaccess ping https ssh 
        set vlanforward enable
        set type physical
        set alias "Internet"
        set role wan
    next
     edit "lan1"
        set vdom "root"
        set ip 10.1.1.1 255.255.255.0
        set allowaccess ping https ssh
        set vlanforward enable
        set type physical
        set alias "lan"
        set role lan
    next  
 edit "VPN-Spokes"
        set vdom "root"
        set ip 10.30.30.1 255.255.255.255
        set allowaccess ping https ssh
        set type tunnel
        set remote-ip 10.30.30.254 255.255.255.0
        set interface "wan1"
    next
end

- Configuración de la VPN

config vpn ipsec phase1-interface
 edit "VPN-Spokes"
        set type dynamic
        set interface "wan1"
        set local-gw 212.81.209.10
        set mode aggressive
        set peertype one
        set net-device disable
        set exchange-interface-ip enable
        set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
        set add-route disable
        set dpd on-idle
        set xauthtype auto
        set authusrgrp "Grupo-Spokes1"
        set peerid "SPOKES1.com"
        set tunnel-search nexthop
        set psksecret vpnpresharedkey
        set dpd-retryinterval 60
    nextend
config vpn ipsec phase2-interface
   edit "VPN-Spokes"
        set phase1name "VPN-Spokes"
        set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256 aes128gcm aes256gcm chacha20poly1305
        set keepalive enable
   next
end

- Configuración de BGP

config router bgp
    set as 61066
    set router-id 10.30.1.1
    set keepalive-timer 10
    set holdtime-timer 30
config neighbor-group
        edit "BGP-SPOKES1"
            set activate6 disable
            set next-hop-self enable
            set soft-reconfiguration enable
            set prefix-list-in "prefix-Spokes1-OT-BGP-in"
            set prefix-list-out "prefix-Spokes1-OT-BGP-default-out"
            set remote-as 61066
            set send-community6 disable
        next
end
 config neighbor-range
        edit 1
            set prefix 10.30.30.0 255.255.255.0
            set neighbor-group "BGP-SPOKES1"
        next
end
 config redistribute "connected"
        set status enable
    end
config redistribute "static"
        set status enable
    end
config router prefix-list
    edit "prefix-Spokes1-OT-BGP-in"
        config rule
            edit 4
                set prefix 10.11.0.0 255.255.0.0
                set ge 17
                set le 32
            next
            edit 10
                set action deny
                set prefix 0.0.0.0 0.0.0.0
                set ge 1
                set le 32
            next
        end
    next
    edit "prefix-Spokes1-OT-BGP-default-out"
        config rule
            edit 1
                set prefix 0.0.0.0 0.0.0.0
                unset ge
                unset le
            next
        end
    next
end

- Configuración de las rutas estáticas

config router static
    edit 1
        set gateway 212.181.209.9
        set device "wan1"
    next
end

- Configuración de los usuarios de los spokes permitidos

config user local
    edit "spoke1"
        set type password
        set passwd spoke1pass
    next
    edit "spoke2"
        set type password
        set passwd spoke12pass
    next
end
config user group
edit "Grupo-Spokes1"
        set member "spoke1" "spoke2"
    next
end

- Configuración de las políticas

config firewall policy
  edit 1
        set srcintf "Lan1"
        set dstintf "VPN-Spokes"
        set srcaddr "lan-spokes"
        set dstaddr "lan-date"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "default"
        set application-list "ot-scada-spokes-read"
        set ips-sensor "high_security"
        set logtraffic all
    next
    edit 2
        set srcintf "VPN-Spokes"
        set dstintf "Lan1"
        set srcaddr "lan-support"
        set dstaddr "lan-spokes"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable         
        set ssl-ssh-profile "certificate-inspection"        
        set av-profile "default"       
        set application-list "ot-scada-spokes-write" 
        set ips-sensor "high_security"         
       set logtraffic all
    next
end

SPOKE (Sede Remota)


- Configuración de los interfaces

config system interface
    edit "wan1"
        set vdom "root"
        set mode dhcp
        set allowaccess ping fgfm
        set type physical
        set role wan
        set defaultgw disable
    next
    edit "lan1"
        set vdom "root"
        set ip 10.11.1.1 255.255.255.0
        set allowaccess ping https ssh http 
        set role lan
    next
edit "VPN-Hub"
        set vdom "root"
        set ip 10.30.30.2 255.255.255.255
        set allowaccess ping https telnet
        set type tunnel
        set remote-ip 10.30.30.1 255.255.255.0
        set interface "wan1"
    next
end

- Configuración de la VPN

config vpn ipsec phase1-interface
    edit "VPN-Hub"
        set interface "wan1"
        set mode aggressive
        set peertype any
        set net-device enable
        set exchange-interface-ip enable
        set proposal aes128-sha256 aes256-sha256 aes128-sha1 aes256-sha1
        set localid "SPOKES1.com"
        set xauthtype client
        set authusr "spoke1"
        set authpasswd spoke1pass
        set remote-gw 212.181.209.10
        set psksecret ENC vpnpresharedkey
    next
end

config vpn ipsec phase2-interface
    edit "VPN-Hub"
        set phase1name "VPN-Hub"
        set proposal aes128-sha1 aes256-sha1 aes128-sha256 aes256-sha256
        set auto-negotiate enable
     next
end

- Configuración de las rutas estáticas

config router static
    edit 1
        set dst 212.181.209.10 255.255.255.255
        set device "wan1"
        set dynamic-gateway enable
    next
end

- Configuración del BGP

config router bgp
    set as 61066
    set router-id 10.30.30.2
    config neighbor
        edit "10.30.30.1"
            set next-hop-self enable
            set soft-reconfiguration enable
            set remote-as 61066
        next
    end
    config redistribute "connected"
        set status enable
    end
    config redistribute "static"
        set status enable
end

- Configuración de las políticas

config firewall policy
 edit 1
        set srcintf "lan1"
        set dstintf "VPN-Hub"
        set srcaddr "Lan-Spoke1"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
    edit 2
        set srcintf "VPN-Hub"
        set dstintf "lan1"
        set srcaddr "all"
        set dstaddr "Lan-spoke"
        set action accept
        set schedule "always"
        set service "ALL"
        set logtraffic all
    next
end

TROUBLESHOOTING


Vemos cómo ver si el esquema propuesto esta funcionando correctamente.


HUB

FW-HUB# get router info bgp summary 
BGP router identifier 10.30.30.2, local AS number 61066
BGP table version is 4
2 BGP AS-PATH entries
0 BGP community entries
Next peer check timer due in 51 seconds

Neighbor        V         AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd    
10.30.30.2      4    61066  99  97  3    0 00:08:53        1

Total number of neighbors 1
FW-HUB # get router info routing-table all

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

S*      0.0.0.0/0 [10/0] via 212.181.209.9, wan1
B       10.11.1.0/24 [200/0] via 10.30.30.2, VPN-Spokes, 00:10:05
C       10.30.30.0/24 is directly connected, VPN-Spokes
C       10.30.30.1/32 is directly connected, VPN-Spokes
C       192.168.100.0/24 is directly connected, Lan1
C       212.181.209.8/29 is directly connected, wan1


SPOKES


FW-SPOKE # get router info bgp summary
BGP router identifier 10.30.30.2, local AS number 61066
BGP table version is 3
1 BGP AS-PATH entries
0 BGP community entries

Neighbor        V      AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.30.30.1      4      61066    38  38  3   0 0 00:00:08   1

Total number of neighbors 1
FW-SPOKE # get router info routing-table all

Routing table for VRF=0
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
       O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default

B*      0.0.0.0/0 [200/0] via 10.30.30.1, VPN-Hub, 00:01:18
C       10.11.4.0/24 is directly connected, lan
C       10.30.30.0/24 is directly connected, VPN-Hub
C       10.30.30.2/32 is directly connected, VPN-Hub
C       10.20.20.2/30 is directly connected, wan1
S       212.181.209.10/32 [10/0] via 10.20.20.1, wan1

En el siguiente blog complicaremos este esquema, haremos que el spoke tenga dos interfaces wan, uno principal y otro de respaldo. Si cae la vpn principal veremos como salta el tráfico por la VPN de respaldo y viceversa, si el enlace principal vuelve a funcionar todo el tráfico volvera a salir por ese interface.


 
 
 

Comentarios


Publicar: Blog2_Post

Formulario de suscripción

¡Gracias por tu mensaje!

  • Twitter

©2020 por SecuriBlog. Creada por i.urrutxi@gmail.com

bottom of page