Montar una partición cifrada en Ubuntu

Introducción

Las versiones recientes de los sistemas operativos como Ubuntu permiten que se cifren las particiones (usualmente la que contiene a /home) para evitar así que terceros tengan acceso a la información contenida en estas si se obtiene el acceso físico a las mismas.

Esta mejora en la seguridad algunas veces se convierte en problema cuando por razones válidas es necesario acceder a esta partición desde otro sistema diferente del original.  Tal es el caso cuando se desactiva o pierde la contraseña del usuario administrador.

En ese caso es necesario iniciar el sistema con un livecd de Ubuntu (o montarlo físicamente en otro equipo), montar la partición que contenga al sistema de archivos raíz y realizar las modificaciones necesarias en los archivos de configuración para garantizar el futuro acceso a la cuenta de usuario en cuestión.  Estos pasos se ven modificados cuando la partición a montarse se encuentra cifrada.

Montar la partición cifrada

Identificar cual es la partición que se desea montar.

$ sudo fdisk -l

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1              63       96389       48163+  de  Dell Utility
   /dev/sda2   *       98304   163938303    81920000    7  HPFS/NTFS/exFAT
   /dev/sda3       163938304   167843839     1952768   82  Linux swap / Solaris
   /dev/sda4       167845886   234440703    33297409    5  Extended
   /dev/sda5       167845888   189327359    10740736   83  Linux
   /dev/sda6       189329408   234440703    22555648   83  Linux

En este ejemplo se determina que la partición que se desea montar temporalmente es /dev/sda5 que contiene al sistema de archivos raíz.

Instalar los paquetes requeridos si estos no se encuentran aún en el sistema.

$ sudo apt-get install lvm2 cryptsetup

Agregar el módulo del kernel necesario para acceder a los dispositivos de bloque cifrados.

$ sudo modprobe dm-crypt

Configurar al módulo de cifrado de Linux para que reconozca a la partición que se va a montar.

$ sudo cryptsetup luksOpen /dev/sda5 crypt1

En este punto el sistema solicita al usuario la contraseña secreta (passphrase) que se utilizó para el cifrado de la partición.

Identificar los grupos de volúmenes cifrados disponibles.  El nombre obtenido aquí debe tenerse en cuenta para un paso posterior.  En el caso de la partición cifrada por defecto se encontró que el nombre del grupo era ubuntu.

$ sudo vgscan --mknodes

Crear un directorio que servirá como punto de montaje para la partición cifrada.

$ mkdir /montaje

Montar la partición cifrada en el punto de montaje recién creado.

$ sudo mount /dev/ubuntu/root /montaje

A partir de este momento el sistema de archivos cifrado puede accederse normalmente bajo el punto de montaje establecido.  Por ejemplo para acceder gráficamente a sus archivos es necesario utilizar las herramientas del sistema.

$ sudo nautilus /montaje

Desbloquear un usuario

Una vez se pueda acceder al sistema de archivos raíz de la máquina afectada es posible realizar tareas de gestión de los usuarios como desbloquear cuentas o cambiar sus contraseñas.

Primero es necesario tomar temporalmente a la partición montada como partición raíz del sistema para que sean tenidos en cuenta sus usuarios durante las tareas de administración y no los del livecd, para hacer esto es necesario ejecutar el siguiente comando.

$ sudo chroot /montaje

Desbloquear las cuentas de usuario requeridas.

$ sudo passwd -u usuario

O simplemente modificar sus contraseñas.

$ sudo passwd usuario

Una vez terminadas las modificaciones que se iban a realizar sobre la partición cifrada se debe reiniciar el sistema normalmente.

Instalación de un escritorio en Linux Ubuntu Server 12.10

Introducción

La edición de servidores de Ubuntu viene por defecto sin un escritorio gráfico lo cual es preferible por motivos de seguridad y desempeño.  Sin embargo existen algunos casos en los que es deseable contar con una interfaz gráfica de usuario en el servidor, para estos casos es posible instalar estos paquetes siguiendo el procedimiento mostrado a continuación.

Instalar el escritorio

El escritorio por defecto para Ubuntu es Unity el cual puede instalarse ejecutando el siguiente comando.

$ sudo apt-get install ubuntu-desktop

También es posible instalar un escritorio diferente a Unity, por ejemplo KDE de la siguiente manera.

$ sudo apt-get install kubuntu-desktop

O XFCE como se muestra a continuación.

$ sudo apt-get install xubuntu-desktop

Instalación reducida

La instalación del escritorio incluye por defecto los paquetes de las aplicaciones complementarias que en caso del servidor muy probablemente no se deseen instalar.  Para omitir el instalar estas aplicaciones adicionales se deberá realizar la instalación del escritorio con el modificador mostrado a continuación dependiendo de si se utiliza apt-get para realizar la instalación.

$ sudo apt-get install ubuntu-desktop --no-install-recommends

O aptitude.

$ sudo aptitude install ubuntu-desktop --without-recommends

Como hecho curioso los dos modificadores son análogos en su funcionalidad sin embargo parecen incluir diferentes paquetes durante su ejecución.

Configuración de red en Ubuntu 12.04 o posterior

Introducción

La configuración de red de un servidor puede hacerse de una de las siguientes maneras: estática o dinámica, en la primera de ellas se especifica por completo su información mientras que en la segunda se prefiere que un servidor DHCP que debe estar presente en la red, determine por sus propios medios la configuración de red del servidor.

A partir de la versión 12.04 de Ubuntu se introdujeron algunos cambios en la configuración de red, especialmente el hecho de que los servidores DNS para la configuración estática ya no se agregan en /etc/resolv.conf sino directamente en el archivo de /etc/network/interfaces, por este motivo vale la pena recordar el procedimiento para configurar las interfaces de red manualmente.

Configuración de la interfaz de loopback

$ vi /etc/network/interfaces

    # The loopback network interface
    auto lo
    iface lo inet loopback

Configuración de una interfaz con DHCP

$ vi /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp

Configuración de una interfaz con información estática

$ vi /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet static
       address 192.168.1.250
       netmask 255.255.255.0
       gateway 192.168.1.254
       dns-nameservers 8.8.8.8 8.8.4.4

Una vez reiniciado el servicio se generará automáticamente la información de DNS a partir del parámetro dns-nameservers especificado.

$ cat /etc/resolv.conf

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 8.8.8.8
    nameserver 8.8.4.4

Enlaces

Crear una granja de wikis en dominios virtuales con Dokuwiki

Introducción

Dokuwiki es un excelente software para la implementación de sitios wiki en internet.  Una de las facilidades que tiene y que había experimentado sin éxito hasta ahora, es la creación de granjas de wikis que permiten tener una única instalación del software (farm) y a partir de ella crear diferentes wikis (animals) independientes con las ventajas que trae consigo la centralización de la distribución para actualizaciones e instalación de plantillas y complementos.

La instalación de la granja puede realizarse de dos maneras: mediante virtual hosts que permiten utilizar cualquier tipo de dominio o subdominio o mediante el uso de archivos ”.htaccess” que sólo permiten utilizar subdirectorios bajo un dominio específico.  La presente documentación detalla el procedimiento para crear una granja de wikis con Dokuwiki utilizando virtual hosts.

Procedimiento

Instalación de Dokuwiki

El primer paso consiste en realizar una instalación convencional de Dokuwiki en una ubicación que sea pública para el servidor web.  Para efectos de este ejercicio esta instalación se realizó bajo la ruta /home/jimezam/public_html/wiki.

Activación de la granja

A continuación se debe activar el modo farm en el wiki recién instalado copiando y modificando el archivo preload.php.

$ cp ~/public_html/wiki/inc/preload.php.dist ~/public_html/wiki/inc/preload.php

$ vi ~/public_html/wiki/inc/preload.php

    // set this to your farm directory
    if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/home/jimezam/farm/');

    // include this after DOKU_FARMDIR if you want to use farms
    include(fullpath(dirname(__FILE__)).'/farm.php');

La ubicación establecida como la constante DOKU_FARMDIR deberá corresponder con el directorio bajo el cual se ubicarán los archivos de datos de los wikis que se creen en la granja.  En este caso los animales estarán almacenados bajo/home/jimezam/farm.  Es preferible que esta ubicación se encuentre por fuera del árbol de directorios publicados con el servicio web o se impida su acceso directo mediante el uso de .htaccess.

Si no se cuenta con una versión reciente de Dokuwiki es posible que los archivos farm.php y preload.dist.php no se encuentren disponibles, en ese caso es posible descargarlos de su sitio web.

Creación de un nuevo Dominio

Los sitios wiki a crearse en la granja deberán ubicarse bajo los dominios o subdominios deseados.  Para la creación de estos se deberán utilizar las herramientas convencionales, la única restricción consiste en que la configuración de todos los virtual host de Apache hagan referencia a la instalación de Dokuwiki como su DOCUMENT_ROOT.

NameVirtualHost *

<VirtualHost *>
    # this is the URL of your wiki animal
    ServerName miWiki.miDominio.com
    # the document root always needs to be the DokuWiki *farmer* directory
    DocumentRoot /home/jimezam/public_html/wiki/
</VirtualHost>

 Creación de un wiki (desde cero)

Para crear un nuevo wiki desde cero en la granja se debe crear un directorio bajo el DOKU_FARMDIR cuyo nombre coincida con el del dominio que se utilizará para accederlo.

En esta ubicación se deberá descomprimir el contenido de la plantilla de los animales.

$ cd /home/jimezam/farm

$ wget https://www.dokuwiki.org/_media/dokuwiki_farm_animal.zip --no-check-certificate

$ unzip dokuwiki_farm_animal.zip

$ mv _animal miWiki.miDominio.com

Configuración del nuevo wiki

Para configurar el wiki recién creado acceda normalmente al dominio especificado utilizando un navegador web autentíquese con el usuario admin cuya contraseña es admin también y realice las acciones de configuración necesarias.

También es necesario ajustar la configuración de las listas de control de acceso (ACL) bajo Admin > Access Control List Management ya que por defecto el animal permitirá la consulta (read) y escritura (edit) pública lo que rápidamente atraerá a SPAM bots.

Por ejemplo, si desea que la wiki pueda ser consultada libremente por los usuarios pero que sólo los usuarios registrados y autenticados puedan modificarla debería ajustar sus ACL de la siguiente manera propuesta.

Dokuwiki ACL

Consideraciones de seguridad

Se debe tener en cuenta que una vez finalizado el procedimiento se termina con dos wikis: el primero corresponderá con la granja y el segundo con el animal recién creado.  En ambos casos es recomendable que como mínimo realice su configuración básica y ajuste la contraseña del usuario admin según considere prudente.

Enlaces

Reparar el índice dañado de un archivo AVI en Linux Ubuntu

El problema

El día de hoy tenía que consultar un video en formato AVI que parecía tener problemas.  El Movie Player lo abría sin mensajes de error sin embargo se demoraba varios minutos en presentarlo, VLC en cambio mostraba un mensaje de error acerca del índice del video dañado y era posible repararlo pero aparentemente de manera temporal porque sucedía igual cada vez que abría el archivo.

A continuación se muestra el procedimiento utilizado para corregír el índice defectuoso del archivo de video utilizando una herramienta de linea de comando.

La solución

Instalar MEncoder si no se cuenta con él aún.

$ sudo aptitude install mencoder

Invocar el siguiente comando en el que original_video.avi es el archivo original del video y fixed_video.avi es el archivo resultante después de la corrección del índice.

$ mencoder -idx original_video.avi -ovc copy -oac copy -o fixed_video.avi

Los botones de Home y Search no funcionan con CyanogenMod en Android

El problema

Después de actualizar el teléfono con la versión nocturna del 26 de agosto este se empezó a comportar de manera extraña: no aparecía el bloqueo del teclado y no funcionaban los botones físicos del teléfono de Home (casita) ni Search (lupa).  Esto aparentemente puede suceder con diferentes versiones de CyanogenMod con cualquier teléfono, esta vez fue mi caso.

La solución

Probé varias opciones desde limpiar los distintos cachés hasta restaurar la configuración de ADW y reinstalar el ROM sin resultados.

La solución llegó con simplemente agregar una opción a la base de datos de configuración de Android de la siguiente manera a través de la terminal (Terminal Emulator).

$ su -

# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO secure (name,value) VALUES ('device_provisioned','1');"

A continuación se deberá reiniciar el teléfono y listo!

Instalación de Cyanogen Mod 7.2 en un teléfono LG Optimus One

Introducción

Cyanogen Mod [sigh-AN-oh-jen-mod] es un reemplazo open source del firmware de dispositivos Android con la adición de múltiples características y optimizaciones que no se encuentran por defecto en las distribuciones oficiales del sistema operativo.  En lo personal encuentro muy útiles la gran cantidad de opciones de personalización del teléfono y el ahorro de memoria (casi 50%) al no tener aplicaciones indeseadas instaladas por el vendedor.

Para tener mayor información acerca de Cyanogen Mod consultar su página web.

En este artículo se describen los pasos necesarios para instalar la versión 7.2 (basada en Android 2.3.7) en un LG Optimus One (otros móviles soportados).

Este procedimiento trae consigo posibles riesgos de daño, pérdida de información o pérdida de la garantía de los equipos en los que se efectue.  Debe realizarse bajo su propia responsabilidad.  Si requiere algún tipo de soporte consulte un foro especializado como XDA Developers.  No siga estos pasos si no está seguro de lo que está haciendo.

 

Prerequisitos

  • La batería del teléfono debe tener por lo menos 60% de carga para garantizar que no se va a apagar en medio del procedimiento.
  • El teléfono no debe tener las bandas cerradas (branded).
  • Se debe contar con acceso de root en el teléfono (rooted).
  • Se debe tener instalada una herramienta de recuperación (custom recovery).
  • Realizar una copia de seguridad de toda la información importante del teléfono.
  • Saber lo que se está haciendo y aceptar toda responsabilidad por el procedimiento.

Descargar el software necesario

  1. Cyanogen Mod, el ROM con el sistema operativo como tal.  En este caso se utilizó el archivo cm-7.2.0-p500.zip.
    http://download.cyanogenmod.com/?device=p500
  2. El Google Apps Package que incluye al Play Store.  En este caso se utilió el archivo gapps-gb-20110828-signed.zip.
    http://goo.im/gapps/
Estos dos archivos zip deben copiarse a la tarjeta SD del teléfono.

Instalar ROM Manager

Instalar esta aplicación de ClockworkMod en el teléfono desde el Play Store.
Con ella se recomienda realizar un backup del ROM actual (Backup current ROM).

Iniciar en modo de recuperación

Utilizando ROM Manager seleccionar la opción Flash ClockworkMod Recovery bajo la sección de Recovery.  Una vez terminado este proceso seleccionar la opción Reboot into Recovery.

Limpiar la información del sistema operativo

  1. Seleccionar la opción Wipe Data/Factory reset.
  2. Seleccionar la opción Wipe cache partition.
  3. Bajo la opción Advanced seleccionar la opción Wipe Dalvik cache.

Instalar los ROMs

Seleccionar la opción Install zip from SD card para instalar el ROM y Choose zip from SD card para establecer la ubicación en la tarjeta SD.

Este procedimiento se debe realizar tanto para el ROM de Cyanogen Mod como para el del Google Apps Package.

Reiniciar el teléfono

El paso final consiste en reiniciar el teléfono mediante la opción Reboot system now.  Si todo salió bien se deberá iniciar la versión de Cyanogen Mod recién instalada.

Enlaces

  1. Cyanogen Mod
    http://www.cyanogenmod.com/

    1. LG Optimus One
      http://www.cyanogenmod.com/devices/lg-optimus-one
    2. Announcement: CyanogenMod 7.2 Released! (2012-Jun-16)
      http://forum.cyanogenmod.com/forum-598/announcement-23-cyanogenmod-72-released-2012-jun-16/
    3. Wiki
      http://wiki.cyanogenmod.com/index.php?title=Main_Page
  2.  Google Apps Package
    http://goo.im/gapps/

Realizar el "rooting" de un teléfono LG Optimus One con Android 2.3 utilizando SuperOneClick

Introducción

El rooting de un teléfono con Android permite acceder al sistema operativo con el super usuario (root) lo que permite a su vez realizar tareas de administración que no son posibles para el usuario convencional.

Este procedimiento se realizó utilizando un PC con Windows 7 y un LG Optimus One con Android 2.3.3.  Las versiones recientes de SuperOneClick se encuentran desarrolladas en .NET por lo que teóricamente es posible ejecutarlas bajo Linux sin embargo las pruebas iniciales no fueron satisfactorias.

Este procedimiento conlleva posibles riesgos de daño, pérdida de información o pérdida de la garantía de los equipos en los que se efectue.  Debe realizarse bajo su propia responsabilidad.  Si requiere algún tipo de soporte consulte un foro especializado como XDA Developers.

Instalación de los drivers

Para realizar este procedimiento bajo Windows es necesario tener previamente instalados el driver de conexión al teléfono, ya sea el provisto por Google o el provisto por los diversos fabricantes (OEM).

Este driver puede ser instalado como parte del proceso de instalación del SDK de Android o desde la misma aplicación de SuperOneClick si no se cuenta con este en el momento de su ejecución.

Obtener SuperOneClick

El software se puede descargar desde la página de su desarrollador.  Para la realización de este procedimiento se utilizó la versión 2.3.3 la cual era la versión mas reciente en su momento.

Obtener y descomprimir el archivo SuperOneClickv2.3.3-ShortFuse.zip.

Activar USB debugging

Es necesario activar la opción de USB debugging en el teléfono, para hacer esto acceda a los siguientes menúes: Settings > Applications > Development y active la opción USB debugging.

Desmontar la tarjeta SD

Se recomienda desmontar la tarjeta SD para evitar conflictos o pérdida de información durante el desarrollo del proyecto.  Para desmontarla acceda a los siguientes menúes: Settings > Storage y presione la opción Unmount SD card.

Ejecutar SuperOneClick

Desde la ubicación donde fue descomprimido el paquete original ejecute la aplicación SuperOneClick.exe.  Es posible que esta deba ser ejecutada como administrador (opción de clic derecho).

Conecte el teléfono al PC a través del cable USB y finalmente presione el botón Root para que la aplicación inicie su proceso.

Ejecución de SuperOneClick
Ejecución de SuperOneClick

Postmortem

Una vez finalizado el proceso desactive la opción USB debugging activada anteriormente, monte nuevamente la tarjeta SD y busque en el teléfono la aplicación Superuser la cual indicará que el procedimiento de rooting ha sido exitoso.

Compartir una sesión de terminal con Screen en Linux utilizando el mismo usuario

Introducción

Frecuentemente me encuentro con compañeros de la universidad experimentando en los servidores del nodo grid, en estos casos es común que nos distribuyamos entre diferentes computadores pero a pesar de esto sea conveniente compartir una única terminal para que todos podamos ver lo que se está experimentando y que cada uno pueda proponer e implementar sus ideas.

Para hacer esto la solución mas simple que he encontrado es utilizando el comando screen que se incluye por defecto en la mayoría de las distribuciones de Linux.

El procedimiento descrito a continuación es útil cuando todos los usuarios acceden finalmente a la terminal compartida utilizando el mismo usuario en el mismo servidor, en caso contrario es necesario realizar unas modificaciones adicionales.

Procedimiento

El usuario que va a crear la terminal compartida ejecuta el siguiente comando para iniciar la sesión de screen y nombrarla (mySharedSession en este caso).

$ screen -d -m -S mySharedSession

El siguiente paso radica en unir la terminal del usuario a la sesión compartida de screen mediante la ejecución del siguiente comando que debe ser ejecutado por todos los usuarios incluyendo al creador de la sesión ya que esta se crea inicialmente separada de su terminal actual.

$ screen -x mySharedSession

En cualquier momento es posible listar las sesiones de screen disponibles mediante la ejecución del siguiente comando.

$ screen -ls

Salir y terminar sesiones

Para salir de una sesión compartida sin destruírla es necesario ejecutar la siguiente combinación de teclas: CTRL+a d.

Para salir de una sesión destruyéndola se puede utilizar el comando exit (cierre brusco) o la combinación de teclas CTRL+a k (cierre limpio) la cual es equivalente a CTRL+a :kill.  Debe tener en cuenta que la destrucción de la sesión afecta a todos los usuarios que se encontraban conectados a ella.

Enlaces

Creando un nuevo proyecto en GitHub bajo GNU/Linux

Introducción

Una vez instalado Git y configurado para GitHub es posible empezar a crear proyectos que sean monitoreados por este software de control de versiones.

Para cada proyecto se crea un repositorio donde se almacenarán las versiones de sus archivos y las ramas que se creen con ellos.

A continuación se describirán los pasos necesarios para crear un nuevo repositorio.

Crear el repositorio en GitHub

Para crear un nuevo repositorio en GitHub se debe ingresar con la información de la cuenta del usuario que será su propietario, acceder al enlace Create a new repository e ingresar la siguiente información.

Crear un nuevo repositorio en GitHub
Crear un nuevo repositorio en GitHub

Crear el directorio del proyecto

Si todavía no existe un directorio para el proyecto en el sistema de archivos del equipo del desarrollador, este se debe crear en la ubicación que la se requiera.

$ mkdir /ruta/al/proyecto123

$ cd /ruta/al/proyecto123

Esta nueva ubicación se debe activar para ser monitoreada por Git de la siguiente manera.

$ git init

Agregar una descripción ampliada del proyecto

Este paso es opcional pero se recomienda hacerlo.  Es posible agregar un archivo README al proyecto cuyo contenido se mostrará junto con la descripción del proyecto en GitHub.

$ vi README

Como este archivo es nuevo debe agregarse al registro de Git.

$ git add README

De ser necesario es posible agregar en un solo paso a todos los archivos ubicados en un directorio específico.

$ git add .

Una vez agregado y registrado el archivo es necesario hacer commit de esas modificaciones.

$ git commit -m 'First commit'

Enviar las modificaciones a GitHub

Debe tenerse en cuenta que el commit realizado en el paso anterior se realiza en la base de versiones local.  Para publicar estas modificaciones en el proyecto en GitHub es necesario sincronizarlo con el repositorio remoto de la siguiente manera.

Primero es necesario asociar el repositorio local con el remoto.

$ git remote add origin git@github.com:USERNAME/PROYECTO.git

Reemplazar las palabras USERNAME y PROYECTO con el nombre de usuario GitHub de quien va a publicar y el nombre del proyecto respectivamente.

Finalmente se realiza la sincronización con el repositorio remoto.

$ git push -u origin master

Consultar la página del repositorio en GitHub

Al consultar la página del repositorio en GitHub se deberá ver el listado de archivos sincronizados y el texto de la descripción ampliada (archivo README) especificado.  Para consultar este sitio se deberá acceder al URL con la siguiente estructura.

https://github.com/USERNAME/PROYECTO

Enlaces