Tengo un script Bash que se autentica automáticamente con un servicio utilizando mi nombre de usuario y contraseña. Las credenciales se almacenan actualmente como texto sin formato dentro del script.
¿Qué precauciones debo tomar para almacenar estas credenciales de forma más segura y al mismo tiempo permitir el acceso al script?
Puntos de aclaración:
- Entiendo que, si está disponible, se deben usar otros métodos de autenticación. Todavía quiero saber qué hacer en caso de que la autenticación de contraseña sea la única opción.
- No almacenar la contraseña en absoluto no es una respuesta aceptable aquí. Le pregunto sobre el caso en que el script debe tener acceso desatendido a la contraseña.
Respuestas:
Que tipo de servicio Ciertos servicios tienen otros métodos para autenticar, por ejemplo, claves SSH para SSH en conjunto con el agente SSH.
Almacenaría la contraseña por separado del script y me aseguraría de que todos los componentes de la ruta tengan los permisos correctos establecidos. Por ejemplo, asegúrese de que en el camino
/path/to/file
,/
,/path
y/path/to
son propiedad de un usuario de confianza (root
) y que éstas no se pueden escribir por alguien que no está permitido para ver sus archivos. Finalmente, los permisos recomendados parafile
son 600 o 400.Eso
file
podría verse así:En su secuencia de comandos, use el siguiente código para importar la variable:
En cuanto a su secuencia de comandos, asegúrese de que no contenga agujeros que puedan permitir a los atacantes ejecutar código en el contexto de la secuencia de comandos (por ejemplo, un entorno no controlado que puede tener un
$PATH
conjunto de variables arbitrarias o un uso no válido de otros archivos (por ejemplo, obtener un archivo de escritura mundial) .En cuanto a la protección real de su contraseña, no puede. Debe estar disponible de alguna manera para el otro servicio. Como alternativa, puede encriptar el archivo / script que contiene la contraseña utilizando
openssl
ogpg
debe ingresar una contraseña antes de desbloquear las credenciales. Esto es especialmente útil si la contraseña de su servicio es difícil de recordar.fuente
En lugar de codificar la contraseña en el archivo, almacene la contraseña en un archivo separado y proteja el archivo (
chmod 700
ochmod 500
) para que solo los usuarios autorizados puedan acceder a ella.Recupere la contraseña con en
cat /dir/to/file/with/.password
lugar de leer el archivo y almacenar su contenido en una variable.fuente
--passphrase-file
opción de gpg .chmod 400
para archivos (solo lectura). Por supuesto, debe proteger los directorios principales (700 o 500, o incluso 100 si es paranoico). Tenga en cuenta que 400 (o 500 para directorios) es suficiente, otros modos (100) pueden considerarse como seguridad a través de la oscuridad , al igual que ocultar el archivo colocando un punto delante del nombre.Sé que esta es una vieja pregunta, pero me enfrenté a este problema similar y usé el llavero de Ubuntu para resolverlo. Aquí hay una solución en ubuntu 18.04LTS Abra el terminal Escriba,
keyring set {{service}} {{username}}
por ejemplo, si está usando esto para el registro de contraseña de la escuela:Le registrará para una contraseña ingrese la contraseña. Ahora la contraseña que ingresó está almacenada en el llavero de Ubuntu.
Para obtener esta contraseña, escriba en el terminal:
para usar esto en el contexto de un script:
Ahora la contraseña contiene la contraseña que ingresó anteriormente.
fuente