¿Cuál es la forma más recomendada de exponer un archivo a una computadora en una red externa de manera segura?

3

Tengo dos máquinas en una red interna. Uno es un servidor de desarrollo, que está aislado de las comunicaciones externas (ni a través de HTTP, HTTPS, SSH, etc.). El último es un servidor de producción (que ya tiene un servidor web instalado y que maneja una aplicación web desarrollada por otra persona) al que se puede acceder desde redes externas a través de SSH y HTTP / HTTPS.

Tengo una rutina que consulta una base de datos todos los días y genera un informe de Excel (archivo .xlsx) automáticamente. La información que tiene este informe no es crítica ni confidencial, pero sí es privada, por lo que me gustaría mantenerla confidencial si es posible (para que ningún agente externo pueda acceder a ella).

Tengo la necesidad de exponer este archivo de Excel para que pueda ser descargado por una máquina en una red externa.

He considerado desarrollar una pequeña aplicación web para que la máquina externa pueda conectarse a una ruta fija a través de un navegador (digamos ip_address / hash_salt) para descargar el nuevo archivo todos los días (usando un nombre de usuario y una contraseña).

Hago esta pregunta para preguntar si existe una solución alternativa (tal vez utilizando SSH o SFTP u otro protocolo) que me permita lograr lo mismo de una manera segura (no considero compartir un archivo a través de HTTP / HTTPS seguro por sí mismo, pero podría estar equivocado, por supuesto).

¿Hay una forma recomendada de lograr este intercambio de archivos? Por favor, hágamelo saber.

    
pregunta addictedtohaskell 18.09.2017 - 18:44
fuente

1 respuesta

1

HTTPS con autenticación

Si bien HTTPS se basa en la infraestructura PKI, lo que la hace potencialmente vulnerable a las AC no autorizadas, es perfectamente adecuada para el material "confidencial pero no altamente sensible". El uso de la autenticación HTTP básica envía la contraseña al servidor y, cuando se usa TLS, también se cifra. Esto le proporcionará algunas garantías que necesitará cuando maneje información confidencial:

  • ¿La entidad que solicita el acceso tiene permiso para acceder a este material?
  • ¿Puede una entidad autorizada asegurarse de que el material que se está enviando no ha sido manipulado en el cable?
  • ¿Puede un espía activa / pasiva ver el material mientras se envía a una entidad autorizada?

Cualquier buena forma de autenticación resuelve la primera pregunta, y TLS resuelve las dos segundas. No es necesario usar la autenticación básica específicamente (ya que tiene sus limitaciones, es bastante simple y no es ideal para almacenar contraseñas confidenciales creadas por el usuario y potencialmente reutilizadas), siempre que exista un sistema de autenticación simple para garantizar que solo los que deben descargar pueden hacerlo.

Certificados de cliente

Dependiendo de la importancia de la confidencialidad de este material y, en parte, de la poca información sobre "cero conocimientos de TI", también puede utilizar certificados de cliente cifrados. Estos son certificados generados por usted o por el cliente, y almacenados en el navegador del cliente. No es difícil para un usuario final configurarlos y usarlos, pero requiere un poco más de esfuerzo del que el usuario normal de Internet está acostumbrado. Requiere abrir la configuración de su navegador e importar el archivo de certificado del cliente, que abrirá un aviso para crear una nueva contraseña para cifrarlo. Cuando luego accedan a su sitio a través de HTTPS, su navegador le pedirá la contraseña del certificado y, si es correcta, utilizará el certificado para autenticarlos en su sitio web. Este es, con mucho, el método de autenticación basado en navegador más seguro, ya que el cliente se autentica ante el servidor y el servidor se autentica ante el cliente.

Asegurar una conexión TLS

Si terminas usando HTTPS, deberías seguir mejores prácticas de seguridad para la implementación de TLS:

  • Use una clave privada segura (2048 bits o RSA más grande), firmada por una CA acreditada (por ejemplo, LetsEncrypt).
  • Deshabilite las suites de cifrado inseguras (como las de los modos SSLv2-3 y no PFS).
  • Evite utilizar módulos pequeños o predeterminados si usa DHE, o simplemente use ECDHE.
  • Fije el estado HTTPS mediante el uso de HSTS, idealmente con la precarga de HSTS.
  • Use HPKP para fijar la clave pública precisa que usa. Esto es seguro siempre que utilice una clave de respaldo.
  • Use el grapado OSCP para verificar los certificados revocados.
  • Haga una política de CSP estricta y otras medidas anti-XSS para reducir el riesgo de ataques XSS.
  • Si es práctico y factible, exija que los usuarios del sitio utilicen un navegador actualizado.
  • Pruebe su sitio regularmente con Test SSL de Qualys . Seriamente. Es un servicio increíble.

Si bien esto no es todo un deber absoluto, mejora significativamente la seguridad de toda la situación más cercana a la de SSH, al tiempo que conserva la accesibilidad para los discapacitados tecnológicamente. En un mínimo absoluto , se deben seguir los primeros cuatro puntos y el último.

    
respondido por el forest 30.12.2017 - 12:18
fuente

Lea otras preguntas en las etiquetas