descifrado automatizado

4

Necesito almacenar credenciales en mi servidor raíz privado para ejecutar algunas tareas automatizadas como la transferencia de archivos desde servidores remotos a través de sftp, etc. Es posible que use shell scripting o tal vez php para ejecutar esas tareas automatizadas, activadas por un trabajo cron.

Ahora tengo que asegurarme de que nadie que ingrese a mi servidor pueda leer las credenciales almacenadas. Mi primer pensamiento fue simplemente cifrar los datos y descifrarlos sobre la marcha cuando sea necesario. Pero luego tendré el mismo problema con la clave: debe almacenarse en algún lugar del servidor. Por lo tanto, un invasor podrá encontrar la clave y utilizarla para descifrar las credenciales de todos modos.

¿Hay un patrón o una solución estándar para este tipo de problema?

    
pregunta AvL 01.10.2015 - 19:14
fuente

2 respuestas

6

Lo que estás pidiendo es imposible. Si el servidor puede descifrar los datos, también lo puede hacer un atacante con acceso físico al dispositivo. Antes de pensar en una criptografía fuerte, piense en una fuerte seguridad física. Las empresas de alojamiento no son lo que yo llamaría una seguridad sólida.

Si solo le preocupa la defensa contra el acceso raíz malicioso, un HSM evitará que roben las claves para su posterior reutilización, pero aún podrán usarlas mientras tienen acceso al servidor.

    
respondido por el André Borie 02.10.2015 - 06:29
fuente
0

Esta pregunta tiene muchas respuestas potenciales, desde flojo en un extremo hasta paranoico en el otro.

Las dos cosas más importantes a considerar en casi todas las preguntas de implementación relacionadas con la seguridad son:

  1. ¿Qué importancia tienen los datos que intenta proteger?
  2. ¿Qué tan motivados están los atacantes?

En este caso, si su atacante no es un individuo altamente competente y motivado, una solución razonable sería:

  1. Cifre las credenciales de inicio de sesión que está usando para SFTP (nombre de usuario + contraseña) con una frase de contraseña y guárdelas en algún lugar del disco
  2. En lugar de usar cron, use algún tipo de demonio de ejecución larga para hacer sus tareas periódicas. Cuando inicie este proceso por primera vez, lea las credenciales cifradas del disco e ingrese la frase de contraseña manualmente (en un shell)
  3. Las credenciales descifradas permanecerán en la memoria del proceso durante su vida útil (deberá volver a ingresar la contraseña de las credenciales cuando se reinicie el proceso). Si bien es posible, no es trivial que un atacante descargue la memoria durante todo el proceso y la rastree hasta que encuentre las credenciales desencriptadas.

Si bien esta solución no es impenetrable, hace al menos lo suficientemente difícil como para que un atacante que lea archivos arbitrarios del disco no pueda acceder a credenciales no cifradas, e incluso a alguien El acceso total al servidor tendrá un grado razonable de dificultad.

    
respondido por el Nic Barker 02.10.2015 - 07:10
fuente

Lea otras preguntas en las etiquetas