¿Debo exponer un servidor en OpenWrt a WAN o sólo a LAN con reenvío de puertos desde WAN?

¿Debo exponer un servidor en OpenWrt a WAN o sólo a LAN con reenvío de puertos desde WAN?

Si instalé un servidor en una computadora detrás de un enrutador y quisiera permitir la conexión desde Internet, tendría que hacer dos cosas: una, abrir el firewall en la máquina del servidor para permitir la conexión entrante; y dos, configurar una regla de reenvío de puertos en el enrutador para que la conexión pueda pasar de WAN a LAN (específicamente a la máquina servidor).

Pero, ¿qué debo hacer si la máquina servidor en cuestión es el enrutador que se ejecuta en OpenWrt?

Puedo pensar en dos opciones.

Opción A. Trate el enrutador como cualquier otra computadora en la LAN. Después de instalar el servidor en el enrutador, abra el firewall para permitir la conexión entrante desde la LAN al servidor. (Creo que esto se hace en LuCI > Red > Firewall > Reglas de tráfico). Luego, configure una regla de reenvío de puertos de WAN a LAN (específicamente el servidor). (LuCI > Red > Firewall > Reenvío de puertos).

Opción B. Utilice la pestaña Reglas de tráfico de LuCI para abrir el firewall para la conexión desde WAN directamente al servidor.

Las preguntas son:

  1. ¿Tengo razón al pensar que estas son las dos opciones que puedo considerar?

  2. ¿Cuáles serían los pros y los contras de cada lado?

  3. ¿Cuál es la práctica estándar?

El servidor en cuestión puede ser un servidor VPN (por ejemplo, Wireguard) u OpenSSH, que puedo instalar en lugar de Dropbear. Pero surgiría la misma pregunta si instalara un servidor de transmisión A/V en OpenWrt (suponiendo que sea posible). En otras palabras, quiero que esta pregunta siga siendo genérica sobre las dos opciones anteriores en lugar de limitarse a un software en particular (Wireguard, etc.).

Soy nuevo tanto en OpenWrt como en Linux. No sabía que existía OpenWrt hasta hace unos días. Es posible que la opción A sea una locura (algo que nadie hace nunca) y que a mi cerebro solo se le ocurrió porque nunca antes había visto algo como OpenWrt y solo puede pensar en términos de "enrutador normal".

En realidad, eso me hace pensar que la opción A puede tener esta ventaja. De hecho, ya he reenviado puertos antes, pero el firewall de Linux es nuevo para mí. Así que podría concentrarme en las reglas de tráfico, y sería mejor si el error ocurriera solo en LAN.

Por favor avise. Gracias.

APÉNDICE

Estas son capturas de pantalla de LuCI que ilustran la opción A (izquierda) y B (derecha). El panel izquierdo supone que el puerto 12000 se ha abierto a la LAN (ya sea por política predeterminada o por regla de tráfico específica). 192.168.1.1. es la dirección IP de LAN del enrutador.

ingrese la descripción de la imagen aquí

Respuesta1

(Aunque no es evidente en algunos navegadores, cada ruta de archivo es un enlace)

Para SSH, la práctica estándar es especificar unADNTregla [reenvío de puerto] a la red interna en la que reside; mientras que para el servidor VPN, crearías una regla para permitir el acceso WAN a su puerto de servidor:

  • Contenido Wiki
  • SSH:
    • /etc/config/firewall:
      #
      
          ##::[[---  OpenWrt WAN Firewall Config  ---]]::##
      
      #===========================================================
                    ##----- NAT Redirects -----##
      #===========================================================
      
      # SSH #
      #-----------------------------------------------------------
      config redirect
          option  target          'DNAT'
          option  proto           'tcp'
          option  src             'wan'
          option  src_dport       60501
          option  dest            'lan'
          option  dest_ip         192.168.1.1
          option  dest_port       22
          option  name            'Allow Redirect WAN → LAN (SSH)'
      
      config redirect
          option  target          'DNAT'
          option  proto           'tcp'
          option  src             'vpn'
          option  src_dport       60502
          option  dest            'lan'
          option  dest_ip         192.168.1.1
          option  dest_port       22
          option  name            'Allow Redirect Wireguard → LAN (SSH)'
      
      #===========================================================
                        ##----- VPN Zones -----##
      #===========================================================
      
      # Wireguard #
      #-----------------------------------------------------------
      config zone
          option  name            'vpn'
          option  network         'vpn'
          option  input           'ACCEPT'
          option  forward         'ACCEPT'
          option  output          'ACCEPT'
          option  log             1
      
      # Rules:
      #-----------------------------------------------------------
      config rule
          option  target          'ACCEPT'
          option  proto           'tcp udp'
          option  src             'wan'
          option  dest            '*'
          option  dest_port       51820
          option  name            'Allow Forwarded Wireguard → Router'
      
      config rule
          option  target          'ACCEPT'
          option  proto           'tcp'
          option  src             'vpn'
          option  dest            '*'
          option  dest_port       60502
          option  name            'Allow Wireguard → Router (SSH)'
      

    • /etc/config/dropbear:
      #
      
            ##::[[---  OpenWrt DropBear Config  ---]]::##
      
      #===========================================================
                       ##----- Default -----##
      #===========================================================
      
      # Server #
      #-----------------------------------------------------------
      config dropbear
          option  enable            1
          option  Interface         'lan'
          option  PasswordAuth      'off'
          option  RootPasswordAuth  'off'
          option  IdleTimeout       0
          option  Port              22
          option  RootLogin         1
          option  SSHKeepAlive      300
          option  verbose           1
      

    • /etc/ssh/sshd_config: (Personalizado)
      #
      
          ##::[[---  OpenWrt OpenSSH SSHd Config  ---]]::##
      
      #===========================================================
                    ##----- Global Options -----##
      #===========================================================
      
        # Please verify, as all algorithms may not supported:
      
          # Ciphers:                  # HostKey & KeyTypes
            ## ssh -Q cipher            ## ssh -Q key
      
          # Kex [Key Exchange]        # MAC [Message Authentication Code]
            ## ssh -Q kex               ## ssh -Q mac
      
      
      # Connection #
      #-----------------------------------------------------------
      AddressFamily                     = inet
      ListenAddress                     = 192.168.1.1:22
      
      
      # Encryption #
      #-----------------------------------------------------------
      AuthorizedKeysFile                = /root/.ssh/authorized_keys
      
      HostKey                           = /etc/ssh/ssh_host_ed25519_key
      HostKey                           = /etc/ssh/ssh_host_rsa_key
      
      
      # Authentication #
      #-----------------------------------------------------------
      AllowUsers                        = root
      AllowGroups                       = root
      
      ChallengeResponseAuthentication   = no
      PasswordAuthentication            = no
      PermitEmptyPasswords              = no
      
      StrictModes                       = yes
      PubkeyAuthentication              = yes
      
      LoginGraceTime                    = 30
      
      MaxAuthTries                      = 3
      MaxSessions                       = 10
      MaxStartups                       = 3:30:10
      
      PermitRootLogin                   = prohibit-password
      
      
      # Reliability #
      #-----------------------------------------------------------
      ClientAliveCountMax               = 3
      ClientAliveInterval               = 600
      
      TCPKeepAlive                      = yes
      
      UseDNS                            = yes
      
      
      # Security #
      #-----------------------------------------------------------
      AllowAgentForwarding              = yes
      AllowTcpForwarding                = yes
      
      GatewayPorts                      = clientspecified
      PermitTunnel                      = yes
      
      Subsystem   sftp                  = /usr/lib/sftp-server
      
      RekeyLimit                        = 500M 60m
      
      
      # Logging #
      #-----------------------------------------------------------
      SyslogFacility                    = AUTH
      LogLevel                          = VERBOSE
      
      PidFile                           = /tmp/run/sshd.pid
      
      
      # Ciphers and ReKeying #
      #-----------------------------------------------------------
      FingerprintHash                   = sha256
      
      Ciphers                           = [email protected],[email protected],aes128-ctr,aes128-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc,[email protected]
      
      HostKeyAlgorithms                 = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      
      HostbasedAcceptedKeyTypes         = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      
      KexAlgorithms                     = [email protected],curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
      
      MACs                              = [email protected],[email protected],hmac-sha2-256,hmac-sha2-512
      
      PubkeyAcceptedKeyTypes            = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      

  • luci:
    1. https://<router IP>Red (menú de la izquierda)Cortafuegos
    2. Normas de tráfico
      1. AGREGAR:
        Nombre: Allow Forwarded Wireguard → Router
        Protocolo: TCP UDP
        Zona de origen: wan
        Zona de Destino: Any zone (forward)
        Puerto de destino: 51820
        Acción: accept
        AHORRAR
      2. AGREGAR:
        Nombre: Allow Wireguard → Router (SSH)
        Protocolo: TCP
        Zona de origen: vpn
        Zona de Destino: Any zone (forward)
        Puerto de destino: 60502
        Acción: accept
        AHORRAR

    3. Puerto hacia adelante
      1. AGREGAR:
        Nombre: Allow Redirect WAN → LAN (SSH)
        Protocolo: TCP
        Zona de origen: wan
        Puerto externo: 60501
        Zona de Destino: lan
        Dirección IP interna: 192.168.1.1
        Puerto interno: 22
        Acción: accept
        AHORRAR
      2. AGREGAR:
        Nombre: Allow Redirect VPN → LAN (SSH)
        Protocolo: TCP
        Zona de origen: vpn
        Puerto externo: 60502
        Zona de Destino: lan
        Dirección IP interna: 192.168.1.1
        Puerto interno: 22
        Acción: accept
        AHORRAR

    4. GUARDAR Y APLICAR

información relacionada