Permitir TCP 873 en la interfaz del túnel no empuja rsync a través de OpenVPN, ni hace que el extremo remoto acepte el módulo. Un túnel transporta una conexión interna cuyas reglas de protocolo y destino siguen exactamente como estaban. Por eso la primera pregunta no es qué puerto abrir, sino qué tipo de conexión establece rsync. Todo lo que sigue supone que el túnel ya está levantado y que solo el servicio interno sigue en duda.

Decida qué conexión establece rsync en realidad

El argumento remoto del comando suele responder a esa pregunta antes de cualquier cambio en el cortafuegos. Un doble dos puntos o un esquema de URL elige el demonio, mientras que un solo dos puntos tras un nombre de host elige un shell remoto. Lea el argumento que realmente ejecuta, no el del ejemplo de la documentación.

Una opción explícita de shell remoto puede cambiar de nuevo la respuesta, porque le dice a rsync qué programa lanzar para el transporte. Lea toda la línea de comandos, incluidos los guiones envoltorio heredados, no solo la parte del host.

Remote argumentWhat it opens
rsync://vault.corp.internal/archive/rsync daemon, normally TCP 873
vault.corp.internal::archive/rsync daemon, normally TCP 873
[email protected]:/srv/archive/Remote shell, normally SSH on its configured port

Modo demonio: dirección de enlace, módulo y puerto

En la sintaxis de demonio, el segmento de ruta nombra un módulo configurado, no un directorio del disco. La contraseña del módulo solo se comprueba después de aceptar la conexión, y el módulo puede además ser de solo lectura o estar oculto en el listado. Ese orden importa al leer un error, porque una conexión rechazada y un módulo rechazado son fallos en dos etapas distintas. Ninguno de los dos mensajes le dice nada sobre el túnel en sí.

Un demonio independiente puede fijarse a la dirección del túnel en su archivo de configuración, lo que lo mantiene fuera de la interfaz pública sin ninguna regla de cortafuegos. El valor debe existir cuando el demonio se enlaza, y un oyente activado por socket o gestionado por inetd puede ignorarlo por completo.

address = 10.44.0.1
port = 873
[archive]
    path = /srv/archive
    read only = yes

Después pruebe contra la dirección privada en lugar del nombre público. Un nombre de host público se resuelve a una dirección WAN y recorre una ruta distinta, incluso cuando una sola máquina responde en ambas.

rsync --list-only rsync://10.44.0.1/archive/

Modo de shell remoto: SSH transporta la transferencia

Con un solo dos puntos, rsync inicia un programa de shell remoto y habla su protocolo por ese canal, así que el único servicio alcanzable es SSH en el puerto que escuche el servidor. El demonio de rsync nunca se ejecuta, el puerto 873 es irrelevante y la decisión de acceso pasa a ser una decisión de cuenta SSH. La ruta remota es entonces una ruta real del sistema de archivos interpretada por el shell del otro lado. Por eso un cambio de cortafuegos dirigido al 873 no hace absolutamente nada para este modo.

Ese diseño necesita una cuenta autorizada y la verificación de la clave del host, y hereda la propia política de autenticación de SSH. A menudo es la mejor opción cuando la transferencia debe cruzar una red no confiable, porque el cifrado pertenece a un protocolo creado para ello. Un demonio con solicitud de contraseña no es lo mismo.

Abra solo la ruta que eligió

Una vez fijado el modo, permita el único servicio interno en la única interfaz que transporta el túnel. Limite la regla por interfaz, grupo de origen y dirección de destino para que un cambio posterior de denegación por defecto no pueda ampliarla en silencio. Revise después el orden de las reglas, porque una regla permisiva anterior en la cadena hace que la estrecha sea decorativa.

Si el demonio se ejecuta en una máquina detrás de la puerta de enlace VPN y no en la puerta misma, la puerta necesita también una ruta de reenvío y el objetivo necesita su propio permiso y ruta de retorno. Abrir el puerto solo en la puerta produce una conexión que se acepta y luego no va a ninguna parte.

Verifique desde el cliente con el mismo modo y destino que piensa usar en producción. Un listado correcto demuestra juntos el oyente, la ruta y la regla; un tiempo de espera apunta a la ruta, y un rechazo apunta al oyente.

ufw allow in on tun0 from 10.44.0.0/24 to 10.44.0.1 port 873 proto tcp
ss -ltnp | grep 873

Artículos relacionados