H

HacKan

Usuario (Argentina)

Primer post: 16 jul 2009Último post: 4 may 2011
5
Posts
247
Puntos totales
227
Comentarios
S
Sobre claves y otras yerbas
InfoporAnónimo7/16/2009

Sobre claves y otras yerbas El presente texto tratará los temas concernientes a la seguridad de las claves elegidas por los usuarios, explicará cómo generar y recordar claves seguras y otros temas similares. Estará orientado a todos aquellos que usen 123456 como clave, o a aquellos que siempre usan la misma clave para todo. Solo pretendo informar sobre la manera de evitar ese tipo de claves, y no de los riesgos que el empleo de las mismas conlleva. Generando claves seguras Probablemente jamás se detuvo a pensar cómo generar una clave segura. Partiendo del principio, quizá no sepa exactamente qué es una clave segura; pues bien, una clave segura es una clave que no puede ser adivinada ni puede ser violada mediante el empleo de computadoras. No hay un estándar que indique el nivel de seguridad de una u otra clave, pero sí se puede decir que una clave segura (mínimamente segura) tiene 10 caracteres y emplea tanto mayúsculas como minúsculas, números y símbolos. Quizá piense que el nombre de su mascota con la primera letra en mayúscula es una clave segura; quizá piense que su número telefónico con un guión en el medio también lo sea. La verdad es que no; ese tipo de claves – aunque de mejor ‘calidad’ que 123456 – tampoco son seguras. Ejemplos de claves seguras podrían ser estos: • fa5r424sdfIOU • Jkvb%21(ms.e • ¿8665tgb1as3-._.ew Ahora bien, deténgase un momento y trate de memorizar alguna de ellas. ¿Le resulta imposible? No se preocupe, no está demente; verdaderamente resulta imposible – o muy difícil – memorizar una clave de ese estilo. Además, el intento de hacerlo resulta peligroso, ya que basta con que olvidemos un punto, una letra o una mayúscula para que no podamos acceder más a la información protegida. Hay un método que todos los expertos en seguridad (no, yo no soy ningún experto) recomiendan para generar claves seguras, y básicamente consta de elegir la primera letra de cada palabra de una frase determinada y generar la contraseña de esa manera, aplicando luego ciertas permutaciones e incorporaciones de números y símbolos. Expliquemos con un ejemplo: partamos de una frase cualquiera, en este momento se me ocurre la siguiente: Mi perro Fido fue un buen amigo. Apliquemos entonces el método: MpFfuba. ¡Tarán! Apareció ante nosotros una clave con buen nivel de seguridad. Claro, aún no alcanza pero es un gran comienzo. Hagamos otra pausa. ¿No les resulta más fácil recordar una frase como aquella, que recordar una serie de caracteres sin sentido? Y con algo tan simple como esa frase obtuvimos una buena clave. Pero como mencioné, aún no es suficiente. La frase me dio mayúsculas y minúsculas, pero le faltan números y símbolos. El truco para incorporarlos es reemplazar letras por números o símbolos que se les parezcan, como podría ser una ‘a’ por un ‘4’ o un ‘@’, o una ‘o’ por un ‘0’ y así. También podríamos reemplazar una letra por un número cuyo nombre comience con esa letra, como ser una ‘s’ por un ‘6’, ya que ‘seis’ comienza con ‘s’. Debemos generar nuestras propias reglas nemotécnicas, no hay nada establecido ni estandarizado. Es cuestión de usar la imaginación. Volviendo a nuestra frase, reemplacemos la ‘a’ por un ‘4’ y la ‘p’ por un ‘6’; esta elección es ‘a sentimiento’ – como solía decir un profesor mío – es decir, completamente personal. Apliquemos entonces las modificaciones, y nuestra clave quedaría así: M6Ffub4. Ya va tomando forma, mejorando en cuanto a calidad; y aún sigue siendo fácil de recordar, ya que la frase es muy sencilla. Siempre se recomienda emplear frases con las cuales estemos familiarizados, ya sea porque nos guste o porque la hayamos memorizado para un examen de historia, los motivos no importan realmente. Bien, ahora solo falta incorporar símbolos. En este caso, nuestra frase no incluía comas ni signos de admiración o de pregunta, así que deberemos incorporarle algún símbolo ‘manualmente’. Normalmente no se recomienda colocar un símbolo sin motivo alguno ya que dificulta recordarlo. Un ejemplo de esto sería ponerle una coma en el medio: M6F,fub4. Si bien podemos hacerlo, nos será más difícil de recordar ya que no contamos con ninguna regla nemotécnica para hacerlo – contrario al caso de los números donde los elegimos por su parecido con las letras –. Quizá podríamos inventarnos una regla para recordar la posición de la coma, y la misma podría ser que, como tenemos dos ‘f’, una mayúscula y otra minúscula, empleamos la coma para separarlas. Ahora sí, tenemos un buen sustento para emplear la coma en medio de la frase, ya que ahora tiene un fundamento, un motivo, una regla nemotécnica. También podríamos, por ejemplo, abrir (y quizá también cerrar) la frase con comillas dobles, con paréntesis o corchetes. Hay que usar la imaginación, no hay reglas escritas, solo trucos. Otra buena idea sería cerrar nuestra frase con un símbolo, como un punto o cualquiera de los ya nombrados. En este caso, como la clave es corta y no queremos hacerla más difícil, dejémosla como está. Finalmente, nuestra clave segura concluyó así: M6F,fub4. Posee ocho caracteres, letras mayúsculas y minúsculas, símbolos y números, lo que nos da un nivel aceptable de seguridad, y con gran facilidad de recordar. ¿Pero que pasa si el FBI o la SIDE quieren leer mis mails? Pues bueno, ese tipo de claves no te alcanzarán. De hecho, si de leer mails se trata, ningún tipo de clave alcanzará ya que simplemente deben “pedirle permiso” al servidor y listo, ya tienen acceso total. En ese caso deberías encriptarlos en tu PC, pero a eso no va este texto. El método mencionado admite infinidad de variaciones, como por ejemplo tomar una letra de cada palabra acorde a la posición de dicha palabra en la frase, partiendo por la primera letra. Aplicándolo a nuestra frase resultaría: Medeuui. ¿Descubriste cómo generé la clave? Fue así: tomé la primera letra de la primera palabra, la segunda letra de la segunda palabra, la tercera letra de la tercera palabra; luego la cuarta palabra solo tiene tres letras, por lo que volví a empezar tomando la primera letra, siguiendo con la segunda letra de la quinta palabra y así sucesivamente. Aplicando números y símbolos, podría quedarnos así: (M3d3uu!]. Esta modificación del método puede parecer más difícil de recordar, pero depende de cada uno. Usen la imaginación para hallar uno que les sienta bien. Generando claves aleatorias y sobre password’s managers Las claves aleatorias son generadas por complicados algoritmos matemáticos, embutidos en programas de PC. En verdad, cuando uno dice ‘aleatorio’ quiere decir ‘pseudo-aleatorio’, porque ningún algoritmo es 100% azar. Tecnicismos aparte, ejemplos de claves aleatorias son las siguientes: • 7W__Epre • navatuZaxu9489W • y$4+Su&Tuk • 8hejecrejeth@BAZ7dew5frAtu2puBruv4kaFudrU8aheb7UdewradeQehuspa3e Estas claves fueron generadas por un programa de computadora. Son similares a las escritas al comienzo de este texto, con la excepción de que aquellas no eran de ‘tan buena calidad’, ya que simplemente puse mis manos en el teclado y presione las teclas. Este evento provoca que ciertos caracteres tengan más o menos probabilidades de salir. Tema aparte, lo cierto es que existen determinados dispositivos hardware que ayudan a mejorar el azar de los algoritmos. Nosotros no necesitamos de tanta calidad, probablemente tampoco necesitemos una clave al azar de este tipo, y nos conformemos con las generadas por el método ya explicado. Las claves generadas al azar son muy seguras, pero al ser tan difíciles de recordar, los usuarios terminan anotándolas en un papelito pegado al monitor, y esto no sirve de nada. Anotar claves en papelitos o archivos es totalmente inseguro y no recomendable. Por eso, el secreto aquí es anotar las claves en un programa de PC, genéricamente denominado ‘llavero’ o ‘password manager’ (organizador de claves). Este tipo de programa genera un archivo encriptado bajo una clave única que nosotros colocamos, y nos permite guardar así todas nuestras claves. De esta manera, tenemos anotada de manera segura las inmemorizables claves aleatorias bajo una única clave, que por supuesto deberá contar con un buen nivel de seguridad, pero que tranquilamente puede estar generada por el método ya explicado. También nos sirve para cuando nos obligan a aprendernos claves en nuestro trabajo, por ejemplo. Podemos guardarlas de manera segura bajo nuestra propia clave única. Formateando claves El formateo de claves es un método que yo idee para solventar la necesidad del empleo de muchas claves, y todas diferentes. Sumemos: cuentas de email, Facebook, fotolog, foros, blogs, etc. Fácilmente notaremos que debemos recordar al menos unas 20 claves diferentes. Ante esto, la mayoría de la gente emplea una única clave, que es la peor solución al problema, en cuanto hablemos de seguridad. Una buena solución es simplemente generar claves diferentes – al azar o por el método de la frase – y luego emplear un password manager. Esa solución es muy buena, quizá la mejor, pero eventualmente se torna poco práctica ya que es muy molesto tener que acceder a un programa cada vez que se quiera recordar una clave, sin importar lo veloz que sea nuestra PC. Para ello se me ocurrió el formateo de claves. El mismo consta en emplear un determinado formato para todas las claves de uso diario o común, que no exijan un elevado nivel de seguridad. Como todos los métodos, es cuestión de usar la imaginación para ingeniárnosla. Hay infinidad de formatos que se pueden tomar, como ejemplo usaremos el siguiente formato: Scy0y. Como ‘tarea’ mental, les dejo determinar el por qué de la elección de ese texto fijo; una pista: tiene que ver con este artículo. Bien, en este caso, nuestro formato consta de dos partes, un texto fijo (Scy0y) y un texto identificador que representa lo que se quiera proteger, como ser una cuenta de email o una clave para un foro, etc. Supongamos entonces que con ese formato elegido quiero generar la clave de mi cuenta de Yahoo. Mi clave podría ser Scy0y o también Scy0y o cualquier otra forma de escribir o representar el nombre de Yahoo, que es mi texto identificatorio. Aplicando lo mismo para Facebook, mi clave podría ser Scy0y o Scy0y o cualquier combinación que desee y me sea fácil de recordar. De esta manera, aplicando el formato a cualquier clave se puede obtener infinidad de estas y aún así recordarlas todas; o quizá no recordarlas, pero al conocer el método y el formato, podemos fácilmente adivinarla. ¿Cómo era mi clave de Yahoo? No lo recuerdo, pero podría ser Scy0y. No funciona, quizá era Scy0y. Sí, así era. Con este método resulta sencillo encontrar un formato con el cual nos sintamos a gusto y nos resulte sencillo de recordar. De más está decir que un experto en seguridad diría que esto no sirve ya que basta determinar cómo es el formato para adivinar fácilmente todas nuestras claves. Si bien esto es cierto, lo mismo ocurriría si alguien descubre nuestra clave del password manager; o peor aún, si usásemos solo una clave para todo. El método nos provee infinidad de claves diferentes y fácilmente memorizables, aunque las mismas no sean de altísima seguridad. Unidades virtuales seguras Si bien este tema no está directamente relacionado con las claves, podríamos admitirlo como ‘otras yerbas’, mencionadas por el título del artículo. Las unidades virtuales seguras son discos rígidos virtuales que cumplen la misma función que los discos rígidos reales, a excepción de que todo su contenido permanece encriptado el 100% del tiempo, y todo nuevo contenido que ingrese en el mismo se encripta de manera instantánea y en tiempo real. Anteriormente en este texto mencioné la palabra ‘encriptación’, pero ¿qué significa eso realmente? No ahondaré mucho en tecnicismos porque este texto no lo abarca ni es su finalidad, pero básicamente encriptación significa esconder de alguna manera los datos de forma segura, bajo una clave determinada sin la cual el acceso a los mismos es imposible. Una vez más, se trata de complejísimos algoritmos matemáticos. “El cifrado – o encriptación, palabra derivada del inglés ‘encrypted’ – es el proceso de convertir el texto plano en un galimatías ilegible, denominado texto cifrado o criptograma. Por lo general, la aplicación concreta del algoritmo de cifrado (también llamado cifra) se basa en la existencia de una clave: información secreta que adapta el algoritmo de cifrado para cada uso distinto.” (Criptografía, Wikipedia) Volviendo a lo que nos compete, las unidades virtuales seguras son ideales para almacenar documentos sensibles (léase sensibles con respecto a seguridad informática) con los cuales haya que trabajar diriamente. Cualquier documento o archivo puede ser encriptado fácilmente, con el software adecuado, pero este proceso demora tiempo, dependiendo del algoritmo empleado y de la extensión o ‘peso’ del archivo o documento. Si se requiere trabajar diariamente con el mismo, la pérdida de tiempo se vuelve sustancial, además de la incomodidad de tener que pasar por dicho proceso cada vez. Un buen ejemplo podría ser el código fuente de un programa que estemos haciendo, que requiere de ciertas medidas de seguridad para que nadie nos lo robe, pero debemos trabajar en él diariamente. O un informe o un artículo que estemos redactando. En esos casos, las unidades virtuales seguras nos vienen como anillo al dedo. Uno de los programas más famosos que encripta archivos y permite crear unidades virtuales seguras es el PGP, que además tiene la ventaja de ser gratuito – posee una versión paga también –. Otro programa, que yo uso mucho, es el Steganos Privacy Suite que incluye, además de las unidades virtuales seguras, un password manager y muchas cosas más, pero no es gratuito y solo viene en inglés o alemán. Sin importar qué software utilicemos, las unidades seguras nos dan un muy elevado nivel de seguridad, ya que nuestra información siempre se encuentra encriptada. Para abrirlas y acceder a la información hay que colocar correctamente la clave. Entonces aparecerá el ícono en Mi PC como si hubiéramos colocado un pendrive o cualquier disco extraíble. Al cerrarla, la información se vuelve ilegible hasta no volver a abrirla. Conclusión Para cerrar este artículo recalcaré la importancia de usar claves seguras como las mostradas, nunca repetir una clave y jamás anotarlas en un papel o en un archivo, a excepción de un passsword manager. Cuando trabajemos con archivos sensibles, podremos optar por confiar en las unidades virtuales seguras. Les dejo a continuación un link a una página con tablas y datos sobre las velocidades de recuperación de claves (en inglés): http://www.lockdown.co.uk/?pg=combi&s=articles Espero que les haya gustado el artículo, que les haya servido o al menos que les haya parecido interesante. Recibo de buen grado críticas u opiniones. CopyLeft HacKan & CuBa co. 2009. Este texto fue escrito enteramente por mí. FAVOR DE NO ROBAR, CONSULTAR http://www.hackan.com.ar

0
0
Instalar drivers privativos de video AMD (ATI)
Instalar drivers privativos de video AMD (ATI)
LinuxporAnónimo2/14/2011

La idea de este post es comentar acerca de cómo instalar y/o actualizar correctamente los drivers privativos de video de AMD (ex ATI), para linux (Ubuntu en particular) Como siempre, todo surgió en base a una necesidad: actualizar los drivers de video. Y luego un problema: una instalación errónea que me dejo sin interfaz gráfica (por no más de cinco minutos, se arregló al toque, jeje) Para llevar a cabo el proceso de instalación/actualización y luego testeo, escribí unos sencillos scripts para ese fin. Están orientados para Ubuntu, Maverick en particular, pero sirven para muchas otras distros y versiones (claro, solo lo he testeado en mi máquina, por lo que si no tienen Ubuntu Maverick me comentan si ha funcionado o no...). Aquellos con otras distros que no usen apt-get sabrán modificarlo acorde. Para escribirlos, seguí el instructivo bien detallado de la wiki no oficial de ati: http://wiki.cchtml.com/index.php/Main_Page, particularmente la sección de Maverick: http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide Son tres scripts: uno se encarga de la instalación/actualización, el otro de la verificación de la instalación y finalmente uno que desinstala los privativos y deja los open source. Con mucha facilidad se podría integrar en uno solo, usando un switch case y presentando un menú o leyendo parámetros de la línea de comandos... Eso quedará para después, quizá. Y estaría bueno hacerlo más universal, para otras distros/versiones. Scripts catalyst_install: instala/actualiza los drivers privativos ACTUALIZADO 14/07/2012 para Debian y otras distros ACTUALIZADO 10/03/2012: Los nuevos paquetes de drivers comienzan com 'amd...' en lugar de 'ati...' #!/bin/bash # Script para actualizar los drivers de ATI/AMD # By HacKan (2011, 2012) # Basado en la explicacion de # http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide # Version: 0.5 # ToDo # > verificar paso a paso # > descargar manualmente pidiendo (u obteniendo de otra forma) los drivers actualizados # Definiciones catalyst_os="catalyst_os" catalyst_test="catalyst_test" catalyst_install="catalyst_install" cur_dir="`pwd`" distro_version="`lsb_release -is`/`lsb_release -cs`" tmp_dir="$HOME/CATALIST_DRV_TMP" # <> echo "AMD (ATI) Catalyst install / update by HacKan 2011 (HacKan & CuBa co.)" echo "http://www.hackan.com.ar" echo "" echo "Se procedera a instalar/actualizar los drivers de video de AMD (ATI)" echo "Puede que muchos comandos devuelvan error, esto es normal" echo "" echo "Este script se realizo en base a la guia:" echo " http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide" echo "Cualquier inconveniente, consulte la guia de su distribucion:" echo " http://wiki.cchtml.com/index.php/Ubuntu_`lsb_release -cs | sed 's/([a-z])([a-zA-Z0-9]*)/u12/g'`_Installation_Guide" echo "" read -n 1 -t 20 -p "Presione una tecla para continuar..." echo "" mkdir ${tmp_dir} > /dev/null 2>&1 cd ${tmp_dir} # ToDo: obtener automaticamente los drivers de la pag echo "Por favor, desacarge los drivers a instalar en el directorio ${tmp_dir}" echo "Se trata de un archivo con nombre "-driver-installer--x86-x86_64.run"" echo "Puede obtenerlos de: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx" read -p "Presione INTRO (ENTER) para continuar..." echo "" if [ -r *-driver-installer-*.run ]; then # Desinstalar echo "Procediendo a desinstalar drivers antiguos..." echo "" sudo sh /usr/share/ati/fglrx-uninstall.sh sudo apt-get -y remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx sudo apt-get -y remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon echo "" echo "Terminado" # <> # Instalar # Dependencias echo "Instalando dependencias..." echo "" sudo apt-get -y install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 wget execstack libelfg0 if [ `arch` = "x86_64" ]; then sudo apt-get install ia32-libs; fi echo "" echo "Terminado" # <> echo "Iniciando instalacion de drivers privativos..." package="" while [ -z ${package} ]; do echo "" # Probar si la distro actual forma parte de los paquetes del driver sh *-driver-installer-*.run --listpkg | grep ${distro_version} if [ $? -eq 0 ]; then package=${distro_version} else echo "No se encontro la version de su distro ${distro_version} en la lista de distros del driver" echo "A continuación se imprimira la lista, seleccione escribiendo tal cual aparece (respetando mayusculas) su distro de la misma" read -n 1 -p "Presione una tecla para continuar..." sh *-driver-installer-*.run --listpkg echo "--------- ---------" read -p "Ingrese distro: " distro_version fi done sh *-driver-installer-*.run --buildpkg ${package} sudo dpkg -i fglrx*.deb sudo aticonfig --initial -f echo "Se termino de instalar el driver de video" echo "Por favor, reinicie su sistema y luego ejecute "${cur_dir}/${catalyst_test}" para verificar que la instalacion es correcta" echo "Si al reiniciar no tiene video, inicie en modo rescate y reinstale los drivers" else echo "No se encontro el driver!!" echo "Ejecute este script nuevamente" echo "Alternativamente, puede ejecutar "${cur_dir}/${catalyst_os}" para instalar los drivers Open Source (libres)" fi cd $HOME rm -rf ${tmp_dir} read -n 1 -t 20 -p "Presione una tecla para finalizar..." #<> exit 0 ------------------------------------------------ catalyst_test: realiza dos simples pruebas para verificar que el driver se instalo correctamente. #!/bin/bash # Script para testear los drivers de ati/AMD # By HacKan (2011) # Basado en la explicacion de # http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide # Version: 0.18 # Definiciones catalyst_os="catalyst_os" catalyst_test="catalyst_test" catalyst_install="catalyst_install" cur_dir=`pwd` # <> echo "AMD (ATI) Catalyst test by HacKan 2011 (HacKan & CuBa co.)" echo "http://www.hackan.com.ar" echo "" echo "Se procedera a testear los drivers de video de AMD (ATI)" echo "ATENCION: si acaba de instalar o actualizar los drivers, reinicie primero!!" echo "" echo "Este script se realizo en base a la guia:" echo " http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide" echo "Cualquier inconveniente, consulte la guia de su distribucion:" echo " http://wiki.cchtml.com/index.php/Ubuntu_`lsb_release -cs | sed 's/([a-z])([a-zA-Z0-9]*)/u12/g'`_Installation_Guide" echo "" read -n 1 -t 20 -p "Presione una tecla para continuar..." echo "" echo "Test #1" echo "Usted deberia leer algo similar a lo siguiente:" echo "" echo "| display: :0.0 screen: 0" echo "| OpenGL vendor string: ATI Technologies Inc." echo "| OpenGL renderer string: ATI Radeon HD 4500 Series (Depende del modelo de su placa)" echo "| OpenGL version string: 3.3.9901 Compatibility Profile Context (Depende del modelo de su placa)" echo "" fglrxinfo echo "Si NO pudo leer correctamente algo similar a lo indicado, revise la instalacion del driver y/o dirijase a la pagina previamente mencionada" echo "Presione CTRL+C para salir" read -n 1 -p "Si todo esta OK, presione una tecla para continuar..." echo "" echo "Test #2" echo "Usted deberia ver una ventana con un cubo rotando, y dentro del mismo unos engranajes de colores girando" echo "Si experimenta algun inconveniente con respecto a la velocidad o un cuelgue, tipee: sudo aticonfig --tls=0" echo "Cierre dicha ventana para continuar..." fgl_glxgears echo "Han finalizado las pruebas" read -n 1 -t 5 exit 0 ------------------------------------------------ catalyst_os: desisntala los drivers privativos e instala los open source #!/bin/bash # Script para desinstalar los drivers de ATI/AMD # By HacKan (2011) # Basado en la explicacion de # http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide # y # https://wiki.ubuntu.com/X/Troubleshooting/FglrxInteferesWithRadeonDriver#Problem:%20%20Need%20to%20fully%20remove%20-fglrx%20and%20reinstall%20-ati%20from%20scratch # Version: 0.1 # Definiciones catalyst_os="catalyst_os" catalyst_test="catalyst_test" catalyst_install="catalyst_install" cur_dir=`pwd` # <> echo "AMD (ATI) Catalyst OpenSource install by HacKan 2011 (HacKan & CuBa co.)" echo "http://www.hackan.com.ar" echo "" echo "Se procedera a instalar/actualizar los drivers de video Open Source" echo "Se eliminaran los drivers privativos de AMD (ATI)" echo "" read -n 1 -t 20 -p "Presione una tecla para continuar..." echo "" # Desinstalar echo "Procediendo a desinstalar drivers antiguos..." sudo sh /usr/share/ati/fglrx-uninstall.sh sudo apt-get -y remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx sudo apt-get -y remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon echo "Terminado" # <> # Instalar echo "Iniciando instalacion de drivers open source..." sudo apt-get install xserver-xorg-video-ati sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core sudo dpkg-reconfigure xserver-xorg echo "Terminado" echo "Se recomienda que reinicie su equipo antes de continuar con su uso" read -n 1 -t 20 -p "Presione una tecla para finalizar..." #<> exit 0 Procedimiento Simplemente copian y pegan el contenido de cada script en un archivo (uno por script), lo guardan, le dan permiso de ejecución y finalmente ejecutan el que necesiten. Pueden ejecutarlo desde Nautilus (explorador de archivos de Ubuntu) dándole doble click y seleccionando "Ejecutar en terminal". O pueden hacerlo a mano, desde una terminal dirigirse al directorio donde está el script y tipear: ./nombre_script o bien bash nombre_script Paso a paso, sin script Para instalar los drivers privativos Descargamos de la página de amd los drivers actualizados: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx Lo guardamos en una carpeta, p.e. el escritorio. Abrimos una consola (CTRL+ALT+T) y nos dirigimos a dicha carpeta: cd ~/Escritorio Antes de instalarlo, nos aseguramos de eliminar tanto los drivers open source como cualquier versión anterior de los drivers privativos: sudo sh /usr/share/ati/fglrx-uninstall.sh sudo apt-get -y remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx sudo apt-get -y remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon Seguimos con las dependencias: sudo apt-get -y install build-essential cdbs fakeroot dh-make debhelper debconf libstdc++6 dkms libqtgui4 wget execstack libelfg0 if [ `arch` = "x86_64" ]; then sudo apt-get install ia32-libs; fi y ahora sí los drivers: sh *-driver-installer-*.run --buildpkg Ubuntu/`lsb_release -cs` sudo dpkg -i fglrx*.deb sudo aticonfig --initial -f Para terminar, reiniciamos: sudo reboot Luego, conviene realizar los testeos, para verificar que anda todo ok: fglrxinfo Debería devolvernos algo como display: :0.0 screen: 0 OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: ATI Radeon HD 4500 Series OpenGL version string: 3.3.9901 Compatibility Profile Context Y finalmente fgl_glxgears Se debería abrir una ventana con fondo negro, y dentro un cubo rotando que contiene tres engranajes de colores por cara, que se mueven aparte del cubo. Cada 5 segundos verán en la terminal que les indica la cantidad de FPS a la que se mueve el cubo. Sí, se que justo se ve solo una cara, ¡pero es un cubo! Eso sería todo Para instalar los drivers open source Empezamos desinstalando los drivers privativos y cualquier rastro de otro driver antiguo: sudo sh /usr/share/ati/fglrx-uninstall.sh sudo apt-get -y remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev* xorg-driver-fglrx sudo apt-get -y remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon Procedemos a instalar los drivers: sudo apt-get install xserver-xorg-video-ati sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core sudo dpkg-reconfigure xserver-xorg Y reiniciamos: sudo reboot Si todo sale mal... En caso de que se hayan quedado sin video, no hay necesidad de entrar en pánico. En el inicio, en grub, seguro tienen el famoso 'recovery mode', que muchos se habrán preguntado para que carajo sirve. Pues bien, entran en ese recovery mode, seleccionan la ultima opcion con la flechita hacia abajo (consola modo root) y ejecutan el script catalyst_os que instala los drivers open source, que andan sí o sí. Tipean reboot para reiniciar y ya está todo ok, pueden probar reinstalar los drivers privativos o lo que deseen. También, en dicho modo, pueden ejecutar la opción que dice 'modo grafico seguro' o 'safe graphic mode' y desde allí reinstalar los drivers. ¿Y si yo deshabilite esa opción del arranque? No hay problema, cuando lleguen al grub (también sirve para burg), seleccionan la opcion de arranque de ubuntu pero NO APRETAN ENTER, sino que apretan la tecla E para entrar al modo edicion. Bajan hasta la línea que dice linux /boot/vmlinuz.... ... ... ro quiet splash y borran quiet splash y escriben single, tal que quede como linux /boot/vmlinuz.... ... ... ro single Finalmente, presionan CTRL+X para arrancar, y siguen los pasos anteriormente descriptos. Comentarios finales Cualquier duda, comment o PM. Fue otra creación de HacKan & CuBa co. ¡Saludos!

87
34
Ubuntu, los diskettes y VirtualBox
Ubuntu, los diskettes y VirtualBox
LinuxporAnónimo11/9/2010

Introducción La semana pasada, en el laburo, instalé una PC nueva, le puse Ubuntu y debido a los programas que usa, tuve que ponerle VBox con WinXP. Aún sigo tratando de hacer andar dichos progs en Wine o DosEMU, pero no tuve éxito. Son hechos a medida, así que no los conocen. El punto es que, aparte de que la mayoría de los progs están basados en DOS, usan diskettera para almacenar y trasferir archivos (!!). También, nuestro bendito país obliga al uso de diskette, para presentar informes en la Superintendencia. El meollo del asunto es que Ubuntu (no se las demás distros, pero parece que es un problema general), se lleva como el traste con los diskettes. No hubo forma de montar los diskettes con Nautilus. Ni tampoco ejecutando a mano sudo mount.... Para los que tengan este problema, sigan lleyendo. También, les contaré como hacer para que VBox trabaje con la diskettera, porque funciona muy mal si se le da acceso directamente a la misma. Solucionando problema de montaje Para poder montar los dikettes, lo que hice fue crear un script que los (des)monte a simple golpe de mouse. Y en el camino, encontré un problema con el fstab; paso a comentarles... 1- Editar /etc/fstab y comentar la línea correspondiente al montaje de la disketera, tal de desactivarla (ponerle un # al inicio de la línea o elminarla). Esta línea tiene un error, que por defecto uno de los parámetros fija al sistema de archivos con utf8, cosa que los diskettes formateados de DOS/Win no son compatibles. Aún eliminando este parámetro, no hay forma de que se logre montar los diskettes con fstab, por lo que no queda otra más que desactivar dicha línea. 2- Editar /etc/sudoers si el usuario que montara diskettes no es administrador: sudo visudo Agregar al final del archivo: usuario ALL=NOPASSWD: /bin/mount -t vfat /dev/fd0 /media/floppy0,/bin/umount /media/floppy0 Si se desea agregar un grupo de usuarios, entonces en lugar de usuario colocar %grupo Esto es para que el script no le pida clave al usuario. No le quita ni debilita significativamente la protección del sistema, dado que el usario solo podrá ejecutar como root esa instrucción exacta y tal cual, por lo que es bastante seguro. Si no se hace este paso, entonces se le deben dar permisos al usuario para que ejecute sudo, lo que me parece terrible. Se puede quitar la opción NOPASSWD, y entonces le pedirá clave, pero no es recomendable si el usuario recién sale de Windows... 3- Crear el siguiente script en un lugar que el usuario tenga acceso, como ser su carpeta home, y darle permiso de ejecución: #!/bin/sh # by HacKan 2010 # http://www.hackan.com.ar # Ejecuta accion de montado y desmontado del diskette # sin requerir accion del usuario # Nota: el usuario debe poder ejecutar sudo /bin/mount ... # y /bin/umount ... # editar /etc/sudoers con visudo para esto # Chequea si el diskette esta desmontado volume="/media/floppy0"    # Si se cambia esta opción, recordar editar /etc/sudoers acorde if mount | grep "on ${volume} type" > /dev/null then    # Esta montado el diskette; desmontarlo    sudo umount ${volume}    notify-send -i /usr/share/icons/Humanity/devices/48/3floppy_unmount.svg "Ya puede retirar el diskette" else    # No hay diskette montado, pero tampoco    # se si hay diskette en diskettera    sudo mount -t msdos -o umask=000 /dev/fd0 ${volume}    if [ $? -eq 0 ]; then        notify-send -i /usr/share/icons/Humanity/devices/48/3floppy_unmount.svg "El diskette está listo para ser usado"    else        notify-send -i /usr/share/icons/Humanity/devices/48/3floppy_unmount.svg "No hay ningún diskette en la diskettera"    fi fi exit 0 En un entorno multiusuario, podrían crear el script en /usr/bin para que todos tengan acceso al mismo. Reitero: recuerden hacerlo ejecutable: chmod +x /ruta/al/script 4- Crear un lanzador para que ejecute al script. El usuario deberá ejecutar el script cada vez que inserte o remueva un diskette (no se puede automatizar porque no hay autodetección de diskettes), por lo que conviene que simplemente de doble click a un 'acceso directo'. El lanzador lo crean en el escritorio o en la barra de panel, click derecho > crear lanzador. Para lanzar el script, donde dice comando: sh /ruta/al/script Se puede usar el sig. ícono: /usr/share/icons/Humanity/devices/48/3floppy_unmount.svg O el que quieran, claro Esto sería todo Modo de uso Ponen el diskette en la diskettera y lanzan el script. El mismo detectará que no hay diskette montado y lo montará. Si lanzan el script sin diskette en la diskettera, el mismo les dirá que no hay ningún diskette. Luego, antes o después de retirar el diskette, da igual (antes preferentemente), lanzan nuevamente al script, que detectará que está montado y lo desmontará. Ahora, sigamos con VBox. Solucionando problema con VBox ¿Y cómo hacemos para acceder al diskette desde VirtualBox? Bueno, les comento que configurando la máquina virtual para que acceda directamente a /dev/fd0 NO funciona. Para solventar esto, lo que hice fue crear una carpeta compartida, que apuntará a /media/floppy0 y luego en Windows creé una unidad de red, que apunta a dicha carpeta compartida (esta idea provino de mi jefe; antes de eso probé mil cosas que o eran complicadas o no funcionaban del todo bien). Configuremos VBox (funciona tanto en la versión OSE como en la de código cerrado; probé con VBox 3.2, la última de momento): 1- Click derecho sobre nuestra VM (virtual machine, máquina virtual) y click en Configuración 2- Vamos a Almacenamiento, y donde dice Árbol de almacenamiento, nos aseguramos que NO esté el Controlador de disquete. De existir, lo seleccionamos y apretamos la tecla SUPR (suprimir, borrar, delete, DEL) 3- Luego vamos a Carpetas compartidas y agregamos una: click en el respectivo botón, o en la tecla INS (insertar, insert; está arriba de SUPR generalmente); luego, configuramos de la siguiente manera: Ruta carpeta: /media/floppy0 Nombre carpeta: diskette El nombre de la carpeta puede ser cualquiera, pónganle el que quieran. ¡NO debe contener espacios ni caracteres extraños!; es importante que la ruta a la carpeta sea /media/floppy0 (o la que le corresponda al diskette montado, que es esa generalmente). Y listo, terminamos en cuanto a VBox. Ahora hay que configurar es SO huésped. Esto sirve tanto para linux como para windows; el primer caso no lo probé, y no tiene mucho sentido me parece. Les comentaré con respecto a un huésped de Windows XP: Inicio > ejecutar > notepad Allí, escriben: net use a: /vboxsvr/diskette Si a la carpeta compartida le pusieron otro nombre que no sea diskette, editen la línea anterior acorde. Ahora, guardan el archivo en el escritorio (o donde quieran, después lo moveremos) y le ponen algún nombre con la extensión .cmd; usen comillas dobles (") para esto: "diskettes.cmd", en la ventana de Guardar cómo. Ahora van a Inicio > Todos los programas > Inicio (carpeta) y le dan click derecho > abrir o explorar. Allí dentro pegan el archivo que acabamos de hacer. Con esto, nos aseguramos que siempre Windows se conecte a la carpeta compartida, y la mapeamos como unidad A: (diskette). Denle doble click al archivo para ejecutarlo y prueben si tienen acceso a la unidad A Recuerden que primero, para acceder al diskette, debe estar montado desde Ubuntu; por eso hicimos todo lo anterior. ¡Esto es to, esto es to, esto es todo amigos! (BugsBunny dixit) Fuente > ¡Por la idea de hacerle un grep al mount! Palabras finales Pueden distribuir y/o modificar el script a gusto y piacere, es open source Lo que les pido es que me mencionen en el mismo. Se aceptan sugerencias, corrección de bugs, etc. <sí, tengo un formato de posts predefinido, jaja> Saludos especiales a , que me dijo que hiciera este post Y a mis seguidores Espero que les sea útil. Sin más, me despido. ¡Saludos! Fue otra creación de HacKan & CuBa co.

31
17
Solucionar problema fsck.ntfs no existe
Solucionar problema fsck.ntfs no existe
LinuxporAnónimo12/3/2010

avisoimportante dijo:ntfsfix fuerza un chequeo con chkdsk cada vez que se inicia windows, lo que resulta super incomodo. No estoy seguro si además realiza algún cambio en la partición, y estoy dudando de su funcionalidad. De momento, les recomendaría NO implementarlo hasta no tener más info. Si alguno tiene más info, favor de comunicarse- Este post está orientado a aquellas personas que tengan particiones con formato NTFS, y en particular para Ubuntu, pero supongo que funciona en otras distros (si es que este problema existe). Muchos habrán visto, cuando se inicia Ubuntu, que aparece un mensaje que dice algo así como fsck desde util-linux-ng 2.17.2 fsck: fsck.ntfs: no se encontró fsck: Error 2 mientras se ejecutaba fsck. ntfs para /dev/sdb1 Pues eso es correcto, dado que fsck.ntfs aún no existe. Pero hay una alternativa: ntfsprogs. En Ubuntu, creo que desde la 9 viene instalado por defecto. En otras distros, usen su gestor de paquetes para instalarlos. El programa que nos compete es ntfsfix. Nota: Este programa NO reemplaza al chkdsk de Windows, pero al menos permite determinar si una partición NTFS está en buen estado o no; luego necesitamos Windows con su chkdsk para solucionar el problema que hubiese (si no tenés Windows, ¿para qué tenés una particion NTFS?). Para solucionar el inconveniente, y luego de varias pruebas, llegué a este resultado: un script (ta-dah!). Lo que haremos será crear un script que ejecute ntfsfix cuando el sistema llame a fsck.ntfs. Manos a la obra: CTRL+ALT+T (abrimos terminal) sudo gedit /usr/sbin/fsck.ntfs Pegan lo siguiente y salvan: #!/bin/bash # by HacKan & CuBa co. 2010 # $1 contiene "-a", que ntfsutils no acepta, # por lo tanto le paso $2, que tiene /dev/sdXY /usr/bin/ntfsfix "$2" Le damos permiso de ejecución: sudo chmod +x /usr/sbin/fsck.ntfs Finalmente: sudo ln -s /usr/sbin/fsck.ntfs-3g /usr/sbin/fsck.ntfs Con este último comando creamos un enlace, tal que fsck.ntfs-3g apunte a fsck.ntfs. Como podrán leer en el comentario del script, el sistema llama de la siguiente manera: fsck.ntfs -a /dev/sdXY donde sdXY es la denominación de la partición correspondiente. Y -a, vaya uno a saber qué será en el futuro, pero ntfsfix no acepta ese parámetro, y por ello en el script le pasamos directamente la partición (/dev/sdXY), que es el segundo parámetro ($2). Es por ello que la solución que plantean en el foro, indicado como fuente , no es del todo correcta. Pero ayudó a ubicarme y darme la idea. Pues bien, eso es todo; muy sencillo realmente. Lo que obtendrán con esto es el siguiente mensaje al inicio, en lugar del error: fsck desde util-linux-ng 2.17.2 Mounting volume... OK Processing of $MFT and $MFTMirr completed successfully. NTFS volume version is 3.1. NTFS partition /dev/sdb1 was processed successfully. Eso, y el hecho de realmente estar verificando la partición NTFS, que son frágiles en verdad.... ¿Cómo determine estas cosas? Lo siguiente es puro bullshit, pero si a alguno le interesa cómo llegué a concluir esto, pues sigan leyendo. Primero, había hecho como indicaba la fuente , pero me daba error diciendo que "el parámetro -a es deconocido". OK, entonces dije: ¿qué parámetros le pasa el sistema a fsck.ntfs exactamente? Para saberlo, hice un primer script: #!/bin/bash echo "$@" y lo guardé como se indica más arriba. Luego, me fije en el log de booteo: cat /var/log/boot.log Nota: en Ubuntu viene desactivado el log de booteo, para activarlo hay que editar el archivo /etc/default/bootlogd y cambiar BOOTLOGD_ENABLE=no por BOOTLOGD_ENABLE=yes, y viceversa para desactivarlo Y allí leí la línea que decía: -a /dev/sdb1 Listo, problema solucionado: lo que sirve es el segundo parámetro. Entonces escribí el script que está más arriba. Fuentes Espero que les sirva ¡Saludos!

40
4
S
Sistema encriptado y apertura con llave USB
LinuxporAnónimo5/4/2011

Quería comentarles que escribí una guía paso a paso para encriptar todo el sistema, o cualquier partición en particular, usando LUKS. Pueden verla en mi página: http://www.hackan.com.ar/2011/05/linux-sistema-encriptado-y-apertura-con-llave-usb Aquí hago una transcripción, pero está toda deformada por el tema de formatos html a bbcode, y es muy larga como para editarla completamente... Si alguno conoce algún buen sitio que convierta de HTML a BBCode, me avisa Saludos, HacKan La idea de este tutorial es explicar paso a paso, detalladamente, el cómo encriptar todas las particiones de tu linux usando LUKS. Este sistema es tan seguro como podría ser, dado que emplea distintos algoritmos reconocidos como p.e.: AES, Serpent, y otros. Y la mejor parte es evitar el fastidio de tener que recordar una o varias claves, dado que la idea es también desencriptar el sistema usando un archivo llave ubicado en un dispositivo USB cualquiera, como ser un pendrive. Además, se explicará cómo hacer para poder hibernar, algo que considero infaltable en cualquier sistema, sea portable o no. La mayoría de los tutoriales que hay por la red no explican bien - o directamente ni lo mencionan - acerca de cómo hacer que la hibernación funcione. Esta guía está orientada a Ubuntu, y está probado para Ubuntu 10.04 y 10.10, pero se puede hacer con CUALQUIER distro. Yo tengo así encriptados un servidor, una pc de escritorio y una netbook, además de discos externos y demás. En cuanto al rendimiento, les aseguro que no es tan notoria la baja, si bien obviamente el rendimiento del sistema será ligeramente inferior a que si no estuviera encriptado. Puede hacerse más notorio a la hora de realizar gran movimiento de pesados archivos. Considero que los dispositivos portátiles deberían ser encriptados, dado que es muy factible su pérdida; la privacidad es algo por demás importante, y lo que afecte a la misma afecta de igual manera a la libertad. Este sistema es, criptográficamente hablando, muy fuerte y seguro, siempre y cuando no caigan en las mismas manos la llave y el dispositivo encriptado. Es por ello que la llave debe estar siempre con nosotros, y oculta preferentemente. También puede emplearse una clave escrita, pero esto implica tener que recordarla y además que la misma nunca será tan fuerte contra ataques de fuerza bruta como podría serlo un archivo pseudoaleatorio de 4096 bytes. Claro que todo depende de lo que nosotros querramos hacer. Precisamente esa es la ventaja de linux: hacemos lo que queremos, de la forma en que querramos hacerlo. Esta guía tratará de ser flexible, explicando distintas opciones; pero esto no es fácil de realizar y por eso desde ya le pido disculpas, caro lector, si algo no es entendible. Deja un comentario si deseas que clarifique alguna parte. Se explicará cada cosa por separado y de manera genérica, y en el punto 5 se explicará cómo aplicar todo eso para tener el sistema completamente encriptado. Indice Consideraciones Backup completo del sistema Restaurando el backup Particionando Creando particiones encriptadas Creando las llaves Borrado seguro de datos Encriptando particiones SWAP encriptado Desencriptar desde USB al iniciar Encriptando todo el sistema Apéndice Deshabilitar y/o agregar llaves Sistema de doble llave Si todo sale mal... Puntos débiles, vulnerabilidades Fuentes de información 1. Consideraciones Empezaré con lo más importante: ¡HACE BACKUP DE TODA LA INFORMACION ANTES DE CONTINUAR! Ahora que ya tienes el backup hecho, continuaré diciendo que es importante leer todo antes de hacer nada: cuando borres algo, formatees una partición, la encriptes o lo que sea, los archivos que se perdieron, se perdieron. Recuperarlos será una tarea muy, muy tediosa, creéme que tengo experiencia; recalco nuevamente: HACER BACKUP. La guía está escrita por partes, y por ello no puedes hacer todo 'de una' sin haber leído la guía completa. El punto 5 sí resume todo, pero no explica nada. No me haré responsable si por seguir esta guía pierdes archivos o tu sistema no arranca más. Es importante HACER BACKUP y seguir los pasos con detenimiento, tratando de entender lo que se está haciendo. Si tienes un disco externo, o un disco secundario, con espacio libre suficiente, quizá quieras crear una partición encriptada allí y luego mover todos tus archivos para poder trabajar en tu disco principal. Para poder encriptar cualquier partición, es necesario, sí o sí, formatear esa partición, y en consecuencia se borrarán todos los archivos que contengan. Entonces, no solo debes tener un backup de la información, sino espacio suficiente donde mover temporalmente esa información para luego reestablecerla. Es de vital importancia manejar con cuidado las llaves creadas (se usará el término ‘llave’ para referirse al archivo que desencripta las particiones). Esto es, no solo no deben perderse, sino que ¡no se puede correr el riesgo de tener solo una copia!. Pero claro, es importante que la copia no sea accesible. Por ello escribí el apéndice Sistema de doble llave. Este artículo no cubre acerca de cómo o dónde almacenar una copia de la llave, pero basta con ser ingeniosos: caja de seguridad en un banco, enterrado en el jardín de la casa de campo, etc.... Two things to remember Security=Usability^-1 There is a fine line between being paranoid and not being in touch with reality. Extraído de DM-Crypt with LUKS, el artículo no indica quién es el autor. Hasta aquí con advertencias, prosigamos. Arranca con tu sistema e instala los paquetes que necesitaremos (puede que tu distro ya los traiga): sudo apt-get install cryptsetup libcryptsetup1 libpam-mount Cuando termine la instalación reinicia e inicia tu sistema con un LiveCD o LiveUSB de una distro a elección, necesitaremos una consola como mínimo (jaja, bastante obvio, ¿no?) y si lo deseas, interfaz gráfica. Personalmente, uso Ubuntu. NO PUEDES CONTINUAR si has arrancado desde tu sistema, por favor reinicia y vuelve a este sitio desde tu distro Live. Puedes leer mi tutorial para crear un pendrive con varias distros, quizá te sirva. Puede que debas volver a instalar los paquetes mencionados en tu distro live. Aclaración importante: debes entender la diferencia entre el usuario root, la carpeta /root y la raíz del sistema, también llamada root o "/". 2. Backup completo del sistema En este apartado les comentaré cómo hacer un backup de la partición raíz del sistema (root, "/" y de cualquier otra partición. En linux, hacer un backup completo del sistema es realmente fácil, increíblemente fácil. Basta con crear un archivo .tar, que no es más que un contenedor de archivos. Esto se hace con el comando tar. Básicamente, un backup se hace copiando TODOS los archivos a otro lado. Para restaurarlo, basta con copiarlos de vuelta. Así podemos llevar o migrar nuestro linux de una PC a otra. En este caso, conviene hacer al menos tres backups separados: uno para "/", otro para "/home" y finalmente otro para "/boot". El lugar donde almacenemos dicho backup debe tener espacio suficiente. Te recuerdo que para encriptar una partición, sí o sí habrá que formatear. ¿Iniciaste con tu distro live? si no es así, hacelo ahora y luego montá las particiones correspondientes a tu sistema. En Ubuntu, basta con hacerle un click a la partición desde el menú Lugares para que se monten automáticamente en /media/&lt;etiqueta_de_la_partición_o_UUID&gt; En cualquier caso, podemos montar la partición 'a mano', abriendo un terminal como root: mkdir /media/particionX mount /dev/sdXY /media/particionX Donde llamé /media/particionX a la carpeta de montaje, te recomiendo usar un nombre significativo como root o home; y /dev/sdXY es la partición que corresponde. Ejecutando fdisk -l como root nos dará un listado de las particiones que tenemos. O ejecutando blkid también como root nos dará info sobre las particiones y su UUID correspondiente. Asumiré que vas a hacer un backup a un disco externo, que estará montado de /media/backup. Si este no es tu caso, simplemente cambia la ruta /media/backup por la que uses. Además, llamaré /media/root y /media/home a las particiones de root ("/" y home respectivamente, y asumiré que no hay otras particiones. Ajusta esto como corresponda. Te recuerdo que este proceso puede demorar bastante tiempo, varios minutos u horas, dependiendo de cuánta información vayas a respaldar. Abrí un terminal como root: cd / tar -cvpzf /media/backup/root_backup.tar.gz --exclude=/media/root/proc --exclude=/media/root/lost+found --exclude=/media/root/sys --exclude=/media/root/mnt --exclude=/media/root/media --exclude=/media/root/home --exclude=/media/root/boot /media/root tar -cvpzf /media/backup/boot_backup.tar.gz /media/root/boot tar -cvpzf /media/backup/home_backup.tar.gz /media/home Basado en BackupYourSystemTAR de la documentación de la comunidad de Ubuntu; allí se detalla qué hace cada parámetro del comando tar, del cual se puede saber más detalles consultando al manual: man tar. Transcribo del primero: tar - es el comando que genera el paquete c - crear un nuevo archivo de respaldo. v - modo verboso, se imprimirá en pantalla todo lo que suceda. p - preserva los permisos de los archivos (N. del T.: este parámetro es fundamental). z - comprime el archivo con 'gzip' para hacerlo más liviano. f &lt;nombre_archivo&gt; - especifica el nombre del archivo de respaldo a generar, acepta ruta completa como en nuestro ejemplo: /media/backup/algo_backup.tar.gz --exclude=/ruta - Este parámetro define un directorio o ruta particular para excluir. Excluimos directorios que no queremos en ese archivo de respaldo, como p.e. todas las particiones montadas (/mnt y /media) y otras. Restaurando el backup De esta manera ya tenemos hecho un backup del sistema completo. Para restaurarlo, lo que haremos será desempaquetar los archivos en las particiones que correspondan. Llamaré /media/cryptoroot y /media/cryptohome a las particiones encriptadas (abiertas y montadas allí) de root y home respectivamente, y /media/boot a la de boot (que no estará encriptada). Entonces, usamos nuevamente el comando tar para desempaquetar los backups que creamos con anterioridad (siendo root): tar -xvpzf /media/backup/root_backup.tar.gz -C /media/cryptoroot tar -xvpzf /media/backup/home_backup.tar.gz -C /media/cryptohome tar -xvpzf /media/backup/boot_backup.tar.gz -C /media/boot Y listo, ya tenemos nuestro sistema restaurado y encriptado. Ahora debemos reconfigurarlo, cosa que explicaré en el apartado correspondiente. 3. Particionando Si solo deseas encriptar una partición en particular, o bien encriptar una unidad externa, o ya tenés el sistema particionado, pasá al punto 4. Si quieres tener todo el sistema encriptado (esto sería todas las particiones, incluyendo home, root y swap) entonces primero debemos preparar dichas particiones. Necesitaremos que /boot esté en una partición propia, dado que para arrancar el sistema y desencriptar las demás particiones, esta debe estan sin encriptar. Esto es, en principio, una vulnerabilidad (leer el apéndice correspondiente). Es posible tener /boot en un pendrive, y así eliminamos la vulnerabilidad, pero eso escapa el alcance de esta guía. Luego, podemos optar por tener una partición gigante encriptada que sera a su vez reparticionada para root, home y swap, o bien tener tres particiones encriptadas por separado. Según leí, la primera opción es la más sencilla y teóricamente más eficiente, pero no hay nada demostrado. Yo empleo lo segundo, particiones encriptadas por separado, por la simple razón de que lo hice así y luego leí que se podía tener todo en una, qué cómico. Los sistemas de archivos en linux funcionan como capas: podemos tener una capa de RAID, una capa de encriptado LUKS, una capa de LVM, y finalmente siempre estará la capa con el formato EXT2/3/4 o HFS o NTFS o el que se desee. Luego, cada capa puede particionarse a gusto. Es por eso que podemos tener tres particiones en una sola encriptada con LUKS. En este caso, haremos dos capas: LUKS la primera y EXT3/4 la segunda, más allá que lo hagamos en una única partición LUKS o en varias. A continuación hablaré sobre las particiones y qué directorios haremos en particiones separadas. Para saber más sobre qué hacen o cómo se organizan los directorios de linux, este artículo es muy completo. Si no deseas encriptar la partición del sistema, "/", entonces te recomiendo que crees una partición para /tmp (el directorio temporal) y la encriptes, dado que si no sería una brecha de seguridad: tenemos todos los documentos encriptados pero hemos dejado suelto todo lo que haya pasado por el directorio temporal. Entonces debemos crear las particiones: para /boot usaremos 200MB, con eso sobra. Allí se ubica el GRUB o el administrador de arranque (boot manager | bootloader) que usemos. Si no encriptamos /, entonces habría que dedicarle unos 5gb a /tmp (suficiente para manejar, p.e., una ISO de un dvd). El resto lo dividiremos en SWAP, / y /home. Para SWAP, debemos decidir si queremos hibernar o no: si vamos a hibernar, SWAP debe tener un tamaño mayor o igual a la cantidad de memoria RAM, p.e. si tenemos 2GB de RAM, SWAP debe tener un tamaño de al menos 2GB (siempre conviene darle un poquito más, 2,1GB); si no vamos a emplear la hibernación, con un swap de 0,5~1GB sobra. Para /, con 20GB estamos de sobra en cualquier distro. Si quieres estar más tranquilo, déjale 30GB; personalmente, nunca vi un linux que ocupe más de 10GB (sin contar /home, claro). Y finalmente usaremos el resto del disco para /home, que es donde estarán todos los archivos y documentos de todos los usuarios. Para el caso de un servidor, también habría que separar /var y /opt, o bien hacer que / contenga a /var y /opt, y darle un mayor tamaño; en este caso, búsca en google más información acerca del tamaño que conviene que tenga este tipo de particionado. Les comento que hay dos tipos de particiones, las primarias y las lógicas. Podemos tener hasta un máximo de 4 particiones primarias en un disco. Como claramente esto no alcanza, la solución es hacer que una de ellas sea una partición extendida, y dentro de la extendida se pueden crear tantas particiones lógicas como necesitemos (no recuerdo cuál es la cantidad límite). Las primarias se enumeran normalmente del 1 al 4, y las lógicas comienzan desde el 5. Es indiferente hacer que una partición sea primaria o lógica, no hay NINGUNA diferencia en cuanto a uso ni rendimiento. Muchos hacen una primaria y de inmediato una extendida con al menos una lógica dentro. Yo suelo crear tres primarias y luego una extendida con tantas particiones como necesite tener. En éste artículo de Wikipedia está bien explicado el tema. Recapitulando: /boot: 200MB Si vamos a montar todo en una única partición encriptada, entoces le cedemos a dicha partición el resto del disco, luego creamos el sistema LUKS (ver punto 3) y finalmente particionamos separando /, /home y SWAP como se detalla a continuación. Si no: SWAP Con hibernación: igual al tamaño de la RAM Sin hibernación: 0,5GB ~ 1GB si "/" no estará encriptado /tmp: 5GB /var y /opt para servidores: a convenir con "/" encriptado: 20GB ~ 30GB /home: el resto Para crear las particiones, puedes usar el Gparted, una herramienta gráfica muy útil que permite redimensionar, eliminar, crear y demás, varios tipos de particiones (pero ojo, no maneja sistemas encriptados, por lo que solo servirá para crear la partición), o el Palimpsest (utilidad de discos), también muy útil pero no permite redimensionar particiones, aunque sí maneja y permite crear directamente particiones encriptadas con LUKS, aunque esto lo haremos en el punto 3 via la consola. Con una rápida búsqueda en Google, el primer sitio explica perfectamente bien cómo usar Gparted para crear las particiones que necesitamos. Con otra búsqueda, éste explica bien cómo usar el fdisk (particionador via consola). 4. Creando particiones encriptadas Ya tenemos el disco preparado y particionado, ahora vamos a crear el sistema de archivos LUKS, para luego reparticionarlo o directamente crear el sistema de archivos EXT2/3/4 o NTFS o el que querramos usar. Los dispositivos en linux se encuentran en el directorio virtual /dev. Allí accederemos para manipular los discos y particiones. Hay varias formas de hacer referencia una partición: puede ser por etiqueta, si tiene; por UUID, por nombre, por id, etc. Una forma muy común es llamarlas por /dev/sda2, /dev/sdc1, etc., donde el formato es /dev/sdXY, siendo X una letra de la 'a' a la 'z' que hace referencia al disco, e Y siendo un número mayor o igual a 1 que hace referencia al número de partición. Antes de encriptar una partición, empezaremos por crear su respectiva llave. Creando las llaves La idea es generar un archivo con contenido aleatorio (pseudo aleatorio en verdad, pero no entraré en discusiones filosóficas) que usaremos como llave. Este archivo nos permitirá desencriptar las particiones sin necesidad de tipear contraseñas. Hay muchísimas formas de hacerlo, una es usando el comando dd (no hace falta ser root): dd if=/dev/urandom of=mi_llave.key Donde mi_llave.key es el nombre que le daremos al archivo de llave; podemos usar cualquier nombre, el que querramos. Recomiendo usar un nombre que podamos identificar, como p.e.: home.key, mi_pc.key, etc. La extensión no necesariamente debe ser .key, puede ser p.e.: .bin o nada incluso. Al no haber indicado ninguna ruta de salida, el archivo será creado en el directorio en el que estábamos al ejecutar el comando. Esta llave debemos guardarla con nosotros. Si se pierde, no habrá forma de recuperar la información, al menos no en los próximos cientos o miles de años. Quizá nuestros tatara-tatara-....-nietos puedan crackear esta encriptación con los sistemas hiperpoderosos de aquel futuro (si la humanidad no se destruye antes, pero no entraré en esa cuestión), pero de momento será imposible desencriptar algo sin la llave. Es conveniente crear dos llaves, una maestra y una de uso regular. Esto se explica en el apéndice Sistema de doble llave. Borrado seguro de datos Criptográficamente hablando, si la partición que estamos encriptando tenía datos, deberíamos primero destruir todo sobreescribiendo la partición con ceros o bytes aleatorios. Este proceso demora mucho tiempo, dependiendo del tamaño de la partición, de la velocidad de escritura del disco y de la potencia de tu PC. Puede que tarde tal vez unos 10 o 20 minutos o varias horas (¡o días!). Este proceso también puede reducir la vida útil del disco si lo repetimos muchas veces. Para sobreescribir, podemos nuevamente usar el comando dd o el comando badblocks de distintas maneras (siendo root): badblocks -c 10240 -wsvt random /dev/sdXY dd if=/dev/zero of=/dev/sdXY dd if=/dev/urandom of=/dev/sdXY dd if=/dev/random of=/dev/sdXY Los ordené de la opción más veloz a la más lenta, a la vez que de la, criptográficamente hablando, menos segura a la más segura. Podemos leer aquí un poco más sobre el tema. Encriptando particiones Ya tenemos la llave. Ahora, para encriptar una partción ya creada, abrimos una consola o terminal como root (sudo -i o bien sudo su o como más te guste) y ejecutamos: cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sdXY --key-file=mi_llave.key -- ATENCION -- ¡Todos los archivos serán eliminados dado que dicha partición será formateada! Verficá dos veces haber hecho el backup correspondiente y haber indicado correctamente la partición antes de apretar ENTER. Luego, será muy tarde. Donde /dev/sdXY es la partición que vamos a encriptar, como ya expliqué unos párrafos más arriba; y mi_llave.key es el archivo llave que usaremos. Podemos especificar otro algoritmo que no sea AES, como p.e.: Serpent o Blowfish, pero eso está fuera del alcance de esta guía. Fijate si esto te sirve. Listo, ya tenemos nuestra partición encriptada, así de fácil. Ahora deberíamos abrirla y crear el sistema de archivos o hacer el reparticionado que corresponda. Para abrir la unidad encriptada, tipeamos (como root): cryptsetup luksOpen /dev/sdXY cryptodata --key-file=mi_llave.key Donde indicaremos la ubicación de la partición encriptada y la llave. cryptodata es el nombre que le asignaremos a la partición desencriptada (abierta en verdad, la partición sigue encriptada pero la abrimos para poder usarla). Puede ser cualquier cosa, sin espacios. Este nombre lo usaremos para referirnos a dicha partición abierta, de la forma /dev/mapper/cryptodata Luego crea el sistema de archivos en la partición abierta con mkfs: mkfs -t ext3 /dev/mapper/cryptodata Donde -t indica el sistema de archivos a crear, ext3 en este caso, y luego se indica la ubicación de la partición abierta. Podés crear cualquier sistema de archivos: ext2/3/4, hfs, ntfs, fat, etc. Leer la ayuda para más información: man mkfs Podés, si lo necesitas, particionar primero y luego crear el sistema de archivos. En ese caso usaremos Palimsest o fdisk, dado que Gparted no soporta trabajar con unidades encriptadas. Vuelve al punto 2 para más detalles sobre crear las particiones. Para cerrar la unidad encriptada, tipeamos (como root): cryptsetup luksClose cryptodata Debe desmontarse primero si es que estuviese montada: umount /dev/mapper/cryptodata SWAP encriptado Para encriptar el SWAP, hay al menos dos opciones dependiendo de si vas a usar la hibernación o no. Sin hibernación Si no usarás hibernación, entonces la idea es hacer que SWAP se genere en cada arranque del sistema, y se encripte con una clave aleatoria. Esto se hace simplemente indicandolo en los archivos de configuración /etc/crypttab y /etc/fstab, y entonces en cada inicio el sistema generará un sistema de archivos de intercambio SWAP encriptado. Por supuesto, esto hace que la hibernación falle, dado que SWAP se destruye en cada inicio. Edita el archivo /etc/crypttab como root y agrega: cryptoswap /dev/sdSW /dev/urandom swap Donde cryptoswap es el nombre que le has puesto al SWAP abierto y /dev/sdSW es la partición que le asignaste a SWAP. Ahora edita /etc/fstab como root y agrega: /dev/mapper/cryptoswap none swap sw 0 0 Y listo, no tenés que hacer nada con la particion, basta con que la misma esté vacía. En cada inicio, el sistema generará el SWAP y lo encriptará usando una clave aleatoria (/dev/urandom). A su vez, todo lo que exista en esa partición será destruido. Aunque no uses la hibernación, nada te impide usar el método que se explicará para la hibernación. Ambos son, criptográficamente hablando, igual de seguros. Si bien podemos admitir que ésta forma es técnicamente más segura, considerando el tiempo que tomaría romper (crackear) uno u otro método, podemos afirmar que ambos son igualmente seguros. Con hibernación Para este caso lo que haremos será crear una simple partición encriptada con luks, pero la llave no será un archivo, sino que usaremos una partición. Sí, así como leés: usaremos información de una partición, la de root ("/" p.e., para generar la llave. ¿Por qué no usar un archivo como en las demás? Bueno, el problema que existe es que si usamos un archivo, seguramente lo guardemos en la partición root o home, dado que boot no está encriptado. Pero cuando el sistema inicia y trata de montar SWAP para restaurar la hibernación, no podrá acceder a la llave, dado que root o home aún siguen encriptados. Sí podemos usar un archivo guardado en una unidad externa, pero no lo considero ni práctico ni conveniente, por lo que te dejo la tarea de investigar cómo hacerlo (y luego me cuentas y lo agrego aquí, a tu nombre claro está). Entonces, generemos nuestra llave a partir de la partición root. Considero que la misma ya está encriptada y abierta en /dev/mapper/cryptoroot, y que la partición de SWAP es /dev/sdSW (este es un nombre que acabo de inventar, seguramente sea /dev/sda2 o similar). Ejecutamos como root: /lib/cryptsetup/scripts/decrypt_derived cryptoroot &gt; /dev/shm/swap.key /dev/shm (en la mayoría de las distros) se trata de un sistema de archivos temporal, alojado solo en la memoria RAM. Esto es, la llave no se escribe al disco (en teoría), lo que debería eliminar los riesgos de ser recuperada. Y ahora encriptamos la partición con esa llave: cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sdSW --key-file=/dev/shm/swap.key La abrimos para luego crear el área de intercambio SWAP: cryptsetup luksOpen /dev/sdSW cryptoswap --key-file=/dev/shm/swap.key mkswap -f -L SWAP /dev/mapper/cryptoswap Ya tenemos la partición lista, ahora debemos editar los archivos /etc/fstab y /etc/crypttab como en el caso anterior para indicarle al sistema dónde está el SWAP y cómo desencriptarlo. Por cierto, no te preocupes en guardar esa llave, no sirve para nada. Es decir, en ningún momento te va a importar abrir el SWAP manualmente, y si así lo fueses entonces recreas la llave repitiendo lo explicado más arriba y listo. El último comando nos devolvió el UUID del área de intercambio SWAP que acabamos de crear, esto lo usaremos para indicar dónde está el SWAP en /etc/crypttab: cryptoswap UUID=a04cd219-2361-ba74-b791-0de0abc7ef66 cryptoroot luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived Donde he llamado cryptoswap al SWAP desencriptado (estará entonces en /dev/mapper/cryptoswap) y cryptoroot al root desencriptado (/dev/mapper/cryptoroot). Puedes usar el nombre que quieras, pero debes manter siempre los mismos nombres en todos los archivos de configuración. Resalté el UUID, debes reemplazarlo por el que corresponda. Ahora edita /etc/fstab: /dev/mapper/cryptoswap none swap sw 0 0 Y finalmente edita el archivo /etc/initramfs-tools/conf.d/resume, si es que nuestro sistema utiliza pm-utils para hibernar (Ubuntu usa este por defecto): RESUME=/dev/mapper/cryptoswap Aquí haré una pausa para contarte un cuentito: resulta ser que, se supone, al iniciar el sistema leerá este archivo (que terminará dentro de initramfs en /boot) y sabrá que debe recuperar la información de hibernación desde /dev/mapper/cryptoswap. Pues no me preguntes por qué, esto no sucede. Muchas horas de pruebas y no he logrado hacer que esto funcione. Probé usar UUID en lugar de la ruta explícita, pero tampoco. ¿Cuál fue la solución entonces? En algún sitio listado en las fuentes de información leí algo que me prendió la lamparita: pasarle al kernel el parámetro resume=/dev/mapper/cryptoswap. Y funcionó Puede que te estés preguntando: ¿pasarle qué al qué? El kernel es el núcleo del sistema, es el linux en sí, propiamente dicho. Luego, tu distro se basa en ese kernel. Al iniciar el sistema, usando GRUB como administrador de arranque p.e., podemos pasarle parámetros al kernel. Ejecuta en tu terminal: cat /boot/grub/grub.cfg Y fijate en la línea que diga algo como: menuentry 'Ubuntu, with Linux 2.6.35-28-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod part_msdos insmod ext2 set root=(hd0,msdos3)' search --no-floppy --fs-uuid --set 3f53ba23-d344-4291-a17b-9d601481a7c4 linux /vmlinuz-2.6.35-28-generic root=/dev/mapper/croot ro quiet splash initrd /initrd.img-2.6.35-28-generic } la que importa es la que dice "linux /vmlinuz-2.6.35-28-generic root=/dev/mapper/croot", esa es la línea del kernel. Luego, lo que sigue "ro quiet splash" son parámetros que se le pasan al kernel: ro es para montar root como solo lectura, quiet es para no mostrar - o mostrar pocos - mensajes y splash muestra la pantallita de carga. En esa misma línea, si nosotros agregamos resume=/dev/mapper/cryptoswap el sistema podrá leer, si existe, la información de hibernación y recuperarla. Si no existe, continúa con el arranque normal. Pues entonces, si la primera opción te funciona, y tu sistema vuelve de la hibernación recuperando el estado correctamente, no necesitas hacer nada más. Si no es así, como mi caso, entonces vamos a editar el archivo de configuración del GRUB (o el del BURG, si lo usas): /etc/default/grub (o bien /etc/default/burg). Busca una línea que diga GRUB_CMDLINE_LINUX_DEFAULT= y editala o creala si no existe: GRUB_CMDLINE_LINUX_DEFAULT=quiet splash resume=/dev/mapper/cryptoswap" De esta manera, siempre que actualicemos GRUB (o BURG) el archivo de configuración le indicará al kernel que debe resumir la hibernación desde /dev/mapper/cryptoswap. Recordá que si usaste otro nombre, tenés que modificar esta línea acorde. Desencriptar desde USB al iniciar Esta es la parte más interesante. Se trata de un script con el siguiente copyright: # Part of passwordless cryptofs setup in Debian Etch. # See: http://wejn.org/how-to-make-passwordless-cryptsetup.html # Author: Wejn &lt;wejn at box dot cz&gt; # # Updated by Rodolfo Garcia (kix) &lt;kix at kix dot com&gt; # For multiple partitions # http://www.kix.es/ # # Updated by TJ &lt;[email protected]&gt; 7 July 2008 # For use with Ubuntu Hardy, usplash, automatic detection of USB devices, # detection and examination of *all* partitions on the device (not just partition #1), # automatic detection of partition type, refactored, commented, debugging code. # # Updated by Hendrik van Antwerpen &lt;hendrik at van-antwerpen dot net&gt; 3 Sept 2008 # For encrypted key device support, also added stty support for not # showing your password in console mode. # define counter-intuitive shell logic values (based on /bin/true &amp; /bin/false) # NB. use FALSE only to *set* something to false, but don't test for # equality, because a program might return any non-zero on error # Updated by Dominique Bellenger &lt;dev at domesdomain dot de&gt; # for usage with Ubuntu 10.04 Lucid Lynx # - Removed non working USB device check # - changed vol_id to blkid, changed sed expression # - changed TRUE and FALSE to be 1 and 0 # - changed usplash usage to plymouth usage # - removed possibility to read from an encrypted device (why would I want to do this? The script is unnecessary if I have to type in a password) Está realmente muy bien hecho, me ha funcionado sin tener que hacer cambio alguno. El script completo es muy largo, pueden verlo en la página de donde lo saqué: http://domesdomain.de/blog/2010/06/09/howto-decrypt-luks-partition-with-keyfile-or-password/ O podés descargarlo desde aquí. Le hice una pequeña modificación para configurar más fácilmente el tiempo de espera para el dispositivo USB. Si ves que al usarlo te dice que no encuentra el dispositivo USB, es porque aún no tuvo tiempo de inicializarlo. Incrementa el valor correspondiente. Con 5 segundos me funcionó bien, pero p.e. en una VM tuve que ponerle 10 segundos. Entonces, descarga el archivo y luego descomprime y cambia permisos: wget http://www.hackan.com.ar/WP/wp-content/uploads/2011/05/crypto-usb-key.tar.gz sudo tar -xvapf crypto-usb-key.tar.gz -C / sudo chown root.root /usr/local/sbin/crypto-usb-key.sh sudo chmod 0754 /usr/local/sbin/crypto-usb-key.sh Y le indicas al sistema que en el inicio debe ejecutar ese script para desencriptar la partición que elijas. Edita /etc/crypttab: cryptodata /dev/sdDA mi_llave.key luks,keyscript=/usr/local/sbin/crypto-usb-key.sh Donde cryptodata será el nombre del dispositivo cuando esté abierto, /dev/sdDA es la partición que le corresponde a la partición y mi_llave.key es el nombre que tiene nuestro archivo llave para esa partición. Este archivo debe estar ubicado en la raíz del dispositivo USB que usemos, es decir, tirado así nomás. El script buscará ese archivo en todos los dispositivos USB que encuentre conectados al sistema. No se si se puede usar un subdirectorio y editar crypttab acorde, no lo he probado. Debes indicar en /etc/crypttab cada partición que requiera de un archivo llave de esa forma. Yo lo que hice fue hacer que la llave en mi pendrive desencripte la partición raíz ("/" y luego que esta desencripte a las demás. Eso te lo cuento en el punto 5. Finalmente hay que recrear el archivo /boot/initrd y luego actualizar el GRUB (usar update-burg para el BURG): sudo update-initramfs -u sudo update-grub Este comando actualiza el initrd del kernel más nuevo. Una vez verificado que esté todo funcionando correctamente, ejecutá: sudo update-initramfs -u -k all para actualizar todas las versiones del initrd. 5. Encriptando todo el sistema En este apartado mostraré paso a paso cómo crear las particiones, encriptarlas, luego crear los sistemas de archivos, restaurar el baclup y configurar el sistema. Es una recapitulación de lo ya explicado, pero todo junto y seguido. No me detendré a dar detalles. Inicia con tu distro live, es decir, con un CD/DVD o USB. Te recuerdo que todo lo que esté en el disco desaparecerá. Particiona el sistema con la herramienta que quieras. Recuerda crear una aparte para /boot. A continuación comento sobre particionado con fdisk. Llamaré /dev/sda al disco principal con el que vamos a trabajar. Si este no es tu caso, entonces modifica las siguientes líneas acorde. Abre una consola o terminal como root y: fdisk /dev/sda Si tipeamos 'm' nos muestra la lista de opciones. Opción 'o' para crear una nueva tabla de particiones, confirmamos si nos lo pide. Opción 'w' para aplicar el cambio y salir. sync partprobe fdisk /dev/sda Opción 'n' para crear nuestra partición /boot Tipeamos 'p' para primaria '1', porque será la primera Aceptamos el valor inicial por default (ENTER) Tipeamos '+200M' para indicarle que debe ser de 200MB, o emplear el valor que deseen Y ya tenemos nuestra particion de arranque creada; seguimos. Opción 't' para cambiar el tipo de partición '1' '83' Y ya le indicamos que es una partición de linux. Opción 'a' para seleccionar la partición de arranque '1' Y ahora el arranque se dará en esa particion. Opción 'n' para crear otra partición más. Y repites los pasos salvo lo de la Opción 'a', y creas todas las particiones que desees. Te vuelvo a recomendar este sitio si necesitas más ayuda, o una búsqueda en Google. Finalizas con 'w' para escribir los cambios en el disco, y luego haces nuevamente: sync partprobe Para asegurarse que el sistema tome los cambios del disco. Ahora, es tiempo de encriptar la/s particion/es creada/s, a excepción de /boot, claro está, y luego crear el sistema de archivos. Voy a suponer que el disco quedó así particionado: /dev/sda1: /boot /dev/sda2: SWAP /dev/sda3: / /dev/sda5: /home Tipea sudo fdisk -l para ver cómo son tus particiones. Supondré también que la llave para "/" se llamará root.key y para /home, home.key; que tienes el disco de backup montado en /media/backup y que los archivos se llaman como ejemplifiqué en el punto 2. Pocede a crear las llaves, encriptar las particiones y crear los sistemas de archivos (ejecuta como root): dd if=/dev/urandom of=root.key bs=1024 count=4 cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sda3 --key-file=root.key cryptsetup luksOpen /dev/sda3 cryptoroot --key-file=root.key mkfs -t ext3 /dev/mapper/cryptoroot mkdir /media/cryptoroot mount /dev/mapper/cryptoroot /media/cryptoroot tar -xvpzf /media/backup/root_backup.tar.gz -C /media/cryptoroot mkdir /media/cryptoroot/boot mkdir /media/cryptoroot/mnt mkdir /media/cryptoroot/media mkdir /media/cryptoroot/home mkdir /media/cryptoroot/proc mkdir /media/cryptoroot/sys dd if=/dev/urandom of=home.key bs=1024 count=4 cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sda5 --key-file=home.key cryptsetup luksOpen /dev/sda5 cryptohome --key-file=home.key mkfs -t ext3 /dev/mapper/cryptohome mkdir /media/cryptohome mount /dev/mapper/ cryptohome /media/ cryptohome tar -xvpzf /media/backup/home_backup.tar.gz -C /media/ cryptohome umount /media/cryptohome cryptsetup luksClose cryptohome mkdir /media/boot mount /dev/sda1 /media/boot tar -xvpzf /media/backup/boot_backup.tar.gz -C /media/boot Si vas a hibernar: /lib/cryptsetup/scripts/decrypt_derived cryptoroot | cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/sda2 --key-file - /lib/cryptsetup/scripts/decrypt_derived cryptoroot | cryptsetup luksOpen /dev/sda2 cryptoswap --key-file - mkswap -f -L SWAP /dev/mapper/cryptoswap cryptsetup luksClose cryptoswap Ahora, la configuración del sistema. Considero que la opción más cómoda es que con una sola llave desencriptemos todo el sistema. ¿Cómo? Pues simple: haciendo que esa llave abra la raíz del sistema ("/" y que luego eso abra las demás particiones. Esta es la llave que debes copiar a tu dispositivo USB y llevar siempre con vos. Entonces, mové la llave para /home a la carpeta que quieras dentro de la raíz, como ser la carpeta /root, que es el home del usario root. mv home.key /media/cryptoroot/root chown root.root /media/cryptoroot/root/home.key chmod 0400 /media/cryptoroot/root/home.key Editá el archivo de configuración de particiones encriptadas /etc/crypttab, que estará en /media/cryptoroot/etc/crypttab: # &lt;target name&gt; &lt;source device&gt; &lt;key file&gt; &lt;options&gt; cryptoswap UUID=3df39403-1fed-4ec8-b2d2-2123478c5676 cryptoroot luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived cryptohome UUID=a342c698-2231-44cc-d191-0dff3ffdef66 /root/home.key luks cryptoroot UUID=ae2b1f76-ef5a-4b44-ccf7-0dd963e6c6ae root.key luks,keyscript=/usr/local/sbin/crypto-usb-key.sh Para hallar los UUID correspondientes, ejecuta blkid como root. Debes usar el UUID de las particiones encriptadas, NO de la particiones abiertas. Puedes usar también la nomenclatura /dev/sdXY, en este ejemplo sería: # &lt;target name&gt; &lt;source device&gt; &lt;key file&gt; &lt;options&gt; cryptoswap /dev/sda2 cryptoroot luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived cryptohome /dev/sda5 /root/home.key luks cryptoroot /dev/sda3 root.key luks,keyscript=/usr/local/sbin/crypto-usb-key.sh Si no vas a hibernar, cambia la primer línea por: cryptoswap /dev/sda2 /dev/urandom swap En ese caso no uses UUID, dado que cambiará en cada inicio al reformatearse la partición (¡creo!). Edita el archivo /etc/fstab que le indica al sistema dónde están las particiones que montará al inicio; te recuerdo que el archivo estará, siguiendo este ejemplo, en /media/cryptoroot/etc/fstab: # /etc/fstab: static file system information. # # Use 'blkid -o value -s UUID' to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # &lt;file system&gt; &lt;mount point&gt; &lt;type&gt; &lt;options&gt; &lt;dump&gt; &lt;pass&gt; proc /proc proc nodev,noexec,nosuid 0 0 # / on /dev/sda3 /dev/mapper/cryptoroot / ext3 errors=remount-ro 0 1 # /boot on /dev/sda1 /dev/sda1 /boot ext3 defaults 0 0 # /home on /dev/sda5 /dev/mapper/cryptohome /home ext3 defaults 0 2 # swap on /dev/sda2 /dev/mapper/cryptoswap none swap sw 0 0 Aquí puedes usar también los UUID, ¡pero de las particiones abiertas! si tienes dudas, deja la nomenclatura que se muestra. Esta configuración es la misma tanto si vas a hibernar o no. La primera línea, que dice proc... la dejé porque así viene en Ubuntu el archivo fstab por defecto. Edítala según creas conveniente. Faltaría descargar el script que permite leer la llave desde USB al inicio: wget http://www.hackan.com.ar/WP/wp-content/uploads/2011/05/crypto-usb-key.tar.gz sudo tar -xvapf crypto-usb-key.tar.gz -C /media/cryptoroot sudo chown root.root /media/cryptoroot /usr/local/sbin/crypto-usb-key.sh sudo chmod 0754 /media/cryptoroot /usr/local/sbin/crypto-usb-key.sh Y si vas a hibernar, edita los archivos que corresponden. Empieza por /etc/initramfs-tools/conf.d/resume, que estará en /media/cryptoroot/etc/initramfs-tools/conf.d/resume: RESUME=/dev/mapper/cryptoswap Luego, el archivo de configuración del GRUB (o BURG, lo que corresponda) /etc/default/grub, que estará en /media/cryptoroot/etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT=quiet splash resume=/dev/mapper/cryptoswap" Ya sea que utilices hibernación o no, resta actualizar el disco RAM inicial (initrd) y luego actualizar el GRUB (o BURG). Para ello, debes montar la partición de boot dentro de donde está montado la raíz de tu sistema (/media/cryptoroot en este ejemplo), y luego hacer unos arreglos para hacerle creer al sistema actual (recuerda que estás corriendo una distro live) que la raíz actual del sistema está en la partición montada. Si no has entendido ni jota, copia y pega lo siguiente (siempre siendo root): mount /dev/sda1 /media/cryptoroot/boot mount --bind /dev /media/cryptoroot/dev mount --bind /proc /media/cryptoroot/proc mount --bind /sys /media/cryptoroot/sys mount --bind /boot /media/cryptoroot/boot chroot /media/cryptoroot update-initramfs -u update-grub exit Pufff, ¡ya estaría todo terminado! Ahora, desmontar todo y reiniciar para verificar que anduvo: umount /media/cryptoroot/dev umount /media/cryptoroot/proc umount /media/cryptoroot/sys umount /media/cryptoroot/boot umount /media/cryptoroot cryptsetup luksClose cryptoroot Ahora sí, ya puedes reiniciar 6. Apéndice Deshabilitar y/o agregar llaves Una de las grandes cualidades de los sistemas LUKS es que poseen un anillo de llaves, hasta 8 diferentes, para desencriptarse. Esto es muy útil en entornos multiusuario o para sistemas doble llave. Para agregar una llave a una partición LUKS: sudo cryptsetup luksAddKey /dev/sdXY Donde /dev/sdXY es la partición encriptada. Este comando pedirá que tipees una clave para autenticarte, y luego pedirá que tipees la nueva clave que querés agregar. Para agregar un archivo llave: sudo cryptsetup luksAddKey /dev/sdXY /ruta/de/la/llave_nueva.key Y en cualquier caso, para autenticarse empleando un archivo de llave ya existente, agregar al final del comando el parámetro --key-file=/ruta/de/la/llave_vieja.key Para eliminar una llave, ejecutas: sudo cryptsetup luksKillSlot /dev/sdXY Z Donde Z será un número del 0 al 8 que identifica al slot que queres eliminar. Cada llave se guardará en un slot (casillero) distinto; la primera que coloquemos estará en el 0, la segunda en el 1, etc. Pedirá contraseña para autenticar. Nuevamente, para autenticarse empleando un archivo de llave ya existente, agregar al final del comando el parámetro --key-file=/ruta/de/la/llave_vieja.key Otra alternativa, si queres eliminar un archivo llave y no recordás en que slot está, podes ejecutar: sudo cryptsetup luksRemoveKey /dev/sdXY /ruta/de/la/llave_a_eliminar.key Para obtener información de la partición encriptada: sudo cryptsetup luksDump /dev/sdXY Ese comando imprimirá algo como: LUKS header information for /dev/sdXY Version: 1 Cipher name: aes Cipher mode: cbc-essiv:sha256 Hash spec: sha1 Payload offset: 2056 MK bits: 256 MK digest: 79 f8 68 d2 9c 50 aa dd 00 1f 76 22 32 fc df c2 bc 4b 8c 52 MK salt: f4 44 0c 28 29 cc 66 7a c2 4c c6 36 22 b7 d5 6a a9 2e cd 6c 22 f1 20 26 06 13 35 a4 22 d7 7b a2 MK iterations: 46875 UUID: 3df39483-1abc-0ec8-b9d2-249798765676 Key Slot 0: ENABLED Iterations: 187801 Salt: f0 99 06 48 64 bd 21 32 41 12 01 66 29 75 52 ea ff 98 0b af aa 3e a8 eb 74 da 2b da 07 bf db 24 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED Siempre puedes acudir al manual para obtener más información: man cryptsetup Sistema de doble llave La idea que cada partición encriptada utilice dos llaves para abrirse: una propia a cada uno y otra maestra, común a todas. O también puede ser que cada partición tenga dos llaves propias, elegir lo que convenga. El problema surge si perdemos el archivo de llave. Si eso sucede: 1- El sistema se ve comprometido, es necesario de inmediato cambiar la clave 2- Si no tenemos copia del archivo, y no hicimos doble llave, entonces bien podemos tirar todo a la basura, o esperar a que la tecnología avance tanto que se pueda romper la clave antes de pasen un par de vidas... Para evitar esto, es necesario deshabilitar una de las llaves, que denominaremos 'temporal' y que estará siempre con nostros, en el dispositivo USB; y tener otra llave, denominada 'maestra', que siempre estará almacenada en un lugar seguro (muy seguro y oculto) y no se moverá de allí. Entonces, con la llave maestra podemos deshabilitar la temporal y crear una nueva. Siguiendo todo lo ya explicado, crear una llave adicional para cada partición, o bien solo una para todas, y agregarlas al anillo de claves de cada partición, para que actúe como llave maestra. Luego, la copiaremos y almacenaremos en algún lugar seguro (la caja de seguridad en tu banco es buena idea). Si nos enfrentamos a una situación donde sabemos que nos pueden obligar a desencriptar el sistema (en un paso de frontera p.e.), o el sistema se puede ver comprometido (se perdió el pendrive con el archivo llave), crear de antemano el siguiente archivo (la idea la extraje de aquí, desconozco el nombre del autor): /usr/local/bin/emergencykillkey #!/bin/bash # Config KEYUUID=9CD2-B351 ROOTDEV=/dev/sda3 KEYNAME=key.bin # Main # Montar llave usb mkdir /tmp/llave mount -t vfat /dev/disk/by-uuid/${KEYUUID} /tmp/llave # Generar llave temporal cd /dev/shm/ dd if=/dev/urandom of=tempkey.bin bs=1024 count=20 # Liberar el slot 7 (no deberia estar ocupado!) cryptsetup luksKillSlot ${ROOTDEV} 7 --key-file=/tmp/llave/${KEYNAME} # Colocar llave temporal en slot 7 cryptsetup luksAddKey -S7 ${ROOTDEV} tempkey.bin --key-file=/tmp/llave/${KEYNAME} # Remover llave usb del llavero cryptsetup luksRemoveKey ${ROOTDEV} /tmp/llave/${KEYNAME} --key-file=tempkey.bin # Eliminar llave temporal shred -uvx tempkey.bin # Dejamos la llave usb, total no sirve; alegamos que hubo algun error # de esta manera ;) umount /tmp/llave exit 0 # --- --- ¡Configurar las opciones marcadas en negrita como correspondan! La primera indica el UUID del dispositivo USB que contiene nuestra llave, la segunda el dispositivo al cual se le eliminará la llave temporal asignada y la tercera indica el nombre del archivo llave. Se podría fácilmente editar este script para recibir los parámetros por línea de comandos, y luego crear otros scripts tipo wrapper para cada partición afectada. Finalmente, editar los permisos para que solo root lo ejecute. Este script elimina la llave usb del anillo de llaves de la partición, haciendo que la misma sea imposible de desencriptar sin la llave maestra. Es necesario apagar el sistema al concluir. A su vez, deja el archivo en el pendrive para que de esta manera nosotros podamos argumentar que ocurrió alguna falla desconocida y bueno, actuar un poco... Luego será necesario usar la llave maestra, que NO deberías tener encima, para desencriptar las particiones. Si todo sale mal... Si reiniciaste y tu sistema no arranca, vuelve a iniciar con una distro live y verifica los archivos de configuración. Espero que hayas seguido esta guía paso a paso para evitar problemas. En cualquier caso, si tu problema es que no puedes por X motivo abrir una partición encriptada dado que no acepta la llave, lamento decirte que NO hay forma de recuperar la información. No existe. Fué. Adiós. Si puedes montar las particiones y abrirlas para acceder a la información, entonces el problema no es grave. Verifica todas las configuraciones paso a paso para ver por qué no está iniciando. Si te sale algún error, puedes consultar acá. Como última alternativa, puedes formatear todas las particiones y reestablecer toda la información sin encriptar, recuerda eliminar el archivo /etc/crypttab y modificar /etc/fstab acorde a tus nuevas particiones. Puntos débiles, vulnerabilidades Dado que la partición /boot está desencriptada, es posible que un atacante modifique initrd e inyecte un script que capture nuestra llave. Lo bueno es que en ese punto del arranque no hay acceso posible a internet, por lo que dicho atacante deberá volver para obtener la llave. Una forma de evitar esto es configurar la bios tal que: Use contraseña para cambiar la configuración. Arranque directamente al disco correspondiente, desactivando arranques adicionales. Desactivar, si existe, menú de arranque o similares.De esta manera, un atacante no tendrá forma de acceder a dicha partición, a menos que pueda remover el disco del sistema, trabajarlo y volverlo a colocar sin que lo notemos (cosa que veo complicada...). Eso podría evitarse configurando la opción “case open alarm” que traen prácticamente todas las BIOS, y metiendo mano en el hardware acorde. Si existe otro sistema operativo al cual un atacante puede acceder, entonces podría desde allí afectar dicha partición. Tomar los recaudos necesarios (restricción de permisos, p.e.) He leído aquí sobre una utilidad que realiza un chequeo de los archivos de la partición /boot en el arranque, e indica si fueron comprometidos: boot-digest-check No logré encontrarla en ningún lado. Para los más paranoicos, existen otras opciones: Que la partición /boot esté en el mismo pendrive, y no en el disco. Ningún atacante tendría acceso y no exisitiría vulnerabilidad. Hacer a mano un chequeo con, p.e., md5 antes de apagar el sistema y guardar el resultado en el pendrive. Al regresar, bootear con el pendrive (previa habilitación via BIOS) y verificar los hashes.Ambas opciones escapan a este artículo. Y la segunda es realmente tediosa... 7. Fuentes de información Si bien esta guía la escribí yo, he sacado mucha información de la web, en particular de las fuentes aquí listadas. http://madduck.net/docs/cryptdisk/ - La idea para solucionar el problema de la hibernación http://domesdomain.de/blog/2010/06/09/howto-decrypt-luks-partition-with-keyfile-or-passw - El script para iniciar leyendo la llave de un dispositivo USB http://wiki.cizmar.org/doku.php?id=linux:ubuntu_encrypted_root http://ubuntuforums.org/showthread.php?t=949870 http://www.howtoforge.com/automatically-unlock-luks-encrypted-drives-with-a-keyfile http://wejn.org/how-to-make-passwordless-cryptsetup.html http://www.c3l.de/linux/howto-completly-encrypted-harddisk-including-suspend-to-encrypted-disk-with-ubuntu-6.10-edgy-eft.html

89
24
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.