Algo de Linux: octubre 2008

miércoles, 29 de octubre de 2008

Trinity Rescue Kit: Arrancar equipos a través de la red usando TRK

En la versión 3.3 de Trinity Rescue Kit se ha añadido una nueva característica muy útil, que nos permite arrancar otras máquinas a través de la red desde un sistema TRK.

Con este nuevo añadido, podemos arrancar un sistema TRK desde CD o USB para luego poder arrancar otras máquinas vía PXE, sin tener que realizar ningún cambio en nuestro entorno de red, lo que significa no tener que hacer modificaciones en nuestro servidor dhcp, ni tener que montar tftp ni nfs.

Podemos usar esta posibilidad:
  • Seleccionando la primera opción que aparece tras la opción por defecto en el menú de inicio.
  • Ejecutando el comando trkbootnet después del arranque de TRK.

Crea tu VPN con LogMeIn Hamachi

¿Qué es Hamachi?
LogMeIn Hamachi es un software que nos sirve para crear una VPN (Red Privada Virtual).

Una VPN nos permite establecer una conexión segura y fiable entre dos o más ordenadores remotos, usando como medio de comunicación internet. Hamachi hace esto posible mediante la creación de túneles IP entre cada uno de los clientes que forman dicha red. Y la conexión es segura, dado que el tráfico entre los equipos es cifrado.

Es zero-config, lo que quiere decir que no necesita configuración. Además, existen versiones de Hamachi para Windows, Linux y Mac.

Usando LogMeIn Hamachi podemos acceder al ordenador de casa desde el trabajo o viceversa, pudiendo compartir archivos o enviar archivos de un PC al otro como si estuvieran conectados físicamente en la misma red local. Personalmente, lo he probado conectando un equipo a una red wifi y otro a otra wifi diferente. Y ha funcionado sin problemas.

Mucha gente lo usa para juegos. Dado que LogMeIn Hamachi crea una red local virtual, podemos jugar con los juegos que tienen modo de juego LAN directamente.

Hamachi funciona de la siguiente manera: Los equipos interlocutores reciben la ayuda de un nodo denominado “servidor mediador” para localizarse entre sí y para arrancar la conexión entre ellos. Una vez establecida la conexión, el tráfico deja de fluir a través de los servidores.

LogMeIn proporciona este servicio de forma gratuita para uso personal.
Además, también cuenta con una versión premiun de pago que agrega unas funciones más.
Pero, si vamos a usar Hamachi para compartir recursos entre máquinas amigas, o para dar soporte a algún amigo o familiar, tendremos más que suficiente con la versión gratuita para uso personal.

Veamos cómo instalarlo en linux:
Para instalarlo en linux descargamos el código desde la página de LogMeIn.
Y después de descargarlo, lo descomprimimos:

# tar xvzf hamachi-0.9.9.9-20-lnx.tar.gz

Una vez descomprimido, entramos dentro del directorio que se nos ha creado al descomprimir:

# cd hamachi-0.9.9.9-20-lnx

Y ejecutamos:

# make install

Una vez hecho esto, ya tenemos instalado hamachi en /usr/bin. Ahora, antes que nada, hay que correr el siguiente comando, que nos permitirá configurar una interfaz de tunel:

# /sbin/tuncfg

Para cada usuario con el que se quiera usar Hamachi, es necesario inicializar el programa (generar el par de claves ciptográficas, así como el directorio ~/.hamachi, donde se guardan las claves, la configuración, y el estado). Así que, tan sólo será necesario ejecutar hamachi-init una vez, al principio, para cada usuario.

Para inicializar hamachi para un usuario concreto, ejecutaremos:
/usr/bin/hamachi-init

Para iniciar el demonio de hamachi, ejecutaremos:

# hamachi start

Si lo queremos hacer es detener hamachi, lo haremos con:

# hamachi stop

Y si queremos objtener información del estado del demonio, ejecutaremos hamachi sin ningún parámetro:

# hamachi

Cuando arrancamos hamachi por primera vez, el servicio se encuentra off-line. Para loguearnos en la red hamachi, ejecutaremos:

# hamachi login

Y, si queremos desconectarnos de la red hamachi, ejecutaremos:

# hamachi logout

El demonio recuerda el estado, así que si lo detenemos con hamachi stop sin hacer logout (no es realmente necesario), cuando lo volvamos a iniciar pasará a on-line automáticamente.

Una vez que hacemos el login, podemos unirnos a una red que ya haya sido creada, ejecutando:

# hamachi join nombredelared [password]

Si no especificamos el password de conexión a la vpn indicada, nos lo pedirá.

Una vez que nos unimos a la red, nuestra máquina ya forma parte de ella, aunque todavía no se puede ver con las demás. Para conseguir que nuestra máquina se vea con las demás conectadas a la vpn, ejecutaremos:

# hamachi go-online

Y si queremos hacer que nuestra máquina deje de verse con las demás, ejecutamos:

# hamachi go-offline


Otros comandos:

Para ver los miembros de la red y su estado, ejecutamos:

# hamachi list

Crear una VPN, desde línea de comandos: (una vez que hayamos hecho hamachi start y hamachi login):

# hamachi create
nombredelared [password]

Se nos pedirá la contraseña a establecer. Una vez introducida, la red será creada y ya estaremos conectados a ella, sin necesidad de hacer un join. Aunque sí deberemos hacer un go-online.

Si somos el creador de la VPN, podremos echar a un miembro ejecutando:

# hamachi evict
nombredelared [iphostaechar]

La dirección IP que debemos especificar es la que se nos muestra con el comando hamachi list, o la que podemos ver en hamachi-gui (No la ip real).

Otra cosa que podemos hacer, si somos el creador de la VPN, es eliminarla:

# hamachi delete nombredelared


A continuación dejo un script de inicio que creé para usar con hamachi:

#!/bin/bash

case "$1" in
init)
if [ ! `pidof tuncfg` ]; then
echo Ejecutando tuncfg.
/sbin/tuncfg
else
echo tuncfg ya esta corriendo.
fi

if [ ! -d ~/.hamachi ]; then
hamachi-init
fi
;;
start)
hamachi start
hamachi login
hamachi set-nick majete
;;

stop)
hamachi logout
hamachi stop
;;

restart)
hamachi logout
hamachi stop

if [ ! -d ~/.hamachi ]; then
hamachi-init
fi

hamachi start
hamachi login
;;

status)
hamachi
;;

*)
echo "Usage: $0 {init|start|stop|restart|status}"
exit 1
;;
esac

Por supuesto, antes de usarlo, alguien tendría que crear la VPN con el comando hamachi create. Y los demás usuarios unirse a ella con hamachi join.

miércoles, 22 de octubre de 2008

Ajustar permisos especiales en ficheros y directorios: Sticky bit, SUID Y SGID

Los permisos de los archivos en Linux/Unix se establecen mediante un número octal que permite ajustar los permisos del usuario, el grupo y otros y que varía entre 000 y 777. Y que determinan quién puede leer, escribir y/o ejecutar un fichero o directorio determinado.

Sin embargo, existen unos bits que nos ofrecen la posiblidad de tener unas medidas de protección adicional ajustando permisos especiales sobre ficheros y directorios: El sticky bit, el bit SGID y el bit SGUID.

Su representación en octal es la siguiente:
  • Sticky bit --> 1000.
  • Bit setgid --> 2000.
  • Bit setuid --> 4000.

Sticky bit.

El sticky bit se utilizaba antiguamente en sistemas UNIX para conseguir que el sistema operativo mantuviera en memoria los programas que tenían el sticky bit activado, con el fin de facilitar ejecuciones posteriores. Al permanecer el programa en memoria, no había necesidad de volver a cargarlo.
Como los sistemas de almacenamiento (discos duros, etc...) han mejorado mucho, éste uso ya no es necesario.

Hoy en día, utilizamos el sticky bit con ficheros y directorios.

Cuando se lo asignamos a un directorio, conseguimos que los elementos (ficheros y/o directorios) que haya en ese directorio sólo pueden ser renombrados o borrados por:
  • El propietario del elemento contenido en el directorio.
  • El propietario del directorio.
  • El usuario root.
El sticky bit prevalece sobre los permisos normales y los elementos, lo que quiere decir que tan sólo podrán renombrar o borrar los elementos los usuarios mencionados, aunque el resto de usuarios tenga permisos de escritura.

Ejemplo:

# chmod 1755 /home/aulas

Si queremos comprobar, en nuestro sistema, qué ficheros o directorios tienen el sticky bit activado, usaremos el comando find:

# find / -perm -1000 -exec ls -la {} \;


Bit suid.

El bit SUID activado sobre un fichero indica que todo aquél que ejecute el archivo va a tener, durante la ejecución, los mismos privilegios que quién lo creó. Así que es importante usarlo lo menos posible y con precaución. Si el administrador crea un fichero y activa el bit SUID, todo aquel usuario que lo ejecute, dispondrá, hasta que el programa finalice, de un nivel de privilegio total en el sistema.

El bit SUID o setuid se activa sobre un fichero añadiéndole 4000 a la representación octal de los permisos del archivo y otorgándole además permiso de ejecución al propietario del mismo.

# chmod 4775 /home/prueba

También puede activarse usando el modo simbólico:

# chmod +s /home/prueba

Si hacemos:
#chmod u+s /home/prueba

En la primera terna de los permisos, en lugar de la x, aparecerá una s o una S.
La S aparecerá si no hemos otorgado el permiso de ejecución correspondiente, en cuyo caso el bit no tiene efecto.

No olvidemos que, con ésto, un usuario normal, sin ningún privilegio especial en el sistema, cuando ejecuta el programa con el bit SUID activado, está trabajando con un usuario efectivo (EUID o Effective UID) que, en el caso de que el propietario sea el administrador, sera 0, lo que le otorga todo el poder del administrador.

Y ésto puede no tener mayor importancia en un ejecutable que haga una función muy concreta, pero, si el ejecutable fuera una copia de un shell, el usuario normal tendría todos los privilegios del root mientras no finalice la ejecución, es decir, hasta que no se teclee exit en la línea de órdenes!!!


Bit sgid.

Todo lo que acabamos de explicar con respecto al bit SUID es aplicable al bit SGID tan sólo que aplicado a nivel de grupo del fichero en lugar de propietario.

En el caso del bit SGID, en lugar de trabajar con el EUID del propietario, todo usuario que ejecute un programa al que se le ha activado el bit SGID, tendrá los privilegios del grupo al que pertenece el archivo.

El bit SGID se activa sobre un fichero sumando 2000 a la representación octal del permiso del fichero y dandole, además, permiso de ejecución a la terna de grupo.
Para ver si hemos activado el bit SGID veremos si, al hacer un ls -l, aparece s o S aparecerá en lugar de la x en esta terna.

Si el fichero es un directorio y no un archivo plano, el bit SGID afecta a los ficheros y subdirectorios que se creen en él. Y los ficheros y sudirectorios tendrán como grupo propietario al mismo que el directorio al que se le ha aplicado el bit SGID, siempre que el proceso que los cree pertenezca a dicho grupo.

martes, 21 de octubre de 2008

Trinity Rescue Kit - Mass Clone: Clonación de discos multicast

Mclone (Mass Clone) es una utilidad incluida a partir de la versión 3-3 de TRK (no disponible en anteriores versiones) que nos permite clonar equipos a través de la red vía multicast.

Hasta ahora hemos utilizado sistemas de clonación unicast, porque, la verdad es que los sistemas multicast solían estar tan sólo en herramientas comerciales, pero en estos últimos tiempos están apareciendo bastantes herramientas de clonación usando multicast, como mass clone, clonezilla...

La ventaja que nos ofrece un sistema de clonación multicast es que un único flujo de datos, proveniente de una determinada fuente, se puede enviar simultáneamente a diversos receptores, con lo que conseguimos menor tráfico en la red y mayor velocidad de clonación. En cambio, en un sistema de clonación unicast, se envía un flujo de datos a cada cliente, con lo que la red estará más ocupada y la clonación será más lenta.

La ventaja de tener mclone incluido en TRK es que no necesitamos montar un servidor para clonar de forma remota varias máquinas. Con arrancar TRK ya lo tenemos disponible.

La clonación con mclone es muy rápida, puesto que sólo se envía un paquete a múltiples receptores. Según el autor de TRK, en un switch de 100 mbits, la media de velocidad es de alrededor de 93 mbits. Las limitaciones a la hora de clonar estarán en la velocidad de la red, el disco a clonar o la cpu de la máquina.

TRK dispone de una opción muy interesante, que es arrancar en modo servidor. Ésto nos permite arrancar el servidor desde nuestra instalación en CD o USB e iniciar todos los clientes a través de la red para ejecutar mclone en cada uno de ellos.

Según el autor de TRK, una imagen de alrededor de 4Gb se clona en una red de 100 mbits en unos 7 minutos aproximadamente. Interesante, ¿no?

Las principales características de mclone son:
  • El sistema es rápido y escalable.
  • Nos permite realizar copias exactas de cualquier sistema operativo.
  • En sistemas Windows XP y Vista se utiliza ntfsclone.
  • Para otros sistemas de ficheros, la herramienta usa dd.
  • Permite utilizar tres tipos de algoritmos de compresión para crear las imágenes: gzip, bzip2 y 7-zip.
  • Permite restaurar los valores originales C/H/S (Cilindro, Cabeza, Sector) en sistemas NTFS. Además, lo hace automáticamente.
  • Permite correr, de forma separada, un máximo de 50 sesiones simultáneas sobre la red.
  • Permite ajustar la velocidad de clonación, indicándole el máximo de mbits.
  • Permite clonar automáticamente o elegir los discos/particiones a clonar.
  • Permite sobreescribir o no el sector de arranque, según le indiquemos.
  • Permite omitir el chequeo C/H/S.
Modo de uso

mclone tiene unos cuantos parámetros, pero básicamente tenemos dos modos de uso:
  • Modo sender (mclone -s). Este modo nos permite servir la imagen de un equipo para clonar los demás. El equipo que ejecuta el modo sender es el que envía la imagen de sí mismo.
  • Modo cliente (mclone). Este modo permite que los equipos clientes sean clonados con la imagen enviada por el equipo que ejecuta mclone en modo sender.
Clonación directa de un equipo a otro u otros.
El equipo que nos servirá de modelo de clonación ejecutará el modo sender:
# mclone -s

Los equipos destinatarios de la clonación, se ejecutarán en modo cliente:
# mclone

Una vez que los equipos estén listos y esperando, pulsaremos Enter en uno de ellos y comenzará el proceso de clonación directamente.

Creación de una imagen de un equipo.
Además de clonar directamente de una máquina a otra u otras, podemos crear un fichero de imagen, que nos servirá de modelo de clonación posteriormente.

El equipo que servirá de modelo ejecutará:
# mclone -s

El equipo que guardará la imagen ejecutará mclone con el parámetro -o. Por ejemplo:
# mclone -o equipomodelo

Crearemos una imagen llamada equipomodelo. Además, la imagen se guardará sin comprimir como un conjunto de ficheros en un directorio con el nombre que hayamos indicado (equipomodelo en el ejemplo) y que mclone creará en el directorio actual, si no existe.

Si queremos crear la imagen comprimida, por ejemplo, en formato gzip, lo indicaremos con el comando -C tipocompresión. Veamos un ejemplo:
# mclone -C gzip -o equipomodelo

Debemos tener cuidado con la compresión. Por lo que dice el autor de TRK en su web, gzip es el único compresor que no consume muchos recursos. Pero, si lo que queremos es mayor compresión, aunque la velocidad de transmisión sea más lenta, usaremos bzip2 o 7-zip como método de compresión.

Restaurar un equipo desde una imagen creada.
Una vez que tenemos una imagen en el equipo modelo, podemos servírsela a otras máquinas pasando el parámetro -i a mclone. Siguiendo con el ejemplo anterior:
# mclone -i equipomodelo

Como podemos ver, no es necesario especificar el sistema de compresión usado para crear la imagen. Mclone ya se encarga de detectarlo.

En el equipo que reciba la imagen, ejecutaremos mclone sin parámetros:
# mclone

Otras opciones de mclone.
  • -n Nos permite indicar un número máximo de sesiones cuando realizamos clonaciones múltiples. Tanto en el cliente como en el servidor debemos especificar el mismo número. Ejemplo: cliente -> mclone -n 5 - servidor -> mclone -s -n 5
  • -d omite la detección automática de discos y nos permite especificar los discos que queremos clonar. Ejemplo: mclone -s -d /dev/sda,/dev/sdb
  • -p omite la detección automática de particiones y nos permite especificar las que queramos clonar. Ejemplo: mclone -s -p /dev/sda1
  • -b omite la grabación del sector de arranque. Ésto nos servirá si no queremos que al clonar se sobreescriba nuestro sector de arranque, por ejemplo, porque tengamos un gestor de arranque instalado.
  • -c omite la comprobación C/H/S. Esta opción no debería ser necesaria, a menos que tengamos problemas con el arranque.
  • -t establece un timeout entre el primer cliente que conecta y el último que puede conectar. El timeout por defecto es de 10 segundos.
  • -r establece la velocidad de transferencia. Podemos especificar el máximo bitrate en kilobit (k) o en megabit (m). Ésto puede servirnos para no consumir todo el ancho de banda de la red al clonar. Ejemplo: mclone -s -r 70m
  • -C nos permite elegir el método de compresión a utilizar: gzip, bzip2 o 7-zip. Ejemplo: mclone -C gzip -o equipomodelo

lunes, 20 de octubre de 2008

Trinity Rescue Kit - Setip y Setproxy: Configurar ajustes de red

Setip es otra de las utilidades incluidas en TRK. Esta script nos permitirá introducir una dirección IP fija para nuestra tarjeta de red.

Modo de uso:

setip | -h

Si no pasamos ningún argumento, el script asumirá que el interfaz que queremos configurar es eth0:

# setip

También podemos especificar el interfaz de red que queremos configurar:

# setip eth1

O podemos consultar la ayuda:

# setip -h

El script nos preguntará:
  • La dirección IP que queremos asignar al interfaz de red.
  • La máscara de subred.
  • La dirección IP de la puerta de enlace por defecto.
  • Y, por último, la dirección IP del servidor de DNS que queremos usar.
Una vez introducidos los valores, nos informará de que se han aplicado.

Otro script útil es setproxy. Este script nos sirve para configurar los datos del servidor proxy de salida.

Modo de uso:

setproxy

Ejecutamos el script sin argumentos y nos preguntará:
  • La dirección IP o el nombre del servidor proxy.
  • El puerto a usar en el proxy (Usualmente el 8080).
  • Y, opcionalmente, el nombre de usuario y el password. Si no fuera necesario introducir el password, lo dejaremos en blanco y pulsaremos Enter.

Trinity Rescue Kit - Bridge: Convertir una máquina en puente

La utilidad bridge que incorpora TRK nos permite convertir la máquina que ejecuta TRK en un puente por el que pasa el tráfico de la red. Para ello, necesitamos, que el equipo tenga dos interfaces de red. Ésto puede servirnos para analizar dicho tráfico.

Por ejemplo, si quiero analizar todo el tráfico que viaja entre mi red e internet, puedo poner un equipo con dos tarjetas de red entre la red y el router de salida, y usar TRK para monitorizar dicho tráfico. Normalmente, cuando tengo que hacer sniffing en la red que administro, uso otros medios, pero ésta puede ser una opción más.

Con la utilidad bridge creamos una conexión transparente entre las tarjetas de red de la máquina por donde pasa todo el tráfico que queremos sniffar.

Si queremos hacerlo, conectamos los cables con el equipo con el que vamos a hacer packet sniffing y ejecutamos bridge up para activar el puente entre las dos interfaces de red:

# bridge up

Y ahora que el equipo está haciendo de puente transparente, ejecutamos, tcpdump para ver el tráfico que está pasando:

# tcpdump -i eth0

Con el comando anterior vemos todo el tráfico que pasa. Claro, que sería más interesante aplicar filtros que nos mostrasen sólo el tipo de tráfico que estamos analizando, pero no vamos a meternos aquí en el uso de tcpdump.

Cuando queramos desactivar el puente entre las dos tarjetas de red, ejecutaremos:

# bridge down

Y listo.

Trinity Rescue Kit - Fileserver: Compartir unidades con TRK

Trinity Rescue Kit nos proporciona una utilidad muy interesante (fileserver) que nos permite convertir nuestro TRK en un servidor de ficheros, lo que nos servirá para compartir nuestros sistemas de ficheros locales.

Esta herramienta es muy útil para mí, porque tengo montado TRK en un disco duro USB, y, en un momento dado, si lo necesito, puedo compartir las particiones del disco duro en la red.

La utilidad fileserver lo que hace es poner en marcha un servidor de ficheros samba en nuestra instalación de TRK. Y lo hace montando todas nuestras unidades locales en modo lectura/escritura haciendo una llamada a: mountallfs -g.

Todas las unidades que encuentre, se compartirán con el nombre de cada dispositivo. Por ejemplo, si tenemos una partición /dev/sda2 de tipo fat32 en nuestro host, que tiene una IP 192.168.1.122, podremos acceder a dicha unidad compartida de la siguiente manera:
\\192.168.1.122\sda2

La utilidad fileserver puede ser ejecutada de dos modos:
  • De modo seguro (secured).
  • De modo invitado (guest).
Modo seguro (secured).
Si ejecutamos el comando fileserver con el parámetro -s, lo lanzaremos en modo seguro:
# fileserver -s

Esto hace que el sistema pida un usuario y un password para acceder a las unidades compartidas.

Modo invitado (guest).
Si ejecutamos el comando fileserver con el parámetro -g, lo lanzaremos en modo invitado:
# fileserver -g

Este modo debemos usarlo con precaución, porque permite a cualquiera acceder a las unidades compartidas. Es recomendable usarlo en un entorno seguro, con un firewall o que no haya conexión a internet.

Trinity Rescue Kit - Clonexp: Clonar particiones ntfs a través de la red

Clonexp usa ntfsclone y nos permite clonar una partición ntfs en otro equipo a través de la red. Para ello, ambos PC's deben estar corriendo TRK, de forma que:
  • Uno envía los datos a la salida estándar.
  • El otro toma los datos de la entrada estándar.
Ambos equipos transmiten los datos a través de ssh.

Antes de usar clonexp, debemos asegurarnos de que la partición de destino es mayor o igual que la partición fuente, es decir, debemos asegurarnos de que cabe en el ordenador destino. Es importante asegurarnos, porque ntfsclone (y como consecuencia clonexp) no puede redimensionar dinámicamente una partición. Así que, si viéramos que la partición de destino es más pequeña que la partición fuente, podemos usar qtparted (incluido en TRK) para aumentar su tamaño.

Además, también debemos asegurarnos de que, tanto los sistemas de ficheros locales como los remotos, no se encuentran montados. De lo contrario, el script clonexp fallará.

Modo de uso

Podemos usar clonexp de dos modos:
  • De modo interactivo, al ejecutarlo sin argumentos. Nos preguntará dispositivo origen, host de destino y dispositivo destino y comprobará que existan.
  • Como un comando: clonexp :
Por ejemplo: Si queremos clonar la partición hda3 de la máquina local en la partición hda3 de la máquina cuya IP es 192.168.1.133, ejecutaremos el siguiente comando:

# clonexp /dev/hda3 192.168.1.133:/dev/hda3

Nos preguntará por el password que hemos introducido en la máquina remota. Lo escribimos y automáticamente comenzará a copiar los datos.

También podemos hacer un backup del registro de arranque de la partición para salvarlo más tarde como un fichero en la partición de destino. Ésto se haced con la opción --bkupbr.

El autor de Trinity Rescue Kit nos recomienda usar clonexp sólo entre equipos que tengan la misma distribución de particiones, o aún mejor, entre equipos que tengan el mismo hardware.

sábado, 18 de octubre de 2008

Fondo transparente el un terminal

El otro día un amiguete vió el fondo que tenía puesto en un terminal y me preguntaba cómo se lograba ese efecto. Como es algo muy simple, lo pongo aquí.

Como podéis ver, el fondo no es exactamente transparente, porque lo que se vé es el fondo del escritorio (no las ventanas que haya detrás), pero queda muy curioso:


Para configurar el fondo del terminal y dejarlo tranparente, abrimos un terminal y hacemos clic en el menú Editar -> Perfiles. Se nos abrirá una ventana como la siguiente. Como podéis ver, yo no utilizo varios perfiles, sino que tan sólo tengo uno: el predeterminado. Si queréis, podéis crear varios y utilizarlos cuando os apetezca.


Seleccionamos el perfil en el que queramos aplicar un fondo transparente. Como yo sólo uso uno, que es el predeterminado, lo dejo, puesto que aparece directamente seleccionado el Predeterminado.

Una vez seleccionado el perfil, pulsamos el botón Editar, para modificarlo y se nos abrirá una ventana en las que podemos ajustar las preferencias del terminal.

Hacemos clic en la pestaña Efectos, en la que seleccionamos "Fondo transparente" y ya está.
Tan sólo añadir que podemos desplazar la barra a derecha o izquierda para aumentar o disminuir el nivel de transparencia:
Una vez ajustada la transparencia, pulsamos el botón Cerrar y se aplicarán los cambios.

viernes, 17 de octubre de 2008

Utilizar gmail, yahoo o hotmail como cliente mailto

Muchas páginas tienen enlaces de correo del tipo "mailto" y cuando hacemos clic sobre ellos, se nos abre la aplicación de correo predeterminada.

En Firefox 3, además de aplicaciones instaladas en nuestro ordenador, podemos hacer que al hacer clic sobre un enlace del tipo mailto:usuario@correo.extension se nos abra gmail, yahoo, hotmail...

Veamos cómo añadir esta posibilidad:

Lo primero que hacemos es abrir el navegador y teclear about:config en la barra de direcciones. Se nos abrirá una ventana como la siguiente, en la que Firefox nos informa de que puede ser peligroso cambiar las preferencias avanzadas.

Hacemos clic en el botón "¡Tendré cuidado, lo prometo!" para continuar y se nos mostrarán un montón de opciones de configuración:

En el campo Filtro escribimos: gecko.handlerservice. y buscamos la clave gecko.handlerService.allowRegisterFromDifferentHost, que seguramente será la primera.
Si está desactivada (false) hacemos doble clic sobre la clave para activarla. El valor cambiará a true. Una vez hecho ésto, escribimos: network.protocol-handler.external.mailto en el campo Filtro.

Si esta clave está desactivada (false), la activamos haciendo doble clic sobre ella, aunque seguramente esté activada por defecto.


Una vez hecho lo anterior, lo único que tenemos que hacer es lo siguiente:

Si queremos añadir la posibilidad de abrir enlaces mailto con Gmail, escribiremos lo siguiente en la barra de direcciones del navegador:

javascript: window.navigator.registerProtocolHandler ( "mailto", "https: / / mail.google.com / mail /? extsrc = mailto & url =% s", "Gmail")
Si queremos añadir la posibilidad de abrir enlaces mailto con Hotmail, escribiremos lo siguiente en la barra de direcciones del navegador:

javascript:window.navigator.registerProtocolHandler("mailto","http://mail.live.com/?rru=compose%3Fto%3D%s","Hotmail")
Si queremos añadir la posibilidad de abrir enlaces mailto con Yahoo, escribiremos lo siguiente en la barra de direcciones del navegador:

javascript:window.navigator.registerProtocolHandler("mailto","http://compose.mail.yahoo.com/?To=%s","Yahoo")
Podemos añadirlas todas si queremos.

Al introducir cualquiera de de las líneas anteriores en la barra de direcciones, el navegador nos pedirá confirmación para añadir la aplicación. Pulsamos el botón "Añadir aplicación" y listo.

Luego, ya podremos cambiar, en cualquier momento la aplicación predeterminada para abrir los enlaces mailto, entrando en el menú Editar -> Preferencias y seleccionando en la pestaña Programas el tipo de contenido mailto:

domingo, 12 de octubre de 2008

Reemplazar texto en todos los archivos de directorios y subdirectorios

A veces queremos sustituir una cadena en todos los los archivos de un directorio y sus subdirectorios de forma recursiva. Ésto es sencillo de hacer utilizando perl. Vamos a verlo por partes:

Cuando queremos sustituir directamente una cadena por otra en un fichero, hacemos algo así:
# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' fichero

Si la sustitución queremos hacerla en todos los ficheros de un subdirectorio, haremos:
# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' *

Si queremos sustituir la cadena en todos los subdirectorios del directorio actual, combinaremos el comando perl con un comando find que busque todos los archivos:
# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' `find ./ -name *`

Y ya para terminar de rematar: Si queremos sustituir una cadena por otra en todos los ficheros con un determinado nombre en todos los subdirectorios del directorio actual:
# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' `find ./ -name "patronabuscar"`

Veamos unos ejemplos:

Sustituir la cadena jose por pepe en el fichero clientes.txt:
# perl -p -i -e 's/jose/pepe/g' clientes.txt

Sustituir la cadena jose por pepe en todos los ficheros del directorio actual:
# perl -p -i -e 's/jose/pepe/g' *

Sustituir la cadena jose por pepe en el directorio actual y en todos sus subdirectorios:
# perl -p -i -e 's/jose/pepe/g' `find ./ -name *`

Sustituir la cadena jose por pepe en todos los ficheros con extensión .txt del directorio actual y de todos sus subdirectorios:
# perl -p -i -e 's/jose/pepe/g' `find ./ -name "*.txt"`

Y un último ejemplo: Sustituir la cadena $(grub_device) por la cadena (hd0,1) en todos los ficheros con extensión .lst del directorio actual y sus subdirectorios:
# perl -p -i -e 's/\$\(grub_device\)/\(hd0,1\)/g' `find ./ -name "*.lst"`

Montar varios live-cd en un HD USB: Cuestiones a tener en cuenta

Hay herramientas muy útiles para los que trabajamos administrando sistemas linux o windows, como por ejemplo SystemRescue o Trinity Rescue Kit.

Si tenemos un pendrive con un poco de capacidad o un HD usb que usamos para transportar datos, podemos montar dichas herramientas en dicho pendrive o HD y nos servirá para tenerlas a mano en cualquier momento.

Cuando he añadido herramientas como éstas al HD externo, he creado una partición para cada una y he colocado el grub en otra partición de inicio, con el fin de que queden separadas para poder actualizarlas fácilmente cuando haya nuevas versiones.

Una cosa que hay que tener en cuenta es que estas distros arrancan normalmente con isolinux/syslinux, así que, además de modificar el grub hay que hacer syslinux a cada partición para que sea arrancable.

# syslinux /dev/sdaX (siendo X el número de partición)

En caso contrario, no arrancará.

Otra cosa, es que las particiones serán de tipo fat16 o fat32.

viernes, 10 de octubre de 2008

NTFSprogs: Administrar particiones NTFS desde Linux

ntfsprogs es un paquete linux que contiene una amplia colección de utilidades que nos permiten trabajar con particiones NTFS.

Este paquete es habitual que esté en los repositorios, así que si tenéis una distribución Debian o basada en Debian, no tenéis que hacer más que un apt-get install para instalarlo.

# apt-get install ntfsprogs

En cualquier caso, siempre podéis descargar el código fuente para instalarlo:
http://sourceforge.net/project/showfiles.php?group_id=13956&package_id=14232

Veamos qué utilidades contiene este paquete:
  • ntfsfix tal y como dice la ayuda, ntfsfix es una utilidad que arregla algunos problemas comunes en volumenes NTFS.
  • mkntfs nos permite formatear una partición con el sistema de archivos NTFS.
  • ntfsinfo nos permite ver informacion detallada de volumenes NTFS.
  • ntfslabel nos permite ver y cambiar la etiqueta de volumen de una particion NTFS.
  • ntfsresize nos permite redimensionar un volumen NTFS de forma no destructiva, moviendo de forma segura cualquier dato si es necesario.
  • ntfsundelete nos permite recuperar archivos eliminados de una particion NTFS.
  • ntfscluster identifica ficheros en una región específica de un volumen NTFS.
  • ntfscat muestra en pantalla ficheros de volumenes NTFS sin montar la particion.
  • ntfsls lista el contenido de directorios sin montar la particion.
  • ntfscp nos permite copiar ficheros en un volumen NTFS.
  • ntfsclone nos permite clonar volumenes NTFS o una parte de ellos.

Trinity Rescue Kit - Ntfsundeleteall: Recuperar archivos borrados en NTFS

Cuando eliminamos un archivo, realmente no se borra, sino que su contenido se mantiene físicamente en el medio y el espacio ocupado por el archivo se marca como disponible para escribir.
Así, el próximo archivo que solicite espacio en disco, puede sobrescribir el contenido del archivo eliminado.

Cuando queramos recuperar datos borrados, es muy importante asegurarse que ninguna aplicación escriba en el disco o la partición donde se encontraba el archivo eliminado ya que cualquier archivo nuevo, por pequeño que sea, puede sobrescribir el archivo eliminado.

Ntfsundeleteall (script incluido en TRK) es un "envoltorio" de la aplicación ntfsundelete (incluida en el paquete ntfsprogs), una aplicación gratuita que nos permite recuperar archivos eliminados.

Lo que hace este script es buscar todos los ficheros borrados en un volumen ntfs e intenta recuperarlos. Ésto se consigue buscando en la Master File Table y viendo qué ficheros están aún disponibles en disco o parcialmente sobreescritos.

ntfsundeleteall recupera nuestros ficheros con el nombre de fichero original.

Sintaxis:


ntfsundeleteall dispositivo lugaralmacenamiento [porcentaje mínimo] --force

Donde:
  • dispositivo es la partición de la que queremos recuperar datos.
  • lugaralmacenamiento es el directorio donde almacenar los archivos recuperados.
  • porcentaje mínimo nos permite indicar que queremos recuperar los ficheros en base al porcentaje de recuperabilidad indicado.
  • --force lo que hace es omitir la comprobación de que el sistema de ficheros del que queremos recuperar datos es ntfs. Esta opción podemos utilizarla si pensamos que nuestro sistema de ficheros está tan dañado que ni siquiera la aplicación reconoce el tipo de sistema de ficheros.
Veamos cómo se utiliza el script:

Si tenemos, por ejemplo, un volumen ntfs en /dev/sda1 en el que hemos borrado archivos y los queremos recuperar, lo primero que debemos hacer es asegurarnos de que este volumen no se encuentra montado.

Después, preparamos un lugar donde podamos almacenar los archivos recuperados, como por ejemplo, un disco usb externo /dev/sdb1 y lo montamos, por ejemplo en /mnt0. Y, si queremos ser un poco organizados, creamos un directorio al que llamaremos recuperados, en el que almacenaremos los ficheros recuperados.

Una cuestión importante: Los ficheros recuperados nunca deben ser almacenados en la misma partición de donde los estamos recuperando, porque corremos el riesgo de sobreescribir otros ficheros que aún no han sido recuperados.

Siguiendo con el ejemplo, podemos hacer:

# ntfsundeleteall /dev/sda1 /mnt0/recuperados

Ésto recuperará todos los ficheros que encuentre, incluso si sólo el 1% del fichero es recuperable.
Como probablemente no nos interese recuperar este tipo de ficheros, porque posiblemente estén corruptos, podemos añadir un parámetro con el que indicamos el porcentaje que esperamos que el fichero sea recuperable.

Si por ejemplo, queremos recuperar los archivos que tengan un 100% de recuperabilidad, ejecutaremos el comando de la siguiente manera:

# ntfsundeleteall /dev/sda1 /mnt0/recuperados 100

Cuando el programa termine, en el directorio /mnt0/recuperados encontraremos los ficheros recuperados.

jueves, 9 de octubre de 2008

Trinity Rescue Kit - Umountallfs: Desmontar los dispositivos de almacenamiento

Umountallfs es un script incluido en Trinity Rescue Kit que desmonta los sistemas de ficheros y, al mismo tiempo, descarga cualquier módulo ntfs residente.

Si tenemos montados todos los sistemas de ficheros de nuestro disco duro y queremos desmontarlos, ejecutaremos:

# umountallfs

Trinity Rescue Kit - Mountallfs: Montar los dispositivos de almacenamiento

Mountallfs es un script incluido en Trinity Rescue Kit (TRK) que escanea todos los dispositivos locales de almacenamiento y monta sus sistemas de ficheros en un punto de montaje estándar que es el nombre del dispositivo. Por ejemplo, si detecta que tenemos un disco con una partición hda1 y otra hda2, montará automáticamente /dev/hda1 en /hda1 y /dev/hda2 en /hda2, detectando el tipo de sistema de ficheros.

Veamos cómo utilizarlo:
  • mountallfs sin opciones montará todas las particiones en un punto llamado como su nombre de dispositivo. Como decíamos antes: Montará /dev/hda1 en /hda1. Si utilizamos mountallfs de esta forma, sin parámetros, montará las particiones ntfs con el driver implícito, dándonos acceso total de lectura pero tan sólo acceso limitado de escritura (sobreescribiendo fichero del mismo tamaño con ntfscp).
  • mountallfs -f monta todos los sistemas de ficheros, montando los de tipo ntfs con el driver ntfs-fuse, que tiene un buen rendimiento y capacidades limitadas de escritura, como crear un máximo de 10 ficheros por directorio.
  • mountallfs -g nos ofrece acceso total de lectura/escritura. A pesar de que este driver está aún en versión beta, está funcionando bastante bien, y no hay informes de que se haya producido ninguna corrupción de datos. Con este driver no hay grandes limitaciones, excepto no poder crear ficheros comprimidos.
  • mountallfs -c también monta cualquier sistema de ficheros utilizando el driver captive-ntfs en sistemas de ficheros ntfs. Este driver utiliza uno de los drivers originales de Microsoft ntoskrnl.exe y ntfs.sys. Debido a las restricciones de licencia de Microsoft, estos archivos no se encuentran el TRK.
  • mountallfs -l activa los módulos LVM y escanea el sistema buscando volúmenes lógicos para montarlos, lo que automatiza completamente el proceso de montar sistemas de ficheros en volúmenes lógicos.

El shell de linux: Generar números aleatorios

$RANDOM es una función interna de Bash que devuelve un número entero pseudoaleatorio en el rango: 0 - 32767.

Podemos acotar los límites superior e inferior del número a generar de la siguiente manera:
  • Si queremos establecer un límite superior, utilizaremos la función módulo (%).
  • Si queremos establecer un límite superior, sumamos el número inferior.
Como ésto es más difícil de explicar que de hacer, veámoslo con ejemplos:

Si queremos obtener un número entre 0 y 15 usamos el comando:
# echo $((RANDOM%16))

Si queremos obtener un número entre 1 y 15:
# echo $((1+RANDOM%15))

miércoles, 8 de octubre de 2008

Trinity Rescue Kit - Winpass: Administrar cuentas de windows

Siguiendo con la lista de herramientas de Trinity Rescue Kit, hoy voy a hablar de Winpass ya que me lo han pedido.

Winpass
una herramienta incluida en TRK que nos permite administrar las cuentas locales de los usuarios de un sistema windows. Y, ¿qué cosas nos permite hacer?
  • Podemos ver un listado de los usuarios locales que tiene el sistema, con indicación de cuáles son administradores y cuáles están bloqueados.
  • Podemos dejar en blanco la password de un usuario concreto.
  • Podemos establecer una nueva password para un usuario concreto.
  • Podemos convertir un usuario cualquiera en administrador.
  • Podemos desbloquera y activar una cuenta de usuario que estuviera desactivada.
Winpass utiliza para ello una herramienta llamada chntpw.

Veamos cómo utilizarlo:

1) Para ver la lista de usuarios locales que tiene nuestro sistema windows, arrancamos el CD de TRK. Una vez arrancado, ejecutamos el siguiente comando:

# winpass -l

Winpass chequeará todas las particiones de nuestro disco en busca de instalaciones de windows.
Cuando detecte una instalación nos mostrará un mensaje informándonos de todas las instalaciones de windows que ha encontrado, para que elijamos aquella con la que queremos trabajar. Por supuesto, si sólo tenemos una instalación de windows, tan sólo nos mostrará una opción:

Windows NT/2K/XP Installation(s) found in
1: /hda1/WINDOWS
Make your choice or 'q' to quit: [1]

Por defecto nos ofrecerá la primera instalación detectada. Si queremos continuar pulsamos el número de opción (o Enter, si queremos seleccionar la opción por detecto) y si queremos abandonar pusamos q.

Si pulsamos Enter, nos mostrará una lista de cuentas de usuarios, indicándonos cuáles de ellos son administradores y qué cuentas están desactivadas o con la password en blanco.

2) Para modificar las propiedades de alguna cuenta de usuario, ejecutamos el comando winpass con el parámetro -u:

# winpass -u nombredeusuario

El nombredeusuario será el nombre de usuario windows del usuario que queremos modificar. Por ejemplo, si queremos modificar las propiedades del usuario Administrador, ejecutaremos:

# winpass -u Administrador

Al igual que cuando queríamos obtener la lista de los usuarios del sistema, winpass chequeará todas las particiones de nuestro disco en busca de instalaciones de windows.
Cuando detecte una instalación nos mostrará un mensaje informándonos de todas las instalaciones de windows que ha encontrado, para que elijamos aquella con la que queremos trabajar. Por supuesto, al igual que en el caso anterior, si sólo tenemos una instalación de windows, tan sólo nos mostrará una opción:

Windows NT/2K/XP Installation(s) found in
1: /hda1/WINDOWS
Make your choice or 'q' to quit: [1]

Por defecto nos ofrecerá la primera instalación detectada. Si queremos continuar pulsamos el número de opción (o Enter, si queremos seleccionar la opción por detecto) y si queremos abandonar pusamos q.

Nos preguntará si queremos desactivar SYSKEY, y, como opción por defecto, nos aparecerá seleccionado no. IMPORTANTE!!! Os recomiendo que desactivéis SYSKEY. A mí siempre me ha dado problemas en Windows XP, denegándome el acceso con todos los usuarios, y luego he tenido que restaurar los archivos SECURITY y SAM para que vuelva a funcionar.

Después de pulsar N, nos mostrará información acerca del usuario y nos ofrecerá un menú con las siguientes opciones:
  1. Dejar en blanco la password del usuario.
  2. Poner una nueva password al usuario. Nos avisa de que tengamos cuidado con ésto en XP o Vista. Yo lo he utilizado en XP, no me ha funcionado la nueva password y luego he tenido que volver a usar la aplicación para dejar la password en blanco.
  3. Convertir al usuario elegido en administrador. ¡¡Interesante opción cuando intentas conseguir privilegios en un sistema en el que no eres administrador!!
  4. Desbloquear y activar una cuenta de usuario bloqueada.
Como véis, las posibilidades de esta herramienta son muy interesantes.

Trinity Rescue Kit - Trk2iso: Crear una iso del TRK que está corriendo

trk2iso es otra de las herramientas incluidas en Trinity Rescue Kit.

Esta herramienta nos permite crear un fichero ISO del TRK que estamos corriendo en un momento dado. Debemos destacar que este script no actualiza trk. Tan sólo crea un fichero iso en el directorio en que nos encontramos situados. Este fichero podremos grabarlo posteriormente con nuestro programa de grabación favorito.

Veamos cómo utilizarlo:

# mountallfs -g => Suponemos que /dev/hda1 es nuestra unidad c:
# cd /hda1/temp -> Suponemos que en la partición windows existe un directorio temp.
# trk2iso

Cuando termine el proceso, tendremos un fichero iso en el directorio temp de la partición de windows, que podremos grabar en un cd con nuestro software de grabación favorito.

Trinity Rescue Kit - Trk2usb: Montar Trinity Rescue Kit en un pendrive

La herramienta trk2usb nos permite montar Trinity Rescue Kit en una memoria USB o en un disco duro.

Veamos la sintaxis de trk2usb:

trk2usb -d {DISPOSITIVO} -s {tamaño} -n

Donde:
  • -d {DISPOSITIVO} nos permite indicar el dispositivo en el que queremos montar trk2usb. Ojo: Debemos especificar el dispositivo (no una partición). El disco completo será borrado, llenado de ceros y ormateado con una partición de tipo FAT 16 de un máximo de 1Gb, siendo la 4ª partición primaria. Por ejemplo, si especificamos -d /dev/sda tendremos una partición /dev/sda4 de tipo FAT 16 y tamaño 1Gb.
  • -s {tamaño} nos permite especificar un tamaño concreto (en Mb) para nuestro dispositivo, por si más tarde queremos añadir más particiones. Debemos especificar un mínimo de 128 Mb para que TRK quepa.
  • -n noformat. Usaremos esta opción si nuestro dispositivo ya tiene datos y no queremos perderlos. Esta opción nos permite especificar una partición de destino en la línea de comandos.
Veamos un ejemplo de uso de trk2usb:

# trk2usb -n -d /dev/sda1
Montamos trk en la partición 1 del dispositio usb sin formatear para no perder los datos

# trk2usb -d /dev/sda
Montamos trk en el dispositivo usb sda.

martes, 7 de octubre de 2008

Trinity Rescue Kit: Distribución de teclado

Trinity Rescue Kit viene configurado con la distribución de teclado querty us por defecto.
Si necesitamos otra distribución de teclado, TRK incorpora una serie de pequeños scripts que nos permitirán cambiarla una vez iniciado el sistema.

Éstas son las distribuciones de teclado disponibles:
  • be = belgian latin1
  • de = german qwertz
  • fr = french azerty
  • nl = dutch qwerty
  • uk = uk qwerty
  • us = us qwerty
Así que, si arrancamos TRK y queremos establecer como distribución de teclado el español, ejecutaremos el script es y tendremos el teclado con la distribución español:

# es

Trinity Rescue Kit - Updatetrk: Actualización de TRK

Trinity Rescue Kit es capaz de auto-actualizarse si ejecutamos el script 'updatetrk', lo que requiere una conexión a internet más o menos rápida, con el fin de no eternizarnos en el proceso de actualización. Además, la actualización debe hacerse en una red ethernet, por lo que he podido ver. Aunque a lo mejor también puede hacerse en una wifi sin seguridad, pero no lo he probado.

Este script es muy fácil de manejar:
  • Podemos ejecutarlo directamente, sin parámetros. Ej: updatetrk
  • O podemos pasar como parámetro un lugar donde TRK pueda reconstruirse. Ej: updatetrk -b /puntodemontaje/directorio/
Si hemos arrancado TRK en un PC con Windows, podemos ejecutar updatetrk sin parámetros. TRK aprovechará el fichero de intercambio pagefile.sys que tiene el sistema Windows de la máquina para crear un sistema de ficheros temporal en él. Esto es una buena idea, ya que que el fichero pagefile.sys de la máquina no contiene datos válidos puesto que el sistema no está corriendo, y, por tanto, dicho fichero no se está utilizando. Además, no debemos preocuparnos de que se utilice el fichero pagefile.sys, porque no tendrá ninguna consecuencia en el funcionamiento posterior de Windows. Tan sólo será reutilizado.

Si hemos arrancado TRK en un PC que no tenga un fichero pagefile.sys, tendremos que especificar un lugar donde TRK pueda ser reconstruido. Eso sí. Debemos asegurarnos de que el lugar seleccionado se encuentre en un sistema de ficheros cualquiera que tenga al menos 250Mb de espacio libre.

Y si al arrancar TRK tenemos un fichero pagefile.sys, pero es demasiado pequeño (<250Mb), tendremos que incrementar el tamaño de dicho fichero desde Windows. De todos modos, ésto no debería suceder, a menos que el sistema sea antigüo. Si tenemos un PC más o menos reciente, tendrá al menos 256MB de RAM, y nuestro fichero de intercambio tendrá al menos el mismo tamaño.

Pero, ¿qué es lo que hace updatetrk?

Lo primero que hace es informarnos de que el software que vamos a descargar es gratuito para uso personal pero no es GPL y nos pide que aceptemos los términos de licencia.

Después nos pregunta si queremos soporte Captive NTFS. No es escrictamente necesario. Pero si respondemos que sí, ejecutará 'captive-install-acquire', una utilidad incluida en trk.
Esta utilidad buscará en nuestro disco duro local los ficheros ntfs.sys y ntoskrnl.exe. Si no los encuentra localmente, los descargará de Microsoft (si estamos conectados a internet, claro).

Una vez hecho ésto, comenzará a descargar las últimas firmas de virus para ClamAV.

Después, descargará el antivirus F-Prot y sus últimas firmas de virus.

Una vez descargado F-Prot, descargará Grisoft AVG y sus últimas firmas de virus.

Cuando termine de descargar Grisoft AVG, comenzará a descargar BitDefender y sus actualizaciones. BitDefender tiene instalador propio, con lo que tendremos que aceptar su licencia. Y, una vez aceptada, especificaremos el directorio done vamos a instalarlo. Por defecto, nos ofrece /opt. Así que pulsamos Enter para aceptarlo y comienza el proceso de instalación.

Tras instalar BitDefender, descargará VexiraAV y sus actualizaciones de firmas de virus.

Para este artículo, he ejecutado updatetrk en la versión 3.3, que contiene 5 antivirus. En la versión anterior vienen incluidos todos excepto VexiraAV.

Una vez descargados todos los antivirus y sus firmas, updatetrk copia el contenido de los directorios /bin, /sbin, /etc y /lib a nuestro nuevo TRK. Ésto significa que cualquier cosa que modifiquemos o añadamos en estos directorios, será incluida en nuestro nuevo TRK, lo que nos ofrece la posibilidad de hacer pequeñas modificaciones/adiciones a TRK.

Naturalmente, podemos utilizar updatetrk todas las veces que queramos para mantener las firmas de virus actualizadas.

Veamos la sintaxis de updatetrk:

updatetrk -b {LugarConstruccion} -i {LugarFicheroIso}
updatetrk -u {LugarDispositivoUSB}


Donde:
  • -b {LugarConstruccion} Nos permite especificar el lugar en el que pueden ser almacenados los ficheros intermedios necesarios para reconstruir el sistema. Eso sí, ese lugar debería tener al menos 250Mb de espacio libre. Por otra parte, debemos asegurarnos de que no existen otros ficheros en el destino especificado, porque de existir, serían incluidos también.
  • -i {LugarFicheroIso} Nos permite especificar el lugar donde se creará el fichero iso. Este lugar debería tener al menos 140 Mb libres. No tenemos que dar un nombre al fichero iso. Se nombrará automáticamente. Si omitimos esta opción, el fichero se creará en el mismo lugar que especificamos para la construcción. Y, si omitimos el lugar de construcción, el fichero iso se creará en el directorio temporal donde este localizado el fichero pagefile.sys. En general, se almacenará en c:\temp
  • -u {LugarDispositivoUSB} Nos permite especificar el dispositivo usb que vamos a actualizar. Ésto lo que hace es una simple copia al lugar de destino especificado.
Algunos ejemplos de uso:

# updatetrk
Como no especificamos ningún parámetro, se utilizará como lugar de construcción el fichero pagefile.sys de nuestra instalación windows y el fichero iso se almacenará en c:\temp
Si trk no encontrara un fichero pagefile.sys, el script termina sin realizase la actualización.

# updatetrk -b /hda1/temp/trkbuilding/ -i /hda1/Documentos/
En este caso se usará el directorio /hda1/temp/trkbuilding/ como lugar de construcción y /hda1/Documentos/ como lugar donde almacenar el fichero iso.

# updatetrk -u /dev/sda4
Si usamos esta sintaxis, trk buscará un fichero pagefile.sys local para usar como lugar de construcción y copiará los ficheros al dispositivo usb o disco duro especificado.
Si trk no encontrara un fichero pagefile.sys, el script termina sin realizase la actualización.

Una cosa que debemos tener en cuenta es que si especificamos un lugar de construcción, los ficheros permanecerán ahí después del proceso hasta que los borremos.

Otra cosa: Las opciones 'i' y 'u' no son utilizables al mismo tiempo.

Por último, debemos tener en cuenta que si no especificamos parámetros de destino y estamos corriendo TRK desde CD, la nueva iso será movida al directorio temp donde se encuentre el fichero pagefile.sys, que habitualmente será: C:\temp

Por cierto, puesto que en trk tan sólo se incluye el antivirus ClamAV, la primera actualización será más lenta, ya que trk tendrá que descargar los otros antivirus y firmas. El resto de las actualizaciones serán más rápidas, ya que tan sólo habrá que actualizar los ficheros de firmas de virus.

lunes, 6 de octubre de 2008

Trinity Rescue Kit - Viruscan: Detección y limpieza de virus

Como decía en el post anterior, vamos ir viendo poco a poco cómo usar Trinity Rescue Kit (TRK).

En este primer artículo, veremos cómo emplear este kit de rescate para detectar y limpiar virus en un sistema Windows. Para ello, vamos a usar el script viruscan.

Virusscan es un script incluido en en Trinity Rescue Kit que esconde 4 diferentes scanners de virus en uno; cinco en la versión 3.3 de TRK. De todos éstos antivirus, tan sólo uno se encuentra incluido en el CD de TRK: ClamAv. El resto son descargados desde su sitio web al usarlos. Así que, es importante tener una conexión a internet más o menos rápida para poder descargar las últimas firmas de virus.

Los motores de antivirus utilizados en TRK son los siguientes:

- Clamav.
Es el único antivirus GPL incluido en TRK. Se actualiza frecuentemente y reconoce una amplia cantidad de virus y gusanos. Se usa mucho en servidores de correo para bloquear mensajes infectados. Puede poner en cuarentena ficheros, pero no desinfectarlos.
Podemos actualizarlo manualmente si colocamos el último fichero daily.cvd en el directorio trk3/clamdb de TRK.

Los pros de Clamav son:
  • Es muy rápido en nuevas epidemias de virus.
  • Se encuentra incluido en TRK.
  • Tiene licencia GPL, con lo que es libre para todo el mundo.
Los contras:
  • Es lengo y hace un uso intensivo de memoria y CPU.
  • De todos los scanner incluidos en TRK, es el que menos cantidad de virus detecta.
  • No desinfecta ficheros. Lo que podemos hacer es poner en cuarentena los ficheros infectados en un archivo tar.gz en /TRK-INFECTED/.

-F-prot.
Este antivirus y los demás que siguen, no están incluidos en TRK, pero son descargados desde internet tan pronto como los ejecutamos. Luego, desaparecen después de un reinicio de TRK.
Si queremos que estén disponibles después de un reinicio, tenemos que ejecutar la herramienta updatetrk.

Los pros de F-prot son:
  • Descarga ligera.
  • Bastante rápido. Bajo uso de cpu.
  • Buen método de desinfección.
Los contras:
  • No lo detecta todo.
  • Su sitio web falla algunas veces y la descarga de f-prot es abortada.

-Grisoft AVG.
Es el más rápido del grupo y el que más virus detecta. Además, también detecta cierto malware, adware y spyware, aunque no los desinfecta. Para ello, probablemente necesitaremos una herramienta para spyware.

Pros de AVG:
  • Entre Clamav, F-prot, Bitdefender, AVG es el qe más virus detecta de los 4 antivirus.
  • También detecta algún malware.
  • Es rápido.
Contras de AVG:
  • La descarga es pesada. Y requiere al menos 256Mb de RAM o más, ya que los antivirus son descargados en ramdisk.
  • Hace un uso intensivo de CPU.
  • Las versiones y el sitio web cambian frecuentemente lo que puede provocar que el fichero de descarga no se encuentre disponible

-BitDefender Scanner.
Dispone de una buena media entre tamaño, carga de cpu/memoria y detección de virus. Puede detectar muchos tipos diferentes de malware. Puede detectar más malware que los tres anteriores. El autor de TRK recomienda scannear con este antivirus después de haber usado otro.
BitDefender propone usar la desinfección como primera acción y el borrado como segunda.

Pros de BitDefender:
  • Detecta bastantes virus.
  • Es bastante rápido.
  • Detecta más malware.
Contras:
  • Algunas veces no detecta los virus más comunes.
  • Proceso de actualización lento.
- Vexira (5º antivirus añadido).
Este es el antivirus que se ha añadido en la versión 3.3 de TRK.

Veamos cómo usar Viruscan:

Para usar detectar y limpiar virus, arrancamos nuestro ordenador desde el TRK. Una vez arrancado, veremos el prompt del sistema. Ahí será donde introduciremos el comando que nos permitirá escanearlo.

Si queremos consultar la ayuda de viruscan, tecleamos 'virusscan -h' en la línea de comandos:
# viruscan -h

Esta ayuda es auto-explicatoria y nos muestra un ejemplo de cómo usar el script.

Modo de uso: virusscan -a {clam,avg,fprot,bde,va} -c -g -n -d {DESTINO}

Donde:
  • -a : Este parámetro nos permite elegir el antivirus que queremos usar. Si queremos utilizar clamav, especificaremos: -a clam. Si queremos usar el antivirus f-prot, especificaremos: -a fprot. Si queremos usar AVG, especificaremos: -a avg. Si queremos usar BitDefender, especificaremos: -a bde y si queremos usar Vexira, especificaremos: -a va. Si omitimos el parámetro -a, se usará el antivirus ClamAv por defecto.
  • -c: Indica que se van a usar extensiones comunes (esta opción es para incrementar un poco la velocidad de ClamAv)
  • -g: Sólo descarga. Esta opción indica que qeremos descargar el antivirus y las actualizaciones, pero no queremos escanear buscando virus. Esta opción está pensada para usarse con updatetrk.
  • -d: Directorio a escanear. Si no se especifica ningún destino, viruscan escaneará todos los sistemas de ficheros locales que pueda encontrar. Podemos especificar múltiples destinos, separándolos por comas (sin espacios detrás).
  • -n: No actualizar. No busca nuevas firmas de antivirus.
  • -h: Nos muestra la ayuda.
Algunos ejemplos de uso:

# virusscan -a avg -d /mnt
El comando anterior descarga y actualiza el antivirus AVG y escanea /mnt.

# viruscan -a va -g
Descargamos el antivirus Vexira y sus actualizaciones, pero no escaneamos ningún directorio.

# viruscan -a fprot -d /hda1/Windows,/hda1/Archivos\ de\ programa
Descargamos, actualizamos el antivirus F-prot y escaneamos los directorios /hda1/Windows y /hda1/Archivos\ de\ programa.

# viruscan -a bde -n -d /hda1/Mis\ documentos
Utilizamos el antivirus BitDefender, sin descargar sus actualizaciones.

domingo, 5 de octubre de 2008

Trinity Rescue Kit: Un kit de reparación de sistemas Windows

Trinity Rescue Kit (TRK) es una distribución live de Linux que corre desde medios removibles como un CD, usb, o vía PXE y nos permite reparar o chequear y limpiar de virus un sistema Windows. Además, detecta el hardware del equipo en el arraquen y automatiza tantas tareas de configuración como sea posible.

TRK, como todo live-cd, corre directamente en memoria RAM,lo que significa que no se harán cambios en el equipo que estamos reparando hasta que no lo indiquemos.
Otra ventaja que nos ofrece TRK es que al arrancar el equipo directamente desde el Trinity Rescue Disk, nos garantiza que no hay ningún virus activo en nuestro ordenador.

Las herramientas más importantes de Trinity Rescue Kit son:
  • Viruscan: Una herramienta para la eliminación de virus que puede utilizar hasta 4 motores de antivirus: BitDefender Scanner, Grisoft AVG, F-prot y Clamav. En la versión 3.3 se ha añadido un nuevo motor de antivirus: Vexira. Esta herramienta nos permite además actualizar las firmas de virus automáticamente, sin tener que hacer nada.
  • Winpass: Una herramienta para borrar contraseñas de Windows.
  • Monta todos los sistemas de ficheros y puede escribir en NTFS gracias a ntfs-3g.
  • Clona discos independientemente del sistema operativo a través de la red. En la versión 3.2 se usa CloneXP. A partir de la versión 3.3 se sustituye la herramienta de clonación por Mass Clone, que permite crear imágenes y distribuirlas vía multicast a través de la red.
  • Incluye herramientas de recuperación de datos como Ntfsundeleteall que permite recuperar datos en particiones NTFS.
  • Dispone de una herramienta que nos permite compartir nuestras unidades como si el equipo fuera un servidor de ficheros.
  • Tiene 2 herramientas para la detección de rootkit.
Para más información, ver la web del proyecto:
http://trinityhome.org

Ya veremos cómo usar este kit de rescate en otros artículos.

Inicio de sesión en LinEx Colegios

Ayer me preguntaban cómo era posible que en LinEx Colegios se iniciara sesión sin tener que introducir contraseña con cualquiera de los tres usuarios que aparecen en pantalla de inicio, incluso habiendo puesto una contraseña en uno de los usuarios.

Pues bien, en este artículo no voy a entrar en detalles de lo que son los módulos pam, ni de cómo cambiar la autentificación en un sistema linux. Tan sólo voy a indicar dónde está configurado este tipo de acceso.

En LinEx Colegios aparecen tres usuarios en la pantalla de bienvenida de gnome: infantil, ciclo1y2 y ciclo3 a los que se accede sin introducir contraseña.

En el fichero /etc/pam.d/gdm se especifican los módulos y las categorías que hay que utilizar a la hora de autenticar a un usuario. Si nos fijamos en este fichero, veremos que se indica un fichero en el que están los usuarios que tienen acceso sin introducir contraseña:
/etc/X11/gdm-colegios/nopassusers

/etc/pam.d/gdm
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
auth sufficient pam_listfile.so item=user sense=allow file=/etc/X11/gdm-colegios/nopassusers onerr=fail
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
@include common-password
session required pam_devperm.so

Si abrimos el fichero /etc/X11/gdm-colegios/nopassusers veremos que se encuentran listados los usuarios infantil, ciclo1y2 y ciclo3.

Si queremos poder acceder al sistema sin contraseña con cualquier otro usuario creado, lo añadimos al fichero y ya está.

viernes, 3 de octubre de 2008

Instalar plugin de flash en Firefox

Después de actualizar Firefox a la versión 3, naturalmente, no tenemos el plugin de flash. Así que, lo descargamos desde el centro de descargas de Adobe:

http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&Lang=Spanish

Lo instalamos como root para que esté disponible para todos los usuarios de la máquina.

La versión para Linux viene comprimida en un fichero .tar.gz, así que lo primero que tenemos que hacer es descomprimirlo:

# tar xfvz install_flash_player_9_linux.tar.gz

La última versión a día de hoy es la 9.

Al descomprimirlo, se nos creará una carpeta llamada install_flash_player_9_linux. Entramos en ella:

# cd install_flash_player_9_linux/

Y ejecutamos el script de instalación:

# ./flashplayer-installer

Lo único que nos pedirá es que introduzcamos donde se encuentra instalado mozilla. Como nuestro firefox está instalado en /usr/lib/firefox, lo especificamos y pulsamos "y" para proceder con la instalación. Hay que escribir la ruta donde se encuentra instalado.

Al finalizar, nos mostrará un mensaje informándonos de que la instalación ha sido realizada:

Installation complete.

Instalar Firefox 3

Instalar Firefox 3 es muy sencillo. Tan sólo tenemos que descargarlo desde aquí y descomprimirlo:

http://www.mozilla-europe.org/es/firefox/

Una vez descargado, lo descomprimimos:

# tar xfvj firefox-3.0.3.tar.bz2

Se nos creará una carpeta llamada firefox.

Por si tenemos algún problema con la nueva versión, renombramos la carpeta de firefox que tenemos actualmente instalado.

# mv /usr/lib/firefox /usr/lib/firefox.bak

De este modo, si la nueva versión nos da algún problema, podemos borrar la nueva y volver a renombrar la antigua.

Por defecto, en las últimas versiones firefox se encuentra en /usr/lib/firefox. Así que, copiamos la carpeta firefox a /usr/lib y listo:

# cp -r firefox /usr/lib/

Ya tenemos firefox 3 instalado.

Scribblies Kids: Tema de Firefox

Me comentaba un amiguete que había actualizado Firefox a la versión 3 en LinEx Colegios y ya no le aparecían los botones "con aspecto infantil" de antes. Eso es porque al instalar la nueva versión de Firefox, se instala un tema por defecto.

El tema usado en el Firefox de LinEx Colegios se llama Scribblies Kids y se puede descargar en el siguiente enlace:

https://addons.mozilla.org/es-ES/firefox/addon/275

Instalar paquetes en un ordenador sin conexión a internet

Bueno, pues ahora que ya hemos visto cómo mantener actualizados los índices de los repositorios de un ordenador que no tiene conexión a internet, vamos a ver cómo instalar paquetes, una vez actualizados los repositorios, claro.

Para empezar, abrimos la ventana ejecutar aplicación, pulsando Alt+F2:

En el cuadro de texto escribimos: gksu synaptic


Pulsamos el botón ejecutar y nos pedirá nuestra contraseña.


Introducimos la contraseña en el cuadro, pulsamos el botón Aceptar y se nos abrirá el gestor de paquetes synaptic:

Marcamos todos los paquetes que queremos instalar... Una vez seleccionados hacemos clic en el Menú Archivo y se nos abrirá un submenú con las siguientes opciones:



Hacemos clic en la opción "Generar un script de descarga de paquetes". Este script contendrá una lista de comandos wget que descargará los paquetes seleccionados junto con sus dependencias. Al hacer clic sobre esta opción se nos muestra un cuadro de diálogo donde escribimos el nombre del script generado:

Yo le he puesto el nombre descarga_paquetes.sh
Naturalmente, podéis llamarlo como queráis.

Una vez que tenemos el script, lo llevamos a la máquina linux (por ejemplo, usando un pendrive) en la que vamos a descargar los paquetes y lo ejecutamos.

$ sh descarga_paquetes.sh

El script descargará todos los paquetes. Luego los llevamos al ordenador que no tiene acceso a internet.

Abrimos synaptic y hacemos clic en el menú Archivo. Se nos abrirá un menú como el siguiente:
Hacemos clic sobre la opción "Añadir paquetes descargados". Se nos abrirá una ventana en la que elegimos la carpeta donde tenemos los paquetes que descargamos en la máquina con acceso a internet.

Antes de instalar, synaptic nos pedirá confirmación por si nos hemos arrepentido y ya no queremos instalar los paquetes. Pulsamos Aplicar y los paquetes comenzar a instalarse.

El script de descarga de paquetes podemos modificarlo para descargar los paquetes en una máquina windows, borrando la línea que contiene: #!/bin/sh, y todas las apariciones de wget -c que hay en cada línea. Nos quedaremos tan sólo con la lista de enlaces a cada uno de los paquetes, que copiaremos y pegaremos en la ventana de un gestor de descargas.

jueves, 2 de octubre de 2008

Actualizar repositorios de una máquina sin acceso a internet

Hay varias formas de instalar y actualizar paquetes en un ordenador sin internet. Una de ellas es usar synaptic, marcando los paquetes que deseamos instalar o actualizar y después generando un script que llevamos a otro ordenador con internet para descargar los paquetes que luego instalaremos en nuestro equipo sin internet (Ya veremos cómo hacer ésto en otro post).

Lo que no es sencillo es mantener actualizados los repositorios del ordenador sin conexión a internet para poder descargar software reciente.

A continuación pego un enlace al fichero que contiene los scripts que he usado en ocasiones para tal fin:
http://dl.dropbox.com/u/5004198/actualizarepositorios.tar.gz 



¿Cómo usarlo?
Primero, descargarmos el fichero actualizarepositorios.tar.gz haciendo clic sobre el enlace anterior.
Una vez descargado, lo copiamos a un pendrive (es lo más cómodo) y lo descomprimimos allí:

# tar xfvz actualizarepositorios.tar.gz

Se nos creará una carpeta llamada actualiza_repositorios con dos scripts:
  • exporta_repositorios.sh. Lo usamos en la máquina con acceso a internet.
  • importa_repositorios.sh. Lo usamos en la máquina sin acceso a internet.
Nos situamos en el directorio donde se encuentra montado en pendrive.

Después copiamos el fichero /etc/apt/sources.list de la máquina que no tiene internet a la carpeta actualiza_repositorios. Ésto es importante, porque el script exporta_repositorios busca el fichero sources.list en el mismo directorio donde se encuentra el script.

# cp /etc/apt/sources.list actualiza_repositorios/

Desmontamos el pendrive en el ordenador que no tiene acceso internet y nos lo llevamos al equipo que sí tiene.

Ahora montamos el pendrive en el ordenador con conexión a internet, nos situamos en el directorio actualiza_repositorios y ejecutamos el script exporta_repositorios.sh:

# sh exporta_repositorios.sh

Cuando el script termine, encontraremos en el directorio actualiza_repositorios un fichero llamadorepositoriosact.tar.gz que contiene los índices de los repositorios actualizados.

El siguiente paso será desmontar el pendrive, y montarlo en el equipo que no tiene conexión a internet.

Una vez montado el pendrive en el ordenador sin conexión a internet, nos situamos en el directorio actualiza_repositorios y ejecutamos el script importa_repositorios.sh:

# sh importa_repositorios.sh

Este script copiará los índices de los repositorios actualizados al ordenador sin conexión a internet.

A continuación pego el texto de ambos scripts por si hubiera algún problema para descargarlos:

exporta_repositorios.sh

#!/bin/bash
#
# exporta_repositorios.sh
#
# Ejecutar este script en la máquina con internet.
# Poner el fichero sources.list del ordenador sin internet en el mismo lugar
# que este script.
# El directorio con los índices quedará en la carpeta listas, en el mismo
# lugar que este script.

directorioscript=`pwd`

# Hacemos copia de seguridad de los repositorios de la máquina
mv /etc/apt/sources.list /etc/apt/sources.list.original

if [ -d /var/lib/apt/lists.original ]; then
rm -r /var/lib/apt/lists.original
fi
mv /var/lib/apt/lists /var/lib/apt/lists.original

# Creamos los directorios necesarios para almacenar los índices
mkdir /var/lib/apt/lists
mkdir /var/lib/apt/lists/partial

# Copiamos la lista de repositorios de nuestro ordenador sin internet
if [ -f sources.list ]; then
cp sources.list /etc/apt/
else
echo "Fichero sources.list no encontrado en $directorioscript/"
echo "Recuerde que debe copiar el fichero sources.list de la máquina sin internet en el directorio actualiza_repositorios"
exit
fi

# Actualizamos las listas de paquetes para generar los índices
apt-get update && cd /var/lib/apt/ && tar cvvfz repositoriosact.tar.gz lists && mv repositoriosact.tar.gz $directorioscript/

# Volvemos a dejar los repositorios como estaban en la máquina con acceso a internet
mv /etc/apt/sources.list.original /etc/apt/sources.list
mv /var/lib/apt/lists.original /var/lib/apt/lists
echo "Proceso concluido."
echo "Compruebe que en el directorio $directorioscript/ se encuentra el fichero repositoriosact.tar.gz"


importa_repositorios.sh

#!/bin/bash
#
# importa_repositorios.sh
#
# Ejecutar este script en la máquina sin internet.
# El fichero con los índices estará en la carpeta listas, en el mismo
# lugar que este script y el script exporta_repositorios.sh

# Restauramos los repositorios en la máquina sin internet

if [ ! -f repositoriosact.tar.gz ]; then
echo "El fichero con los índices de los repositorios no existe en: " `pwd`
echo "Asegúrese de ejecutar el script exporta_repositorios.sh en la máquina con acceso a internet."
exit
fi

cp repositoriosact.tar.gz /var/lib/apt/
cd /var/lib/apt/
tar xfvz repositoriosact.tar.gz
echo "Repositorios actualizados"

miércoles, 1 de octubre de 2008

Desinstalación de software con synaptic en Linux

Siguiendo en la línea de demostrar que Linux es sencillo para usuarios finales, vamos a ver cómo desinstalar software.

Primero, pulsamos Alt+F2 y se nos abrirá una ventana para ejecutar una aplicación. En el cuadro de texto escribimos: gksu synaptic
Una cosa: Podríamos ejecutar synaptic desde el menú de aplicaciones. En el ejemplo proponemos hacerlo pulsando Alt+F2 para asegurarnos de que ejecutamos synaptic con gksu. Si tenemos ubuntu, la entrada del menú tiene como lanzador gksu synaptic.


Pulsamos el botón ejecutar y nos pedirá nuestra contraseña.


Introducimos la contraseña en el cuadro, pulsamos el botón Aceptar y se nos abrirá el gestor de paquetes synaptic:


Vamos a desinstalar, por ejemplo, el paquete kstars. Así que hacemos clic con el botón derecho del ratón sobre el nombre del paquete:
Nos aparecerá un menú de contexto con las siguientes opciones:
Tenemos dos opciones:
  • Marcar para eliminar, si queremos eliminar sólo el paquete.
  • Marcar para eliminar completamente, si además de eliminar el paquete, queremos eliminar sus archivos de configuración.
¿Y qué opción utilizamos? Pues la que más nos interese.
Si no vamos a volver a instalar el paquete, podemos marcarlo para eliminar completamente.
En cambio, si tenemos un paquete que requiere una configuración más o menos compleja, podemos eliminar sólo el paquete, por si volvemos a instalarlo.

Como he decidido borrar el paquete y y no me interesa mantener los ficheros de configuración, en este ejemplo, voy a elegir la opción "Marcar para eliminar completamente".
Una vez marcado el paquete, hacemos clic en el botón Aplicar. Aún así, synaptic nos pedirá confirmación, por si nos hemos arrepentido y ya no queremos instalar el paquete:

Pulsamos en el boton Aplicar y comenzará el proceso de desinstalación:


En cuanto termine de instalar el paquete, synaptic volverá a la pantalla de inicio. Como ya hemos terminado de desinstalar lo que queríamos, la cerramos y listo.

De este modo tan sencillo podemos desinstalar todos los paquetes que queramos.