“Conocimiento Problema>contraseñas

¿Cómo puede proteger el archivo zip con contraseña la ayuda de unix script?

2016/5/5
Puede proteger un archivo zip con una contraseña utilizando la utilidad de línea de comandos `zip` en un script Unix. Así es como, junto con explicaciones y mejores prácticas:

1. Uso de la opción `-p` (menos segura, no recomendada para datos confidenciales):

`` `Bash

#!/bin/bash

Zip_file ="my_archive.zip"

Contraseña ="my_secret_password"

Files_to_zip ="file1.txt file2.pdf directorio1"

ZIP -P "$ Password" "$ zip_file" "$ files_to_zip"

echo "archivo zip '$ zip_file' creado con contraseña (método menos seguro)".

`` `` ``

* Explicación:

* `zip -p" $ contraseña "" $ zip_file "" $ files_to_zip "`:Este comando crea el archivo zip.

* `-P" $ Password "`:Especifica la contraseña directamente en la línea de comando. Este es el problema!

* `" $ Zip_file "`:el nombre del archivo zip para crear.

* `" $ Files_to_zip "`:los archivos y directorios que desea incluir en el archivo ZIP. Use cotizaciones para manejar espacios en los nombres de archivo.

* Riesgo de seguridad: Este método es el * menos * seguro. La contraseña se pasa directamente como un argumento de línea de comandos. Esto significa:

* Visible en la lista de procesos: Cualquier persona con acceso a la lista de procesos del sistema (comando `PS`) puede ver la contraseña.

* Almacenado en la historia del shell: La contraseña se puede guardar en el archivo del historial de shell (por ejemplo, `.Bash_history`).

2. Uso de la opción `-e` con contraseña interactiva (mejor):

`` `Bash

#!/bin/bash

Zip_file ="my_archive.zip"

Files_to_zip ="file1.txt file2.pdf directorio1"

zip -e "$ zip_file" "$ files_to_zip"

echo "archivo zip '$ zip_file' creado con contraseña (aviso interactivo)".

`` `` ``

* Explicación:

* `zip -e" $ zip_file "" $ files_to_zip "`:

* `-e`:habilita el cifrado. El comando `ZIP` le pedirá que ingrese y verifique la contraseña de manera interactiva.

* Mejora de seguridad: Esto es mejor que `-p` porque la contraseña no se almacena en la línea de comando. Se ingresa directamente en la solicitud.

* Limitaciones:

* no secable: Requiere la interacción humana para ingresar la contraseña, lo que la hace inadecuada para scripts totalmente automatizados.

3. Uso de la opción `-p` (ligeramente mejor, todavía no es ideal para datos confidenciales):

`` `Bash

#!/bin/bash

Zip_file ="my_archive.zip"

Contraseña ="my_secret_password"

Files_to_zip ="file1.txt file2.pdf directorio1"

ZIP -P "$ Password" "$ zip_file" "$ files_to_zip"

echo "Archivo zip '$ zip_file' creado con contraseña (mayúscula P - menos inseguro que la P minúscula)".

`` `` ``

* Explicación: `-P` es similar a` -p` pero trata la contraseña como una cadena literal y no interpreta ningún metacrojador de shell.

* Seguridad: Un poco mejor que `-p` porque evita la interpretación del shell no intencionada, pero la contraseña es * todavía * en la línea de comando y vulnerable a la lista de procesos y la exposición al historial. Evite esto para datos verdaderamente sensibles.

4. Uso de `OpenSSL` para un cifrado más seguro (recomendado para datos confidenciales):

Este enfoque utiliza 'OpenSSL` para crear un archivo encriptado de forma segura. Esto generalmente se considera un método más robusto para proteger datos confidenciales en comparación con el cifrado 'ZIP` incorporado.

`` `Bash

#!/bin/bash

Zip_file ="my_archive.zip.enc" # NOTA La extensión .EnC

Files_to_zip ="file1.txt file2.pdf directorio1"

# Crea un archivo de alquitrán primero

tar -czf tmp_archive.tar.gz "$ files_to_zip"

# Cifrar el archivo de alquitrán con OpenSsl

OpenSSL ENC -AES -256 -CBC -Salt -in tmp_archive.tar.gz -out "$ zip_file"

# Retire el archivo de alquitrán temporal

RM tmp_archive.tar.gz

echo "Archivo cifrado '$ zip_file' creado usando OpenSSL".

`` `` ``

* Explicación:

* `tar -czf tmp_archive.tar.gz" $ files_to_zip "`:Crea un archivo de alquitrán Gzipped de los archivos. `Tar` es una utilidad UNIX estándar para archivar archivos y directorios. `GZIP` comprime el archivo.

* `OpenSSL ENC -AES -256 -CBC -Salt -in tmp_archive.tar.gz -out" $ zip_file "`:cifra el archivo de alquitrán usando OpenSSL.

* `OpenSSL ENC`:invoca el comando OpenSSL de cifrado.

* `-AES-256-CBC`:Especifica el algoritmo AES (estándar de cifrado avanzado) con una clave de 256 bits en el modo CBC (encadenamiento de bloque de cifrado). AES-256 es un algoritmo de cifrado fuerte.

* `-Salt`:agrega una sal aleatoria a la contraseña antes del cifrado. Esto es * crucial * para evitar ataques de mesa del arco iris. OpenSSL generará la sal automáticamente.

* `-in tmp_archive.tar.gz`:Especifica el archivo de entrada (el archivo de alquitrán).

* `-out" $ zip_file "`:Especifica el archivo de salida (el archivo cifrado). La extensión '.Enc` es una convención común.

* Solicitud de contraseña: OpenSSL * le solicitará * la contraseña en la línea de comando. Esto es mejor que pasarlo como argumento.

* Ventajas de seguridad:

* Cifrado fuerte: Utiliza AES-256, un algoritmo de cifrado muy fuerte.

* Contraseña salada: La salación previene los ataques precomputados (tablas de arco iris) que intentan adivinar contraseñas.

* No hay contraseña en la línea de comando: La contraseña se ingresa de manera interactiva, evitando la exposición en las listas de procesos o el historial de shell.

* descifrado: Para descifrar el archivo, use el siguiente comando 'OpenSSL` (se le solicitará la contraseña):

`` `Bash

OpenSsl enc -d -aes -256 -cbc -salt -in my_archive.zip.enc -out tmp_archive.tar.gz

tar -xzf tmp_archive.tar.gz

RM tmp_archive.tar.gz

`` `` ``

* `-d`:descifrar

* `-x`:extracto

5. Uso de un archivo de contraseña o variable de entorno (más scriptable, con advertencias):

Si necesita absolutamente una solución scriptable * sin * interacción de usuario, puede usar un archivo de contraseña o una variable de entorno. Sin embargo, debe comprender las implicaciones de seguridad.

`` `Bash

#!/bin/bash

Zip_file ="my_archive.zip.enc"

Files_to_zip ="file1.txt file2.pdf directorio1"

Contraseña_file ="contraseña.txt"

# Asegúrese de que el archivo de contraseña exista y tenga permisos apropiados (de solo lectura para el propietario)

si [ ! -f "$ Password_File"]; entonces

echo "Error:archivo de contraseña '$ contraseña_file' no encontrado".

Salir 1

FI

CHMOD 400 "$ contraseña_file" # solo lectura para el propietario

# Crea un archivo de alquitrán primero

tar -czf tmp_archive.tar.gz "$ files_to_zip"

# Cifrar el archivo de alquitrán con OpenSsl

OPENSSL ENC -AES -256 -CBC -Salt -Pass:"$ Password_file" -in tmp_archive.tar.gz -out "$ zip_file"

# Retire el archivo de alquitrán temporal

RM tmp_archive.tar.gz

echo "Archivo cifrado '$ zip_file' creado usando OpenSSL (contraseña desde el archivo)".

`` `` ``

* Explicación:

* `Contraseña_file =" contraseña.txt "`:Define la ruta al archivo que contiene la contraseña. ¡Este archivo es fundamental para asegurar correctamente!

* `CHMOD 400" $ contraseña_file "`:Establece los permisos en el archivo de contraseña en solo lectura para el propietario. Esto es vital para prevenir el acceso no autorizado.

* `OPENSSL ENC -AES -256 -CBC -SALT -Pass -Pass:" $ Password_file "...`:El archivo `-pass:" $ Password_file "` Opción le dice a OpenSSL que lea la contraseña del archivo especificado.

* Consideraciones de seguridad:

* Protección de archivos de contraseña: El archivo `contraseña.txt` debe estar extremadamente bien protegido.

* Guárdelo fuera de la raíz web (si está en un servidor web).

* Déle permisos restrictivos (por ejemplo, `chmod 400 contraseña.txt` - de solo lectura para el propietario).

* No lo revise en el control de versiones (GIT, etc.).

* Variables de entorno: Una alternativa es almacenar la contraseña en una variable de entorno. Use `exportar contraseña =your_secret_password` (pero tenga en cuenta que esto aún puede ser visible a través de` ps` o en el historial de shell si no tiene cuidado). Luego, use `-pass env:contraseña` en el comando` OpenSSL`. Nunca hardifique la contraseña directamente en el script.

* Gestión de claves: Para datos altamente confidenciales, considere usar sistemas de administración de claves (KMS) o módulos de seguridad de hardware (HSMS) en lugar de almacenar contraseñas en archivos o variables de entorno.

Consideraciones y mejores prácticas importantes:

* Algoritmo de cifrado: Siempre use algoritmos de cifrado fuertes como AES-256. Evite los algoritmos más antiguos y más débiles como el cifrado incorporado de Zip (que se rompe fácilmente).

* Salting: Siempre use una sal con su contraseña. La opción `-Salt` de OpenSSL hace esto automáticamente.

* Complejidad de contraseña: Elija contraseñas fuertes y complejas que sean difíciles de adivinar. Use un generador de contraseña si es necesario.

* Rotación de teclas: Cambie regularmente (gire) sus claves/contraseñas de cifrado.

* Almacenamiento seguro: Proteja sus claves/contraseñas de cifrado tan diligentemente como protege los datos en sí.

* Principio de menor privilegio: Dale al script solo los permisos necesarios para realizar su tarea.

* Auditoría: Registre cuando se producen operaciones de cifrado y descifrado con fines de auditoría.

* Manejo de errores: Incluya el manejo de errores en su script para atrapar posibles problemas y evitar que los datos confidenciales se expusen.

* Archivos temporales: Si usa archivos temporales (como en los ejemplos `OpenSSL`), asegúrese de eliminarlos de forma segura después de su uso. Se puede usar `Shred` o` Wipe` para esto, pero requieren un uso cuidadoso. Simplemente usar `RM` deja los datos recuperables.

* Evite el cifrado incorporado de Zip: El cifrado incorporado en la utilidad `ZIP` generalmente se considera débil y debe evitarse para obtener datos confidenciales. `OpenSSL` es mucho más seguro.

Elegir el método correcto:

* Seguridad más alta (y generalmente más simple): Use `OpenSSL` e ingrese manualmente la contraseña en la solicitud.

* Scriptable, pero con riesgos: Si necesita una solución scriptable, use `OpenSSL` con un archivo de contraseña o una variable de entorno, pero * solo * si puede garantizar la seguridad del almacenamiento de contraseña. Comprender los riesgos. Considere KMS o HSM para datos muy sensibles.

* Evite `zip -p` y` zip -p` a toda costa para datos confidenciales.

Recuerde adaptar estos scripts a sus necesidades específicas y considerar cuidadosamente las implicaciones de seguridad de cada método. Priorice siempre la seguridad de los datos al manejar información confidencial.

contraseñas
Cómo hackear la contraseña de WiFi
Cómo restablecer la Administración contraseña
¿Cómo se configura una política de vencimiento de contraseña de dominio?
¿Qué es un token de contraseña único?
¿Cómo se inicia Acer Aspire 5630 sin contraseña HDD?
¿Los ahorradores de pantalla protegidos con contraseña se instanciarán?
¿Cómo se cambia la contraseña de la cuenta del administrador desde la cuenta estándar?
Cómo elegir una buena computadora Usuario
Conocimiento de la computadora © http://www.ordenador.online