LinuxParty
Cuando tiene datos importantes y confidenciales, es crucial tener una capa adicional de seguridad para sus archivos y directorios, especialmente cuando necesita transmitir los datos con otras personas a través de una red.
Por esa razón, estoy buscando una utilidad para encriptar y desencriptar ciertos archivos y directorios en Linux, afortunadamente encontré una solución que tar con OpenSSL puede satisfacer mis necesidades, sí, con la ayuda de estas dos herramientas puedes crear y encriptar fácilmente un archivo de almacenamiento sin ningún tipo de molestia.
Una versión más segura de éste proceso, se desarrola en el artículo:
Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
En este artículo, veremos cómo crear y cifrar un archivo comprimido tar o gz ( gzip ) con OpenSSL :
Recuerde que la forma convencional de usar OpenSSL es:
# Comando openssl Argumentos de opciones del comando
Encriptar archivos en Linux
Para cifrar el contenido del directorio de trabajo actual (dependiendo del tamaño de los archivos, esto puede llevar un tiempo):
# tar -czf - * | openssl enc -e -aes256 -out secured.tar.gz
Explicación del comando anterior:
enc
-> comando openssl para cifrar con cifrados-e
-> una opción del comando enc para cifrar el archivo de entrada, que en este caso es la salida del comando tar-aes256
-> el cifrado de la encriptación-out
-> opción enc utilizada para especificar el nombre del nombre de archivo de salida, secure.tar.gz
Desencriptar archivos en Linux
Para descifrar el contenido de un archivo tar, use el siguiente comando.
# openssl enc -d -aes256 -in secured.tar.gz | tar xz -C test
Explicación del comando anterior:
-d
-> utilizado para descifrar los archivos-C
-> extraer en el subdirectorio denominado test (si quitas "-C test" será en el directorio actual)
La siguiente imagen muestra el proceso de cifrado y lo que sucede cuando intenta:
- extraer el contenido del tarball de la forma tradicional
- use la contraseña incorrecta, y
- cuando ingresa la contraseña correcta
Cifrar o descifrar un archivo Tar en Linux
Cuando trabaja en una red local o en Internet, siempre puede proteger sus documentos o archivos vitales que comparte con otros cifrándolos, lo que puede ayudar a reducir el riesgo de exponerlos a atacantes malintencionados.
Observamos una técnica simple para cifrar archivos tar utilizando OpenSSL, una herramienta de línea de comandos de openssl. Puede consultar su página de manual para obtener más información y comandos útiles.
Como ejemplo, puedes ver este script para hacer una copia "segura" del directorio de Mozilla. (que puedes modificar a tu gusto)
Ojo, haz una copia de seguridad previa de tu directorio $HOME/.mozilla, por ejemplo así:
tar cvfz CopiaSeg-mozilla.tgz .mozilla,
podrás descomprimir la copia así:
tar xvfz CopiaSeg-mozilla.tgz
Fichero: cifra-firefox.sh
#!/bin/bash ##################################################################################
# versión 1.22 -por corrección de errores- Fecha 16/05/2022 # Script para realizar el trabajo de encriptación automatizado. # (c) Javier Orovengua Miguel, para ExtreHost.com y Linuxparty.es # El script se puede compartir bajo los términos de la licencia GPL # y modificar, respetando el autor y estos créditos de inicio.
# --------------------------------------
# USO:
# --------------------------------------
# La ejecución del script sin argumentos, cifrará el directorio en $HOME/.mozilla
#
# La ejecución del script con el parámetro "-u", descifrará el archivo previamente
# creado por la ejecución del script sin argumentos y con la contraseña correcta. #################################################################################### # Definimos colores, sólo por diversión rojo='\033[0;31m' rojoI='\033[1;31m' rosaI="\033[1;35m" amarillo='\033[1;33m' cian='\033[1;36m' azul='\033[0;34m' verde='\033[1;32m' destaca='\033[1;38m' NC='\033[0m' # No Color printf ${NC} # Si usamos la opción -u, desencriptará el archivo. if [ "$1" == "-u" ] ; then echo "DEScifrando..." echo "Para encriptar, use el comando sin argumentos"
# Descomprime openssl enc -d -aes256 -in secured-mozilla.tgz | tar xz -C /
# Comprobamos que está el directorio. ls -l $HOME/.mozilla echo "--------------" echo "--------------"
echo "¿Ejecutar firefox ahora?" if /usr/local/bin/espera.sh ; then echo "SI" firefox else echo "NO" fi
echo "--------------" echo "--------------" echo "¿Borrar POR SEGURIDAD el directorio de Trabajo?" echo "--------------" echo "--------------"
if /usr/local/bin/espera.sh ; then echo "SI" rm -rfv $HOME/.mozilla else echo "NO" fi exit fi
# Sin opciones, el archivo comprime el directorio.
echo "Comprimiendo y cifrando..." echo "Para desencriptar use el mismo comando con la opción -u " tar -czf - $HOME/.mozilla | openssl enc -e -aes256 -out secured-mozilla.tgz
Yo, el script de arriba lo utilizo con mucha frecuencia, ya que me sirve, para de forma controlada tener una versión actualizada, ya que si tienes activa la cuenta de Sincronización de Firefox (recomendado), tendrá menos que sincronizar entre varios dispositivos si tienes actualizado el fichero comprimido y protegido, por lo que de vez en cuando hago:
# Descomprimo y descifro...
cifra-firefox.sh -u
# Si es Windows
cifra-firefox.bat -u
# Trabajo con él y después...
# Lo vuelvo a cifrar y comprimir.
cifra-firefox.sh
# Si es Windows
cifra-firefox.bat
El script "espera.sh" (Solo para Linux y Mac)
#!/bin/bash # El script también puede utilizarlo de la siguiente manera: # if /root/bin/espera.sh ; then # echo "SI" # else # echo "NO" # fi echo -n "Pulse una tecla para continuar... (o 's' o 'n' para confirmar)"; read -n 1 key if [ "$key" == 's' -o "$key" == 'S' ]; then exit 0 # Todo OK else exit 1 # Contrario fi
Como de costumbre, para cualquier pensamiento adicional o consejo simple que desee compartir con nosotros, utilice el formulario de comentarios a continuación y en el próximo consejo, veremos una forma de Traducir los permisos rwx a formato octal en Linux.
Un script mejorado de la versión anterior para colocar en el escritorio sería éste.
Archivo: cfirefox.sh
#!/bin/bash ################################################################################### # (c) Javier Orovengua Miguel, para ExtreHost.com y LinuxParty.es # El script se puede compartir bajo los términos de la licencia GPL # y modificar, respetando el autor y estos créditos de inicio. # Versión del Script 2.00. ÚLTIMA ACTUALIZACIÓN: JULIO - 2023 #################################################################################### # Definimos colores, primer plano PNegro='\033[30m' PRojo='\033[31m' PVerde='\033[32m' PNaranja='\033[33m' PAzul='\033[34m' PMagenta='\033[35m' PCian='\033[36m' PGris='\033[37m' NC='\033[39m' # Colores de fondo, video inverso o segundo plano IGris='\033[100m' # Gris oscuro IRojo='\033[101m' # Luz roja IVerde='\033[102m' # Verde claro IAmarillo='\033[103m' # Amarillo IAzul='\033[104m' # Azul claro IMagenta='\033[105m' # Morado claro ICian='\033[106m' # Verde azulado IBlanco='\033[107m' # Blanco INC='\033[40m' clear # El script es para colocarlo en /usr/local/bin y crear un archivo de escritorio # sustituyendo al que hace la ejecución directa de firefox. (archivo separado) # ---------------- USO ---------------------- # La ejecución directa del escritorio desencriptará el archivo comprimido # y encriptado, que previamente hemos creado con el escript "cifrar-firefox.sh" # Al salir de firefox, se borrará el contenido en $HOME/.mozilla, quedando # protegido su contenido de curiosos. # # Opcionalmente, puede usar este mismo script para hacer el mismo trabajo que # hace "cifrar-firefox.sh", incluyendo el argumento -c, para crear por primera # vez el archivo comprimido y encriptado con el que va a trabajar. cd $HOME # Comprobamos que existe y si existe tratamos de ejecutar mozilla. if [ -d $HOME/.mozilla ] ; then # Comentar en caso que NO QUIERAS preservar la instalación actual, poniendo delante '#' kdialog --passivepopup "Decidimos preservar la instalación actual, asegurela protegiendo las contraseñas con una clave maestra, y borrando la caché, búsquedas y cookies y resto del contenido al salir." 20 kdialog --passivepopup "Usa PREVIAMENTE la aplicación \"cifra-firefox.sh\" y borra el directorio $HOME/.mozilla, para no ver estos mensajes." 24 # Comprobamos si existe una versión descargada e instalada de firefox # Comentar en caso que no quieras preservar la instalación actual, poniendo delante '#' # Posibles sitios donde puedes haber descargado e instalado 'firefox' if [ -f $HOME/Descargas/firefox/firefox ] ; then # Lo instalaste en "Descargas/firefox" $HOME/Descargas/firefox/firefox elif [ -f $HOME/firefox/firefox ] ; then # Lo instalaste en la raíz: de tu HOME 'firefox" $HOME/firefox/firefox else # Si no hay ninguna instalación. Usas la # instalación por defecto de la distribución. firefox fi # Fin Comprobamos que existe y si existe tratamos de ejecutar mozilla # Fin Comentar en caso que NO QUIERAS preservar la instalación actual kdialog --passivepopup "Hasta luego!" 3 exit fi # Fin Comprobamos que existe y si existe tratamos de ejecutar mozilla. # Para comprimir el archivo y cifrar por primera vez: "cfirefox.sh -c" if [ "$1" == "-c" ] ; then echo "Comprimiendo y cifrando..." cd $HOME if [ -d $HOME/.mozilla ] ; then tar -czf - $HOME/.mozilla | openssl enc -e -aes256 -out secured-mozilla.tgz else printf "${PAzul}${ICian}" echo "No hay directorio que comprimir, no existe" printf "${NC}${INC}" fi fi # Fin para comprimir el archivo y cifrar por primera vez echo "DEScifrando..." printf ${PNegro}${IVerde} echo "Introduce la contraseña:" printf ${NC}${INC} RUTA=$HOME # Ejectutar la aplicación "cfirefox.sh" sin opciones, descomprimirá el directorio. # Solo se ejecutará cuando las opción "Comprobamos si existe y tratamos de ejecutar mozilla" # esté comentado de la parte superior. if [ -f $HOME/secured-mozilla.tgz ] ; then openssl enc -d -aes256 -in $HOME/secured-mozilla.tgz | tar xz -C $RUTA # Detectamos una instalación personalizada de Firefox. # Por ejemplo en: if [ -f $HOME/Descargas/firefox/firefox ] ; then $HOME/Descargas/firefox/firefox elif [ -f $HOME/firefox/firefox ] ; then $HOME/firefox/firefox else # Si no hay ninguna instalación. firefox fi pwd echo $RUTA/.mozilla sleep 2 rm -rf $RUTA/.mozilla else printf ${PRojo}${IAmarillo} echo "No exsite el fichero: $HOME/secured-mozilla.tgz" printf ${NC}${INC} fi # Fin de ejecutar el script "cfirefox.sh" sin opciones printf ${PNegro}${IVerde} echo "CORRECTAMENTE Terminado" printf ${NC}${INC} sleep 1 # Fin del script exit
El archivo del escritorio: (Colocar tal cual).
Recordar que debe indicarse que el script debe ejecutarse en una ventana de Shell, para que pueda solicitar la contraseña.
Arhivo: cFirefox.desktop
[Desktop Action new-private-window] Exec=firefox --private-window %u Name=Open a New Private Window Name[en-US]=New Private Window Name[es-AR]=Nueva ventana privada Name[es-CL]=Nueva ventana privada Name[es-ES]=Nueva ventana privada Name[es-MX]=Nueva ventana privada [Desktop Action new-window] Exec=firefox --new-window %u Name=Open a New Window Name[en-GB]=New Window Name[en-US]=New Window Name[es-AR]=Nueva ventana Name[es-CL]=Nueva ventana Name[es-ES]=Nueva ventana Name[es-MX]=Nueva ventana [Desktop Entry] Actions=new-window;new-private-window; Categories=Network;WebBrowser; Comment[es_ES]=Navegue por la web Comment=Navegue por la web Exec=/usr/local/bin/cfirefox.sh GenericName[es_ES]=Navegador web GenericName=Navegador web Icon=firefox Keywords=web;browser;internet; MimeType=text/html;application/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml; Name=cFirefox Path= StartupNotify=true Terminal=true TerminalOptions= Type=Application Version=1.0 X-DBUS-ServiceName= X-DBUS-StartupType=none X-Desktop-File-Install-Version=0.23 X-KDE-SubstituteUID=false X-KDE-Username=
Binarios para Windows:
- Comando: tar -> http://gnuwin32.sourceforge.net/packages/gtar.htm
- Comando: gzip -> http://gnuwin32.sourceforge.net/packages/gzip.htm
- Comando: openssl -> http://gnuwin32.sourceforge.net/packages/openssl.htm
Debe instalar todos los programas en un mismo directorio, y ese mismo directorio debe incluirlo en la ruta "Path" del sistema, para que sea funcional, los scripts de abajo, también los puede incluir en la ruta Path
¿Cómo añadir o modificar el Path en Windows 10/11 (y siguientes)?
- En Buscar, busque y seleccione: Sistema (Panel de control)
- Haga clic en el enlace "Configuración avanzada del sistema"
- Haga clic en "Variables de entorno". ...
- En la ventana "Editar la variable del sistema" (o Nueva variable del sistema), debe especificar el valor de la variable de entorno PATH
- En mi caso, guardé todos los binarios y ficheros .bat en: C:\Program Files\GnuWin32\bin
Creé el siguiente script que ha funcionado y funciona sin problemas en Windows 10 y 11, el mismo indica la ruta de trabajo. La filosofía de ambos ficheros de proceso por lotes es igual que el de los scripts de Linux arriba mencionados.
fichero: cifra-firefox.bat
@rem Versión 1.11
@echo off cd %HOMEPATH% echo %HOMEPATH% IF "%1"=="-u" GOTO Descifra GOTO :Cifra :Descifra echo DEScifrando... echo Para encriptar use el mismo comando sin argumentos openssl enc -d -aes256 -in secured-mozilla.tar.sec > secured-mozilla.tar tar xf secured-mozilla.tar
rem volcar el contenido para evitar recuperación por un "undelete" o similar.
rem echo "0" > secured-mozilla.tar del secured-mozilla.tar echo --------------- echo --------------- dir AppData\Roaming\Mozilla echo --------------- echo --------------- echo ¿Ejecutar firefox ahora? 1-si / 2-no set /p eoption=">>" IF %eoption%==1 ( echo "Iniciar Firefox..." start "C:\Program Files\Mozilla Firefox" /b firefox.exe ) ELSE ( echo "Fin" goto :Fin ) echo ----------------------- echo ----------------------- echo NO LO BORRE HASTA QUE TERMINE DE USAR FIREFOX !!!!! pause echo ¿Por seguridad borrar el directorio de trabajo? 1-si / 2-no echo ----------------------- echo ----------------------- set /p doption=">>" IF %doption%==1 ( cd AppData\Roaming del /s /q Mozilla exit ) ELSE ( echo "Fin" goto :Fin ) :Cifra echo "Comprimiendo y cifrando..." echo "Para desencriptar ejecte este script con la option -u" tar -cf - AppData\Roaming\Mozilla | openssl enc -e -aes256 -out secured-mozilla.tar.sec :Fin
Yo, el script (proceso por lotes en Windows) de arriba lo utilizo con mucha frecuencia, ya que me sirve, para de forma controlada tener una versión actualizada, ya que si tienes activa la cuenta de Sincronización de Firefox (recomendado), tendrá menos que sincronizar entre varios dispositivos si tienes actualizado el fichero comprimido y protegido, por lo que de vez en cuando hago:
# Descomprimo y descifro...
cifra-firefox.bat -u
# Trabajo con él y después...
# Lo vuelvo a cifrar y comprimir.
cifra-firefox.sh
El comando cfirefox, que es la versión "rápida", para ejecutar firefox con el paquete encriptado. Debe crear un acceso directo en el escritorio y ya está. Y tiene que indicar que se debe ejecutar desde una ventana de DOS.
Archivo: cfirefox.bat
@rem Versión 1.1 @echo off cd %HOMEPATH% echo %HOMEPATH% echo VERSION 1.1 IF "%1"=="-c" GOTO :Cifrar :Descifra echo DEScifrando... echo Introduce la contraseña: echo Para encriptar use el mismo comando con argumento -c openssl enc -d -aes256 -in secured-mozilla.tar.sec > secured-mozilla.tar tar xf secured-mozilla.tar
rem volcar el fichero para evitar la recuperación por un "undelete" o similar
rem echo "0" > secured-mozilla.tar del secured-mozilla.tar echo --------------- echo --------------- dir AppData\Roaming\Mozilla echo --------------- echo --------------- rem echo ¿Ejecutar firefox ahora? 1-s / 2-no rem set /p eoption=">>" rem IF %eoption%==1 ( echo . echo "Iniciar Firefox..." start "C:\Program Files\Mozilla Firefox" /b firefox.exe rem ) ELSE ( rem echo "Fin" rem goto :fin rem ) echo ----------------------- echo ----------------------- echo NO LO BORRE HASTA QUE TERMINE DE USAR FIREFOX !!!!! pause echo ¿Por seguridad borrar el directorio de trabajo? 1-s / 2-no echo ----------------------- echo ----------------------- set /p doption=">>" IF %doption%==1 ( cd AppData\Roaming del /s /q Mozilla goto :fin ) ELSE ( echo "Fin" goto :fin ) exit :Cifrar echo Comprimiendo y cifrando..." echo Para desencriptar ejecute este script SIN argumentos tar -cf - AppData\Roaming\Mozilla | openssl enc -e -aes256 -out secured-mozilla.tar.sec :fin
Si quiere dejar una versión mejorada de ambos ficheros de proceo por Lote de Windows, déjelo en los comentarios, los incluiremos en el artículo y le añadiremos sus referencias.
-
Encriptación
- Cómo crear una carpeta privada, personal y encriptada En Ubuntu
- Encriptar y desencriptar archivos y directorios en Windows, Linux y Mac, con Tar y OpenSSL
- Cómo cifrar y descifrar archivos y directorios con Tar y OpenSSL
- Encriptación del Directorio Home en Windows
- Desmitificando Blockchains
- Crear tu propia criptomoneda, usando tu blockchain
- Parte 1, Blockchain en Linux - Introducción y criptomoneda
- Parte 2, Blockchain en Linux - Configurar una red Blockchain y aprovechar la tecnología
- Cómo instalar Blockchain en Ubuntu
- Crear una carpeta segura y encriptada en Linux al estilo RealCrypt (ya encfs)
- Las mejores VPN para Linux
- Charla IPTABLES, que se dió en el canal #linux_party
- Charla IPTABLES, que se dió en el canal #linux_party (2)
- Espiar conversaciones y rastrear móviles, ¿estamos seguros en Internet?
- Encriptar y desencriptar ficheros en Linux, desde la consola