Securizar acceso a Mikrotik con VPN y duda DMZ

Hola a todos, en relación al tema que publiqué en este post:

Dudas sobre configuración IGMP

Me gustaría por una parte poder acceder al Mikrotik principal, el que hace de router, (y eventualmente al segundo) por Winbox pero con una conexión VPN. No quiero tener que instalar certificados y me gustaría que fuera ejecutable desde la app de Android aparte desde un PC Windows. No tengo mucha fe en la PPPTP por seguridad evidentemente, hasta ahora he usado SSTP con certificados pero no es aplicable a un Android. ¿Qué VPN recomendáis para ello que no sea complicada de instalar, accesible desde varios sistemas y sin certificados?

Por otro lado, al tener un router de fibra Orange (y como dije en el post quiero dejarlo sin tocar), me obliga a abrir un DMZ en ese router redirigido a mi MK principal. He cerrado todos los servicios innecesarios del mismo y he habilitado el acceso a Winbox por la LAN añadiendo también el rango de IP de la misma por si acaso. He hecho un escaneo de puertos y me sale todo cerrado, incluso si abro un puerto de prueba (VNC redirigido a uno de mis ordenadores, que funciona pero no da como abierto en los test de escaneo de puertos), ya que el NATeo lo tengo con un netmap. ¿Está así correcta la configuración? A mi parecer sí ya que accedo al dispositivo destino del nateo y no aparece nada abierto, pero tengo esa duda.

Gracias.
 
Prueba con L2TP sobre ipsec. Eso debería funcionar en cualquier lado y darte un acceso puntual al equipo sin problemas.
Lo que comentas de los puertos cerrados y el DMZ lo veo bien. No obstante, cuando lo dejes todo listo, pásame un export del firewall y lo vemos.

Saludos!
 
Prueba con L2TP sobre ipsec. Eso debería funcionar en cualquier lado y darte un acceso puntual al equipo sin problemas.
Lo que comentas de los puertos cerrados y el DMZ lo veo bien. No obstante, cuando lo dejes todo listo, pásame un export del firewall y lo vemos.

Saludos!

Hola, funciona estupendamente. Muchas gracias.

La duda es: ¿Cómo extender el acceso por Winbox desde fuera con la VPN al resto de dispositivos que hubieran, tendría que crear una VLAN de "management"? ¿De qué manera lo podría hacer?

En cuanto al acceso a Winbox, me gustaría caparlo a nivel de raw pero no veo la forma sin que me cape el acceso por la VPN con el móvil.

Añado mi export:

Enriquecido (Código BB):
/interface bridge add igmp-snooping=yes ingress-filtering=yes name=bridge1 vlan-filtering=yes
/interface ethernet set [ find default-name=ether23 ] comment="UPLINK TRUNK A ROUTER EDGE"
/interface ethernet set [ find default-name=ether24 ] comment=WAN
/interface vlan add interface=bridge1 name=vlan88 vlan-id=88
/interface list add name=WAN
/interface list add name=LAN
/ip pool add name=pool-vlan88 ranges=10.10.10.10-10.10.10.200
/ip pool add name=pool-LAN ranges=192.168.0.100-192.168.0.200
/ip pool add name=pool-L2TP ranges=192.168.66.10-192.168.66.20
/ip dhcp-server add address-pool=pool-vlan88 disabled=no interface=vlan88 lease-time=2h name=dhcp-server-vlan88
/ip dhcp-server add address-pool=pool-LAN disabled=no interface=bridge1 lease-time=1d2h name=dhcp-server-LAN
/ppp profile add change-tcp-mss=yes interface-list=LAN local-address=192.168.66.1 name=vpn-l2tp remote-address=pool-L2TP use-encryption=yes
/interface bridge port add bridge=bridge1 comment=AP1 ingress-filtering=yes interface=ether1
/interface bridge port add bridge=bridge1 comment=AP2 ingress-filtering=yes interface=ether2
/interface bridge port add bridge=bridge1 comment=AP3 ingress-filtering=yes interface=ether3
/interface bridge port add bridge=bridge1 comment=AP4 ingress-filtering=yes interface=ether4
/interface bridge port add bridge=bridge1 comment=AP5 ingress-filtering=yes interface=ether5
/interface bridge port add bridge=bridge1 comment=AP6 ingress-filtering=yes interface=ether6
/interface bridge port add bridge=bridge1 comment=AP7 ingress-filtering=yes interface=ether7
/interface bridge port add bridge=bridge1 comment=AP8 ingress-filtering=yes interface=ether8
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether9
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether10
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether11
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether12
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether13
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether14
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether15
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether16
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether17
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether18
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether19
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether20
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether21
/interface bridge port add bridge=bridge1 comment="UPLINK TRUNK A SWITCH EDGE" ingress-filtering=yes interface=ether23
/interface bridge port add bridge=bridge1 frame-types=admit-only-untagged-and-priority-tagged ingress-filtering=yes interface=ether22
/ip neighbor discovery-settings set discover-interface-list=LAN
/interface bridge vlan add bridge=bridge1 tagged=bridge1,ether1,ether2,ether3,ether4,ether5,ether6,ether7,ether8,ether23 vlan-ids=88
/interface l2tp-server server set authentication=mschap2 default-profile=vpn-l2tp enabled=yes use-ipsec=yes
/interface list member add interface=bridge1 list=LAN
/interface list member add interface=ether24 list=WAN
/ip address add address=10.10.10.1/24 comment=Invitados interface=vlan88 network=10.10.10.0
/ip address add address=192.168.0.1/24 comment=LAN interface=bridge1 network=192.168.0.0
/ip address add address=192.168.1.2/24 interface=ether24 network=192.168.1.0
/ip cloud set ddns-enabled=yes
/ip dhcp-server network add address=10.10.10.0/24 dns-server=8.8.8.8,8.8.4.4 gateway=10.10.10.1
/ip dhcp-server network add address=192.168.0.0/24 dns-server=8.8.8.8,8.8.4.4 gateway=192.168.0.1
/ip dns set servers=1.1.1.1,8.8.8.8
/ip firewall filter add action=drop chain=forward comment="Impide comunicacion entre la VLAN de invitados y la LAN" in-interface=bridge1 out-interface=vlan88
/ip firewall filter add action=drop chain=forward comment="Impide comunicacion entre la VLAN de invitados y la LAN" in-interface=vlan88 out-interface=bridge1
/ip firewall filter add action=accept chain=input comment="Permite IPSEC" dst-port=500,4500 protocol=udp
/ip firewall filter add action=accept chain=input comment="Permite L2TP" dst-port=1701 protocol=udp
/ip firewall filter add action=accept chain=input comment="Aceptar input de established,related,untracked" connection-state=established,related,untracked
/ip firewall filter add action=drop chain=input comment="Drop input de paquetes invalidos" connection-state=invalid
/ip firewall filter add action=drop chain=forward comment="Drop forward de paquetes invalidos" connection-state=invalid
/ip firewall filter add action=accept chain=input comment="Aceptar input de IGMP (multicast) desde la WAN" in-interface-list=WAN protocol=igmp
/ip firewall filter add action=accept chain=input comment="Aceptar ICMP" limit=10,5:packet protocol=icmp
/ip firewall filter add action=accept chain=output comment="Aceptar output de IGMP (multicast) desde la WAN" out-interface=ether24 protocol=igmp
/ip firewall filter add action=fasttrack-connection chain=forward comment="Habilitar fasttrack" connection-state=established,related
/ip firewall filter add action=accept chain=forward comment="Aceptar forward de established,related, untracked" connection-state=established,related,untracked
/ip firewall filter add action=drop chain=forward comment="Drop todo lo de la WAN no DSTNATed" connection-mark=!multicast connection-nat-state=!dstnat connection-state=new in-interface-list=WAN log=yes log-prefix="NO NAT->"
/ip firewall mangle add action=mark-connection chain=prerouting comment="Marca trafico multicast" dst-address=224.0.0.0/4 new-connection-mark=multicast passthrough=yes
/ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN
/ip route add distance=1 gateway=192.168.1.1
/ip service set telnet disabled=yes
/ip service set ftp disabled=yes
/ip service set www disabled=yes
/ip service set ssh disabled=yes
/ip service set api disabled=yes
/ip service set api-ssl disabled=yes
/ppp secret add name=vayacohone profile=vpn-l2tp service=l2tp
/routing igmp-proxy set quick-leave=yes
/routing igmp-proxy interface add alternative-subnets=0.0.0.0/0 interface=ether24 upstream=yes
/routing igmp-proxy interface add interface=bridge1
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN
 
Yo haría un drop de todo lo que no fuera LAN en el chain de input, tal y como hacen las reglas por defecto del mikrotik. Te paso un ejemplo de un firewall casi por defecto:

Código:
/ip firewall filter
add action=accept chain=input comment="defconf: accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="allow ipsec" dst-address-list=public-ips dst-port=500,4500 \
    protocol=udp
add action=accept chain=input comment="allow ipsec-esp" dst-address-list=public-ips protocol=ipsec-esp
add action=accept chain=input comment=allow-ipsec-rw ipsec-policy=in,ipsec src-address=192.168.89.0/24
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=\
    established,related
add action=accept chain=forward comment="defconf: accept established,related, untracked" \
    connection-state=established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=\
    !dstnat connection-state=new in-interface-list=WAN


Para permitir el acceso en input al router cuando estás en VPN, tienes dos opciones:
Opción A) Como ves en ese ejemplo, que se acepta el tráfico del segmento de la VPN (192.168.89.0/24; podrías afinar incluso a meter la IP que otorgues sólo a tu equipo remoto, modificando el perfil por defecto)

Opción B) modificando (o clonando) el perfil por defecto "default-encryption" que puedes encontrar en el apartado PPP y diciendo que las conexiones que usen ese perfil, se metan en la lista LAN (interface-list=LAN), para que no les afecte la regla de drop que dice "drop all not coming from LAN"

Saludos!
 
Yo haría un drop de todo lo que no fuera LAN en el chain de input, tal y como hacen las reglas por defecto del mikrotik. Te paso un ejemplo de un firewall casi por defecto:

Hola, en todo caso me serviría haciendo una excepción con los inputs del tráfico multicast que marco previamente con el mangle.

Para permitir el acceso en input al router cuando estás en VPN, tienes dos opciones:
Opción A) Como ves en ese ejemplo, que se acepta el tráfico del segmento de la VPN (192.168.89.0/24; podrías afinar incluso a meter la IP que otorgues sólo a tu equipo remoto, modificando el perfil por defecto)

Ya accedo al router, igual no me he explicado bien, lo que quiero es acceder al resto de dispositivos de Mikrotik (tengo un switch esclavo CRS326 conectado por un trunk al principal). Ahora solo accedo al principal, quería saber cómo poder acceder por la VPN al segundo (o tercero o cuarto si hubiera).

Opción B) modificando (o clonando) el perfil por defecto "default-encryption" que puedes encontrar en el apartado PPP y diciendo que las conexiones que usen ese perfil, se metan en la lista LAN (interface-list=LAN), para que no les afecte la regla de drop que dice "drop all not coming from LAN"
Ya lo hago si te fijas en el código, en la línea:

Código:
/ppp profile add change-tcp-mss=yes interface-list=LAN local-address=192.168.66.1 name=vpn-l2tp remote-address=pool-L2TP use-encryption=yes
 
Para los siguientes dispositivos, puedes activar RoMon y quizá acceder desde el principal.

Saludos!
 
Una cosa, tengo el router Orange como DMZ a la IP de mi Mikrotik (192.168.1.2) y por tanto el filtraje del tráfico de red lo realiza este último.

Veo en los logs que está parando numerosos INPUTs al propio MK, a pesar de que lo está haciendo y teniendo en cuenta que tras hacer un GEO IP numerosas IPs son de Bulgaria y Rusia... me quedaría más tranquilo pudiendo bloquear esas IPs que intentan acceder a distintos puertos del MK metiéndolas en una lista dinámica y denegando su acceso en el RAW para quitar carga al dispositivo y para quedarme más tranquilo que no se puedan meter por algún recoveco.

Sé cómo hacerlo para determinados puertos concretos, del tipo de la protección del ataque de fuerza bruta, pero no sé si es posible hacerlo para una conexión de la misma IP a puertos aleatorios del MK y no sé si se puede hacer con seguridad de no bloquear otras conexiones legítimas.

¿Os ha pasado alguna vez? ¿Se puede poner remedio?

Gracias.

Nota: lo inserto como código porque no sé cómo añadir un archivo de texto, lo siento.

Código:
Jul/14/2021 18:23:14 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 167.248.133.76:23366->192.168.1.2:5999, len 44
Jul/14/2021 18:23:15 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 45.61.186.207:34259->192.168.1.2:11211, len 44
Jul/14/2021 18:23:15 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:12169, len 44
Jul/14/2021 18:23:22 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 192.241.219.187:40135->192.168.1.2:443, len 44
Jul/14/2021 18:23:26 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 65.49.20.91:40627->192.168.1.2:548, len 44
Jul/14/2021 18:23:36 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 192.241.222.202:41801->192.168.1.2:443, len 44
Jul/14/2021 18:23:44 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 74.120.14.92:52755->192.168.1.2:38880, len 44
Jul/14/2021 18:23:56 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:22254, len 44
Jul/14/2021 18:24:23 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:1218, len 44
Jul/14/2021 18:24:26 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:7994, len 44
Jul/14/2021 18:24:35 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:8047, len 44
Jul/14/2021 18:24:41 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:33291, len 44
Jul/14/2021 18:24:52 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:15219, len 44
Jul/14/2021 18:24:57 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 185.191.34.207:40589->192.168.1.2:21000, len 44
Jul/14/2021 18:24:58 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 45.155.205.123:42762->192.168.1.2:22127, len 44
Jul/14/2021 18:25:09 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:42317, len 44
Jul/14/2021 18:25:10 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:56079, len 44
Jul/14/2021 18:25:16 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 66.240.192.138:29011->192.168.1.2:7777, len 44
Jul/14/2021 18:25:30 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:28106, len 44
Jul/14/2021 18:25:34 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 193.57.40.49:49897->192.168.1.2:2033, len 44
Jul/14/2021 18:25:40 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 45.155.205.123:42762->192.168.1.2:1723, len 44
Jul/14/2021 18:25:44 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 34.140.49.103:49398->192.168.1.2:5432, len 44
Jul/14/2021 18:25:53 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:2824, len 44
Jul/14/2021 18:25:55 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 79.124.62.186:48837->192.168.1.2:55618, len 44
Jul/14/2021 18:26:09 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 154.89.5.18:58914->192.168.1.2:9080, len 44
Jul/14/2021 18:26:19 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 195.54.160.155:59106->192.168.1.2:2253, len 44
Jul/14/2021 18:26:21 firewall,info INPUT-: input: in:ether24 out:(unknown 0), src-mac MAC_DEL_ROUTER_ORANGE, proto TCP (SYN), 117.73.11.230:51334->192.168.1.2:600, len 44
 
Te diría meter las IPs que te molestan en una lista (ip única o subred entera), y de ahí al raw y al carajo.
Ejemplo:
Código:
/ip firewall address-list
add address=216.218.206.0/24 list=banned
/ip firewall raw
add action=drop chain=prerouting src-address-list=banned

Sino, en lugar de poner una DMZ, abre los puertos específicos que vayas a usar en el primer router y se los mandas al mikrotik. Así, algo te quitará el primer filtro.

Saludos!
 
Ya, pero quería algo automático... no tener que estar mirando al log (o hacer un drop por geoip).

La cosa es que el primer router es un Orange y no puedo abrir puertos específicos sin hacer doble NAT.
 
Arriba