Un host exporta un directorio a una dirección VPN, el montaje funciona y el diseño queda documentado como autenticado. Lo que esa regla limita en realidad es de dónde parecen venir los paquetes. Que la persona que impulsa la operación de archivos sea quien dice ser depende del sabor de seguridad de NFS, y en la mayoría de las exportaciones de este tipo nadie lo cambió respecto del valor predeterminado.

Tres identidades pueden aparecer en una sola solicitud

El par de VPN lleva una identidad inscrita, como un certificado de cliente o una clave de par. El paquete IP interno lleva una dirección de origen. La operación de archivos lleva las credenciales de usuario que aporte su mecanismo NFS. Un diseño que trata la dirección como sustituto de las tres ha asumido en silencio justo la parte que debía verificar.

IdentityWhat it provesWhat it does not
VPN peerWhich peer was accepted by the tunnelWhich user runs on that machine
Inner source addressWhere the packet appears to originateThat only the intended client can use it
NFS credentialWhat the file service believes about the callerAnything, if the flavour only asserts local IDs

Escribir esas tres filas es todo el ejercicio. La mayor parte de la discusión sobre si una exportación es segura se derrumba en cuanto queda claro en qué fila vive cada control.

La propiedad de la dirección es un detalle de implementación

Una pasarela puede asignar una dirección de túnel a un par aceptado o autorizar una subred enrutada para él. Que luego la implementación rechace un paquete cuyo origen interno pertenece a otro cliente es una propiedad de esa implementación, y conviene comprobarlo en lugar de suponerlo.

El código de servidor en espacio de usuario del Community tradicional OpenVPN puede, por ejemplo, rechazar un origen asociado a otro cliente antes de que el paquete se entregue por el dispositivo TUN. Eso es una comprobación de propiedad de dirección con valor real, y sigue sin ser autenticación de usuario NFS, porque no dice nada sobre qué cuenta realiza la operación.

La traducción de origen erosiona incluso eso. Una pasarela NAT puede presentar cada cliente como una sola dirección, y entonces una regla de exportación no puede distinguir a las personas que hay detrás. La precisión aparente de la regla se convierte luego en una ficción que mantiene el diagrama. Si la exportación importa, mantenga el direccionamiento explícito en lugar de dejar que un traductor decida quién cuenta como quién.

Lea el sabor de seguridad antes de confiar en la exportación

La guía de NFS de Red Hat separa sec=sys, que usa UID y GID de UNIX locales mediante AUTH_SYS, de los modos Kerberos. krb5 añade autenticación de usuario, krb5i añade protección de integridad y krb5p añade protección de privacidad para el tráfico.

La credencial AUTH_SYS contiene campos como el UID del llamante y los identificadores de grupo, y el RFC 5531 advierte claramente de que este sabor no proporciona seguridad por sí mismo y depende de protección externa. Ejecutarlo dentro de una VPN aporta protección para el transporte y no cambia nada en la afirmación dentro del paquete.

exportfs -v
showmount -e nfs.example.internal

Lea el sabor en esa salida antes de leer la lista de clientes. Una exportación que parece restringida puede estarlo solo por dirección mientras cada llamante sigue afirmando el UID que le apetece.

Elija el modelo y luego conserve los permisos

Elija el modelo de autenticación del servicio de archivos adecuado para los clientes que realmente administra. Kerberos exige una identidad y un despliegue de servicio detrás, así que cambiar una opción de montaje no es una migración y sencillamente fallará hasta que existan el dominio Kerberos, los principales y los keytabs.

Con cualquiera de los dos modelos, conserve los permisos de exportación y la autorización del sistema de archivos que limitan lo que puede hacer el principal autenticado. La autenticación le dice quién pregunta; la autorización decide si la respuesta debe ser sí. Fundir ambas en un solo ajuste es como una migración acaba concediendo más de lo que concedía la configuración anterior.

Use la regla de dirección para su propósito real

Restringir el servicio a la ruta y las fuentes aprobadas sigue mereciendo la pena, incluida la política de entrada del host cuando el extremo de la VPN y el servidor NFS comparten máquina. Las reglas que reenvían tráfico no gobiernan las solicitudes dirigidas a un servicio que se ejecuta localmente en el mismo host. Esa laguna explica un número sorprendente de exportaciones que pretendían ser privadas. Compruebe explícitamente la política de entrada local en lugar de suponer que las reglas del túnel la cubren.

Compruebe que otra interfaz o una pasarela con traducción de origen no pueda satisfacer la regla de forma inesperada, y trate eso como razón para establecer la procedencia y no como la afirmación de que falsificar una dirección garantiza un montaje funcional.

Ejecute tres casos de aceptación en lugar de uno. Empiece con un cliente aprobado actuando como usuario aprobado, repita después desde un par que nunca fue aprobado y luego intente algo que el usuario aprobado todavía no puede hacer. Pregunte después qué cambia si se compromete un cliente autorizado, porque la autenticación de transporte no hace fiable cada proceso de esa máquina. Un certificado robado y una cuenta local curiosa son problemas distintos con controles distintos.

Artículos relacionados