Algo de Linux: 2011

martes, 20 de diciembre de 2011

Crear un CD-ROM arrancable de GRUB con floppies de herramientas

A veces necesitamos un CD de arranque para reparar GRUB. Bien, pues esto es algo muy sencillo de hacer si tenemos instalado GRUB2 en nuestra máquina.

Para crear una iso de arranque en Debian Lenny, simplemente ejecutamos:

$ grub-mkrescue nombredearchivo.iso

Si en lugar de Lenny tenemos Squeeze:

$ grub-mkrescue -o nombredearchivo.iso

Y ya está. Con ésto crearemos una imagen iso que podemos quemar en un CD para rescatar grub en caso de fallo.

Para probar que funciona, podemos usar qemu:

$ qemu -cdrom nombredearchivo.iso

Ahora imaginemos que necesitamos actualizar la bios de un equipo antiguo, y que la única forma de actualización de la bios de este equipo es mediante disquete. Podemos crear una imagen del disquete de actualización de la bios en un archivo (por ejemplo: flashbiosnec.img) y añadirlo a la iso del CD-ROM que acabamos de crear.

Veamos cómo añadir imágenes de floppies a nuestra iso:

Primero.- Creamos un directorio de trabajo en nuestro home:

$ mkdir -p iso/boot/grub

Segundo.- Vamos a usar memdisk para cargar las imágenes de floppy. Por tanto, tendremos que copiar memdisk al directorio iso/ de nuestro home. Memdisk forma parte de syslinux, así que, si no tenemos instalado syslinux, primero lo instalamos:

$ apt-get install syslinux

Y luego copiamos memdisk al directorio iso/:

$ cp /usr/lib/syslinux/memdisk iso/

Tercero.- Copiamos nuestra imagen de floppy (flashbiosnec.img) al directorio iso/:

$ cp flashbiosnec.img iso/

Y creamos un fichero grub.cfg en iso/boot/grub/:

$ nano iso/boot/grub/grub.cfg

Con el siguiente contenido:

set menu_color_normal=green/black
set menu_color_highlight=red/white

menuentry "Actualizar BIOS NEC PowerMate VL4" {
linux /memdisk
initrd /flashbiosnec.img
}

  • La entrada set menu_color_normal=green/black define el color de texto y fondo de la entrada.
  • La entrada set menu_color_highlight=red/white define el color de texto y fondo cuando la entrada se encuentra seleccionadada.
La opción de menú que permite arrancar la imagen de floppy es:

menuentry "Actualizar BIOS NEC PowerMate VL4" {
  linux /memdisk
  initrd /flashbiosnec.img
}


donde:


menuentry "Actualizar BIOS NEC PowerMate VL4" {
}


Define la entrada con el texto que se va a mostrar en el menú.

Y las líneas:


linux /memdisk
initrd /flashbiosnec.img


Hacen que se cargue la imagen del floppy flashbiosnec.img mediante memdisk.

Una vez hecho ésto, añadimos todo lo que hay en iso/ a la imagen nombredearchivo.iso:

Si estamos usando Debian Lenny:

$ grub-mkrescue --overlay= iso/ nombredearchivo.iso

Y si estamos usando Squeeze:

$ grub-mkrescue -o nombredearchivo.iso iso/

Del mismo modo, podemos añadir más floppies.

jueves, 15 de diciembre de 2011

Cambiar passwords en modo "no interactivo"

A veces necesitamos cambiar password en modo batch en un script pidiendo que el usuario introduzca por teclado el password que quiere asignar. Ésto no se puede hacer usando el comando passwd pero sí mediante chpasswd.

Si quiero cambiar la password de un usuario en modo batch, no tengo más que ejecutar:

echo "USUARIO:PASSWORD" | chpasswd

Ejemplo:

# echo "root:ultrasecreta" | chpasswd

No funciona autofs5 + autofs5-ldap en Squeeze

Como de momento no he conseguido que funcione autofs5 + autofs5-ldap en Debian Squeeze, para no perder más tiempo, he optado por establecer la configuración de autofs en el cliente de la siguiente manera:

Añadiendo la siguiente línea al fichero /etc/auto.master:
/home /etc/auto.home

Como puede verse en el fichero /etc/auto.home:

#
# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $
#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#/misc /etc/auto.misc --timeout=60
#/smb /etc/auto.smb
#/misc /etc/auto.misc
#/net /etc/auto.net

/home /etc/auto.home


Y creando el fichero /etc/auto.home con las instrucciones de montaje:

* -fstype=nfs,rw,hard,intr,nodev,nosuid,nolock,rsize=8192 servidor:/home/&

Quitar error de locales en Squeeze

He visto el siguiente problema con los locales en los equipos en los que he instalado squeeze:

root@recursos:~# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory

Para que no aparezca, añadimos las siguientes líneas al fichero /etc/profile:

LC_ALL=es_ES
export LC_ALL
LANG=es_ES.UTF-8@euro
export LANG


Y cargamos la configuración:

# source /etc/profile

Black screen al hacer logout con cualquier usuario en Squeeze

Estaba terminando de preparar una nueva imagen para los workstation de mi centro y después de multitud de problemas, como por ejemplo, que el autofs no funciona con ldap debido a un bug, me he tropezado con uno más: Si un usuario cierra su sesión en lugar de apagar el sistema, se produce un "black screen".

Por lo que he podido determinar, haciendo pruebas y buscando información, éste fallo se produce con tarjetas Intel y posiblemente NVidia.

La tarjeta integrada de la mayoría de los equipos de mi centro es una Intel 845:

# lspci |grep -i vga 00:02.0

VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 01)


Para resolverlo, he añadido los repositorios squeeze-backports a la máquina en pruebas:

# echo "deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free" > /etc/apt/sources.list.d/squeeze-backports.list

Y he instalado los paquetes xserver-xorg-video-intel, libdrm-intel1 y xorg de backports:

apt-get -t squeeze-backports install xserver-xorg-video-intel libdrm-intel1 xorg

miércoles, 14 de diciembre de 2011

Scripts de inicio interactivos en Debian Squeeze

A veces necesitamos un script que sólo se ejecute una vez y que nos permita configurar una máquina en el primer inicio de modo interactivo. Probé a utilizar uno de los que tenemos en los portátiles y vi que no funcionaba en una Debian Squeeze actualizada. Así que tuve que adaptarlo de la siguiente manera:

Copié el script a /etc/init.d:

# cp primer-arranque /etc/init.d

Después le añadí las cabeceras que debe tener todo script de inicio para cumplir con la LSB.

### BEGIN INIT INFO
# Provides: primer-arranque
# Required-Start: console-setup
# Required-Stop:
# Default-Start: S
# Default-Stop:
# X-Interactive: true
# Short-Description: Configuración del equipo en el primer arranque
# Description: primer-arranque hace una configuración básica
# del equipo la primera vez que se inicia.
### END INIT INFO


Como se puede ver en la siguiente línea:

# Default-Start: S

Este script se ejecuta en /etc/rcS.d/

Para que se ejecute después del script console-setup, defino:


# Required-Start: console-setup

Y para que el script pueda actuar de forma interactiva con el usuario, añado la siguiente línea:


# X-Interactive: true


Una vez hecho ésto, ejecuto insserv para que se cree el enlace correspondiente que lo lance en /etc/rcS.d/

# insserv /etc/init.d/primer-arranque

Comprobé que se había creado el enlace: /etc/rcS.d/S22primer-arranque

Así que modifiqué el script para que cuando se ejecutase correctamente, borrara el enlace y no volviera a ejecutarse más, añadiéndole la siguiente línea:

unlink /etc/rcS.d/S22primer-arranque

A continuación podemos ver cómo ha quedado el script una vez terminado de retocar:

#!/bin/sh
#
# Configuración del equipo en el primer arranque.

### BEGIN INIT INFO
# Provides: primer-arranque
# Required-Start: console-setup
# Required-Stop:
# Default-Start: S
# Default-Stop:
# X-Interactive: true
# Short-Description: Configuración del equipo en el primer arranque
# Description: primer-arranque hace una configuración básica
# del equipo la primera vez que se inicia.
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/lsb/init-functions

rm -f /etc/udev/rules.d/70-persistent-net.rules

DIALOG=${DIALOG=dialog}
$DIALOG --title "Preparando el equipo workstation" --clear \
--yesno "Si se va a terminar de configurar el equipo como workstation, conteste Sí (Yes) a esta pregunta. En este caso se le preguntará por el nombre que se le va a poner. En el caso de que este equipo no se vaya a configurar en este momento, elija NO" 18 70

case $? in
0)
tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15
$DIALOG --title "Nombre del workstation" --clear \
--inputbox "Introduzca el nombre de este equipo:" 10 51 2> $tempfile

retval=$?

case $retval in
0)
NOMBRE=`cat $tempfile`
;;
esac

if [ "$NOMBRE" ] ; then
echo "
127.0.0.1 localhost
127.0.1.1 $NOMBRE

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters" > /etc/hosts

cp -f /root/interfaces /etc/network/
cp -f /root/grub /etc/default/
echo "$NOMBRE" > /etc/hostname
hostname -F /etc/hostname
rm -rf /var/lib/puppet/ssl
mkswap /dev/sda5 2>/dev/null
swapon /dev/sda5 2>/dev/null
/etc/init.d/puppet restart
/etc/cron.weekly/ocsinventory-agent
update-grub
cp -f /root/rcS /etc/default/
unlink /etc/rcS.d/S22primer-arranque

else
$DIALOG --title "ERROR" --clear \
--msgbox "Falta el nombre de este equipo y es necesario para su configuración Puede volver a intentar la configuración reiniciando este ordenador." 12 46

case $? in
0) ;;
esac
fi
;;
esac

martes, 6 de diciembre de 2011

Instalar LibreOffice en Debian Squeeze

Podemos instalar fácilmente LibreOffice en Debian Squeeze desde los repositorios Backports.

Si no los hemos utilizado aún, añadimos sus fuentes a /etc/apt/sources.list

deb http://backports.debian.org/debian-backports squeeze-backports main

O creamos un archivo en /etc/apt/sources.list.d/ , como por ejemplo /etc/apt/sources.list.d/squeeze-backports.list y le añadimos las fuentes:

deb http://backports.debian.org/debian-backports squeeze-backports main

Una vez hecho ésto, actualizamos índices:

# apt-get update

E instalamos desde backports:

# apt-get -t squeeze-backports install libreoffice libreoffice-gnome libreoffice-l10n-es libreoffice-help-es libreoffice-pdfimport libreoffice-presentation-minimizer libreoffice-presenter-console

Con ello instalamos:
  • libreoffice: La suite LibreOffice completa.
  • libreoffice-gnome: Integración de LibreOffice en gnome.
  • libreoffice-l10n-es: Ponemos LibreOffice en español.
  • libreoffice-help-es: Instalamos la ayuda en español.
  • libreoffice-pdfimport: Extensión que nos permite importar y modificar documentos pdf mediante LibreOffice Draw.
  • libreoffice-presentation-minimizer: Extensión que nos permite reducir el tamaño de fichero que ocupan de nuestras presentaciones.
  • libreoffice-presenter-console: Extensión que nos proporciona un control ampliado en nuestras presentaciones, como por ejemplo, permitirnos ver la siguiente diapositiva o nuestras anotaciones mientras que la audiencia sólo ve la diapositiva actual.

lunes, 21 de noviembre de 2011

slappasswd: Crear passwords para ldap

slappasswd es una herramienta muy útil que nos permite:
  • Generar passwords utilizables en los atributos userPassword de nuestros usuarios almacenados en ldap. 
  • O en la directiva de configuración rootpwd, que sirve para definir una password de root para ldap en el archivo de configuración del servidor ldap.
Si ejecutamos, por ejemplo:

# slappasswd -h {SSHA}

El comando nos pedirá que introduzcamos la password que vamos a asignar al usuario y creará el hash SSHA.


También podemos especificar la password en el mismo comando:

# slappasswd -s password -h {SSHA}

De este modo, si ejecuto:

# slappasswd -s miclave -h {SSHA}

Obtendré un hash creado mediante SSHA, como por ejemplo:

{SSHA}AMJYmpBLcB1hrR01Sg+95OkFV8sLcZE6

Con el parámetro "-h {SSHA}" estamos indicando que se cree un hash mediante el esquema SSH.

Otras posibilidades son:
{CRYPT}, {MD5}, {SMD5}, {SHA}

La opción por defecto es {SSHA}.

sábado, 15 de octubre de 2011

Eliminar la password de la bios en Acer Aspire ONE NAV50

Este netbook tiene una bios InsydeH2O que guarda la password de la bios encriptada. Para borrarla tenemos dos opciones:
  • Modo hardware.
  • Modo software.
Para borrar la password de la bios de manera física, desatornillamos la tapa de la memoria RAM y usamos un destornillador para puentear los dos contactos del jumper U72. Ver siguiente imagen:


Una vez hecho ésto, podemos comprobar cómo podemos acceder a la BIOS sin password. Cerramos la tapa de nuevo y listo.

Para borrar la password de la bios mediante software, Acer nos proporciona una utilidad dos (clnpwd.exe), que podemos copiar en un disco de arranque FreeDOS usb, por ejemplo y ejecutar desde allí.

Podríamos preparar un pendrive de arranque FreeDOS con UNetbootin, montarlo para añadirle la utilidad clnpwd.exe. Luego arrancaríamos el equipo con este pendrive y lo usaríamos para borrar la password.



Si no tenemos puesto como dispositivo de arranque ningún otro dispositivo a parte del disco duro, otra opción sería preparar la imagen del disco de arranque FreeDOS, añadirle la herramienta al directorio /boot de la máquina y arrancarlo desde grub.

jueves, 13 de octubre de 2011

Crear un disco de arranque freedos rápidamente

Puesto que las máquinas de hoy en día ya no tienen disqueteras, a veces necesitamos un disco de arranque freedos en un pendrive, por ejemplo, para actualizar la BIOS. Una forma rápida de crearlo es haciendo uso de UNetbootin, una aplicación multiplataforma que permite la creación de USB arrancables  de diferentes distribuciones, además de Freedos.

Para crear un usb arrancable con FreeDOS, introduciremos el pendrive que queremos hacer arrancable y abriremos la aplicación UNetbootin.
 
Después, seleccionamos la opción "Distribución", tal y como se muestra en la imagen anterior. Una vez seleccionada, hacemos clic en el desplegable de al lado y elegimos "FreeDOS". Por último seleccionamos la unidad USB que vamos a hacer arrancable con FreeDOS y hacemos clic en el botón "Aceptar".

Y listo. UNetbootin descargará FreeDOS y lo montará en el pendrive, haciéndolo arrancable.

viernes, 7 de octubre de 2011

Flashear la BIOS de equipos NEC PowerMate VL4 vía PXE

PROBLEMA A RESOLVER:
Nuestros terminales ligeros son NEC PowerMate VL4 sin disquetera ni CD-ROM. El problema que tenemos actualmente es que, tras unos años en funcionamiento, se están agotando las pilas. Como consecuencia, se borran  los ajustes de la CMOS y los equipos dejan de arrancar porque la opción de arranque por defecto es el Floppy.

SOLUCIÓN:
Cambiar los ajustes por defecto de la BIOS para que el primer dispositivo de arranque sea "On Board LAN", es decir,  la tarjeta de red integrada.
Lo interesante de esta actualización es que fijaremos los ajustes por defecto en la ROM de la BIOS y no en la CMOS. Así, aunque se agoten las pilas de los equipos, las opciones que deseamos tener, seguirán establecidas y no se perderan, como sucedería si estuvieran almacenadas en la CMOS y se agotara la pila.

AJUSTES FIJADOS COMO PREDETERMINADOS:
Éstos son los ajustes que he establecido por defecto en la ROM modificada:
  • Fijado como primer dispositivo de arranque "On Board LAN", es decir, la tarjeta de red integrada y activado como "Show only" para que no pueda ser modificado por el usuario.
  • Desactivado segundo y tercer dispositivo de arranque para que el usuario no pueda cambiarlo.
  • Desactivado el arranque desde otros dispositivos.
  • Desactivadas opciones de establecer passwords de setup y de usuario. Así los usuarios no van a poder cambiarlos en caso de reseteo de los valores de la CMOS.

HERRAMIENTAS:
Como nuestra bios es AWARD, para flashearla u obtener un backup tan sólo tendríamos que copiar la herramienta AWDFLASH.EXE y la imagen de la BIOS que vamos a grabar en nuestra máquina. 
Ya que necesitaba un disquete de arranque, para flashear/obtener copia de la BIOS, he creado una imagen de un floppy con las siguientes herramientas, que me permitirá hacer algunas cosas más con la imagen de la BIOS, como por ejemplo, personalizarla:
  • awd822a.exe -> Flash loader for Award BIOS. Permite flashear/hacer backup de la BIOS.
  • modbin62.04.03.exe -> Nos permite modificar ajustes por defecto de BIOS Award.

PASOS SEGUIDOS:

Primero.- Crear un floppy disk con las herramientas mencionadas anteriormente que nos servirán para trabajar con nuestras BIOS Award.
Como comentaba al principio, nuestros terminales ligeros no disponen de disquetera ni de unidad de CDROM. Además, tampoco disponen de arranque vía USB, por tanto, nuestra mejor opción para actualizar la BIOS de los mismos es cargar una imagen de floppy mediante PXE, haciendo uso de memdisk (También se puede usar GRUB para arrancar una imagen de floppy, pero, como el sistema de terminales ligeros hace uso de PXE, vamos a aprovecharlo).
  
1.- Lo primero que necesitamos es un disquete de arranque.  
      Como se requiere un sistema operativo DOS para nuestros fines y podemos evitar usar versiones propietarias, descargamos FreeDOS, un sistema DOS compatible completamente free. Y como necesitamos espacio en nuestro floppy, descargamos la versión "OEM Bootdisk", que contiene lo justo:
  • AUTOEXEC.BAT
  • COMMAND.COM
  • CONFIG.SYS
  • KERNEL.SYS
  • README
  • sys.com

Así que descargamos la versión FreeDOS OEM Bootdisk:
# wget http://www.linuxinsight.com/files/FDOEM.144.gz
Y descomprimimos:
# gunzip FDOEM.144.gz
Obtendremos un fichero llamado FDOEM.144
      
En el siguiente enlace de Dropbox también econtraremos una imagen de un floppy de 1.44MB: http://dl.dropbox.com/u/5004198/floppies/dosdisk144.img
# wget http://dl.dropbox.com/u/5004198/floppies/dosdisk144.img
2.- Descargamos de internet las herramientas que queramos incluir en nuestro disquete. Por ejemplo:
  • awd822a.exe
  • modbin62.04.03.exe 
3.- Una vez que tenemos la imagen del disquete de arranque, lo montamos en un directorio y añadimos las herramientas.

Montamos la imagen del Floppy Bootdisk en un directorio temporal:

# mkdir /tmp/floppy
# mount -t vfat -o loop FDOEM.144 /tmp/floppy

Y le añadimos las herramientas que necesitemos:

# cp awd822a.exe /tmp/floppy/
# cp modbin62.04.03.exe /tmp/floppy/modbin6.exe
      
He renombrado modbin para que el nombre del archivo no tenga más de 8 caracteres, ya que la actualización se hace en un sistema operativo DOS.
   
También me ha parecido interesante añadir el editor de textos de freedos edit.exe, por si en algún momento tengo que editar ficheros en formato dos, como, por ejemplo el AUTOEXEC.BAT. Como en mi máquina tengo instalado dosemu, lo he copiado desde allí:
# cp /usr/lib/dosemu/freedos/bin/edit.exe /tmp/floppy/
Por último, he pensado que la imagen debería permitir elegir con qué imagen flashear la rom, así que he añadido CHOICE.COM, que permite dar opción al usuario a elegir entre varias opciones desde el autoexec.bat:
# cp choice.com /tmp/floppy/
Y listo. Ahora mi floppy contendrá lo siguiente:    
  • AUTOEXEC.BAT
  • COMMAND.COM
  • CHOICE.COM
  • edit.exe
  • MODBIN6.EXE
  • sys.com
  • awd822a.exe
  • CONFIG.SYS
  • KERNEL.SYS
  • README
4.- Desmontamos y copiamos la imagen del disquete a un lugar seguro:
# umount /tmp/floppy  
# cp FDOEM.144 /home/miusuario/Dropbox/bios/
5.- Comprobar que nuestro disquete funciona:
# qemu -fda /home/miusuario/Dropbox/bios/FDOEM.144

Segundo.- Obtener una copia de nuestra BIOS en un fichero.
Ahora que ya tenemos una imagen de un disquete autoarrancable con las herramientas necesarias, vamos a hacer un backup de la BIOS de un equipo NEC para trabajar sobre ella y hacerle los ajustes planificados. Para ello:
  
1.- Grabamos la imagen en un disquete:
# dd if=/home/miusuario/Dropbox/bios/FDOEM.144 of=/dev/fd0 bs=10k count=144
2.- Como tengo equipos NEC con disquetera, voy a usar uno de ellos para hacer un backup de la BIOS.         

Seleccionamos como primer dispositivo de arranque "Floppy" en la BIOS, introducimos el disquete en el equipo del que vamos a obtener copia de la BIOS y reiniciamos para arrancar desde el mismo.
  
Se iniciará FreeDOS y se quedará esperando en la línea de comandos:
A:\
Escribiremos el comando para hacer la copia y pulsamos Enter:
A:\ awd822a /pn /sy backup.bin

donde: /pn -> program no (no flashear la BIOS)
            /sy -> save yes (guardar un backup de la BIOS actual)
                
Cuando el proceso termine, tendremos una copia de la bios en un fichero llamado backup.bin
           
Apagamos el equipo del que hemos hecho la copia.
      
3.- Introducimos el disquete en nuestro equipo para hacer una nueva imagen del mismo, ahora que tiene, el backup.bin, además de las herramientas y creamos la imagen:
# dd if=/dev/fd0 of=/home/miusuario/Dropbox/bios/fbiosnec.img bs=10k count=144  
4.- Montamos la imagen del disquete (fbiosnec.img) en un directorio temporal:

# mount -t vfat -o loop fbiosnec.img /tmp/floppy
5.- Una vez montado, copiamos el fichero de backup a un lugar seguro para tener una copia, por ejemplo, a mi carpeta de Dropbox:
# cp /tmp/floppy/backup.bin /home/miusuario/Dropbox/bios
La primera copia (backup.bin) nos va a servir para tener un backup de la BIOS original.

La segunda copia (biosnec.bin) es la que vamos a modificar para que contenga los ajustes que queremos.       
      
6.- Aprovechando que en mi equipo tengo wine, abrimos una consola de wine en un terminal:

# cd /tmp/floppy/
# wineconsole cmd
Se nos abrirá una consola dos de wine en el directorio /tmp/floppy:      
Z:\tmp\floppy>
Como ya hemos guardado una copia de la imagen de la bios, renombramos el fichero del floppy:
Z:\tmp\floppy> ren backup.bin biosnec.bin
Y, por último, abrimos MODBIN6.EXE para realizar los ajustes que queremos hacer en la BIOS:
Z:\tmp\floppy> MODBIN6
MODBIN6 detectará todas las copias de las BIOS que haya. Como en el disquete sólo hay una (biosnec.bin), tan sólo se mostrará ésta. Pulsamos ENTER para cargarla. Se abrirá el programa y ya podremos hacer nuestros ajustes.
      
Cuando terminemos de hacer los ajustes en la copia de la BIOS, guardamos y cerramos la ventana "Wine Command Prompt".
      
7.- Al principio, usé una imagen de disquete de 1.44MB, suficiente cuando queremos almacenar una copia de la bios, pero como posteriormente pensé en incluir la imagen original de la bios, la imagen retocada, y modificar el autoxec para permitir elegir al usuario con qué imagen flashear, el disquete de 1.44MB se me quedaba pequeño. Así que opté por usar una imagen de floppy de 2.88MB, que nos deja más espacio libre en disco para añadir nuestras herramientas.

Podemos descargar la imagen del floppy desde http://dl.dropbox.com/u/5004198/floppies/dosdisk288.img:
# wget http://dl.dropbox.com/u/5004198/floppies/dosdisk288.img
Montamos la imagen de este nuevo floppy en una carpeta temporal y le copiamos el contenido del otro disquete:
# mkdir /tmp/floppy288
# mount -t vfat -o loop dosdisk288.img /tmp/floppy288
# cp /tmp/floppy/* /tmp/floppy288/
Además, copiamos la imagen de la BIOS original:
# cp /home/miusuario/Dropbox/bios/backup.bin /tmp/floppy288
8.- No olvidemos que tenemos montada la imagen del disquete fbiosnec.img en /tmp/floppy y la imagen del disquete dosdisk288.img en /tmp/floppy288 y que tenemos que desmontarlas. La desmontamos:
# umount /tmp/floppy
# umount /tmp/floppy288
9.- Editamos el autoexec.bat del floppy de actualización fbiosnec.img.
Aquí dejo una copia del que he preparado: http://dl.dropbox.com/u/5004198/floppies/autoexec.bat
# wget http://dl.dropbox.com/u/5004198/floppies/autoexec.bat
10.- Y hacemos una copia de nuestro floppy:
# cp dosdisk288.img /home/miusuario/Dropbox/bios/fbiosnec.img                         
Tercero.- Crear una imagen iso de CD autoarrancable.
Como no cuesta nada, ahora que tenemos un floppy de arranque, podemos crear también una imagen de CD autoarrancable, por si la necesitamos en algún momento.
  
* Si nuestra máquina es Debian Lenny, tenemos que usar mkisofs:
# mkisofs -o fbiosnec.iso -b fbiosnec.img fbiosnec.img
* Si nuestra máquina es Debian Squeeze:
# genisoimage -o fbiosnec.iso -b fbiosnec.img fbiosnec.img

Cuarto.- Preparar PXE para cargar la imagen de nuestro floppy disk mediante memdisk.

Bien. Ahora ya tenemos una imagen de un floppy con el que podemos flashear automáticamente la BIOS de nuestros equipos. Como ya comentamos al principio, para flashearlos nuestra mejor opción es cargar una imagen del floppy que hemos creado mediante PXE, haciendo uso de memdisk aprovechando que el sistema de terminales ligeros hace uso de PXE.
  
Las instrucciones que hacen arrancar un terminal ligero se encuentran en el fichero: /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
   
Si mostramos el contenido de éste fichero:   
# cat /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
Veremos que tan sólo contiene una línea de comentario y otra que carga la imagen de los terminales:
# Para usar nbd
DEFAULT vmlinuz ro initrd=initrd.img quiet
Así que lo retocaremos un poco para que podamos lanzar la imagen de nuestro disquete cuando queramos. Además, ya de paso, vamos a añadir la posibilidad de iniciar Plop Boot Manager, por si en algún momento necesitamos arrancar los equipos desde usb. Pero, antes, vamos a preparar el entorno:
  
1.- Creamos un directorio llamado Floppy dentro /var/lib/tftpboot/ltsp/i386 en el servidor de terminales:
# mkdir /var/lib/tftpboot/ltsp/i386/Floppy
Más que nada para ser organizados y si en algún momento, necesitamos otro disquete para otros fines, lo añadiremos aquí también.
  
2.- Copiamos la imagen del disquete para flashear la bios en /var/lib/tftpboot/ltsp/i386/Floppy/
# cp /home/miusuario/Dropbox/bios/fbiosnec.img /var/lib/tftpboot/ltsp/i386/Floppy/
3.- Copiamos memdisk a /var/lib/tftpboot/ltsp/i386/
# cp /opt/ltsp/i386/usr/lib/syslinux/memdisk /var/lib/tftpboot/ltsp/i386/
4.- Descargamos Plop Boot Manager y lo descomprimimos:
# cd /home/miusuario/Dropbox/bios/
# wget http://download.plop.at/files/bootmngr/plpbt-5.0.12.zip
# unzip plpbt-5.0.12.zip
Se creará un directorio: plpbt-5.0.12. Dentro de él encontraremos un fichero: plpbt.bin. Lo copiamos a /var/lib/tftpboot/ltsp/i386/
      
5.- Copiamos plpbt.bin a /var/lib/tftpboot/ltsp/i386/

# cp plpbt.bin /var/lib/tftpboot/ltsp/i386/
6.- Hacemos una copia de seguridad del fichero default:
# mv /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default.orig
7.- Creamos una nueva copia del fichero default:
# nano /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default

Con el contenido que listamos a continuación:

# Fichero /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default

DEFAULT ltsp

# Para usar nbd
LABEL ltsp
           kernel vmlinuz
           append ro initrd=initrd.img quiet
 
# Para flashear la BIOS del terminal
LABEL flashbios
           kernel memdisk
           append rw initrd=Floppy/fbiosnec.img

# PLOP Boot Manager
LABEL plp
           linux plpbt.bin
Si nos fijamos en el fichero, podemos ver que tiene tres entradas:
  • ltsp (Para iniciar el terminal ligero)
  • flashbios (Para flashear la bios del terminal ligero)
  • plp (Para iniciar Plop Boot Manager)     
Y que, por defecto, se inicia la máquina mediante ltsp.
     
Si en algún momento queremos flashear la bios de los terminales conectados a un servidor, no tenemos más que cambiar la entrada:
DEFAULT ltsp
por:
DEFAULT flashbios
Al encender los terminales, arrancarán la imagen del floppy que flashea la BIOS.

Y, si en algún momento, queremos arrancar Plop Boot Manager, por ejemplo, para disponer de arranque USB en los terminales, cambiamos la línea DEFAULT a:
DEFAULT plp

lunes, 3 de octubre de 2011

NetworkManager: Modificar políticas

Recomendación. Modificar las políticas de este otro modo: http://enavas.blogspot.com.es/2012/10/networkmanager-modificar-politicas-ii.html

NetworkManager usa PolicyKit para ofrecer un control de acceso "de grano fino" a características específicas para asegurar que el administrador del sistema pueda controlar qué pueden hacer y que no pueden hacer los usuarios. Por ejemplo: Controlar que los usuarios puedan editar conexiones de sistema, crear redes adhoc abiertas, etc...

Como ya hablé en un artículo anterior, con NetworkManager podemos crear conexiones de sistema que se establezcan antes de que el usuario inicie sesión. Ver artículo: NetworkManager: Establecer conexión wifi antes de iniciar sesión en Debian

En el sistema de nuestro centro, nos interesa que los portátiles de alumnos y profesores establezcan la conexión inalámbrica antes de que el usuario inicie sesión para que puedan ejecutarse determinados procesos, como por ejemplo, la actualización de portátiles mediante puppet.

Para lograrlo, creé una conexión de sistema que permite realizar la conexión automática a la red del  centro, comprobé que estaba creada dentro del directorio: /etc/NetworkManager/system-connections/ y que funcionaba.

Pero me dí cuenta de que había un problema: Si creo una conexión inalámbrica, la guardo como conexión del sistema, marcando la casilla "Disponible para todos los usuarios" y el usuario cambia su clave de entrada al sistema (que es la misma para acceder a la wifi), el usuario no va a poder acceder a la wifi después de ello, porque para poder cambiar la clave, NetworkManager le pide la contraseña de administrador.

Para solucionar este problema, tendremos que cambiar la política de NetworkManager, modificando el fichero:

/usr/share/polkit-1/actions/org.freedesktop.network-manager-settings.system.policy

Concretamente, modificaremos la siguiente sección, que he acortado quitando las descripciones y mensajes de los diferentes idiomas para mostrarlo en este post:

<action id="org.freedesktop.network-manager-settings.system.modify">
    <description>Modify system connections</description>
    <description xml:lang="es">Modificar conexiones de sistema</description>
    <message xml:lang="es">Política de sistema evita modificación de configuración de sistema</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

Para modificarlo no tenemos más que fijarnos en que es la sección que nos permite modificar conexiones de sistema (Modify system connections). Para ser más exactos, cambiaremos la línea que dice:

<allow_active>auth_admin_keep</allow_active>

por:

<allow_active>yes</allow_active>

Guardamos y listo. Ahora cuando el usuario tenga que cambiar los parámetros de conexión, como por ejemplo, su clave, NetworkManager no le pedirá la password de administrador.

Las posibles opciones son:
  • auth_admin
  • auth_admin_keep
  • yes
  • no
Un valor de "auth_admin" hará que se pida la password de administrador cada vez que un usuario quiera hacer cambios en la conexión.

Un valor de "auth_admin_keep" hará que se pida la password de administrador tan sólo una vez y se cacheará para no volver a pedírsela al usuario durante la misma sesión.

Un valor de "yes" hará que no se pida la password de administrador al usuario cuando éste quiera modificar la conexión. Éste es el valor que nosotros necesitamos usar en este caso.

Por último, un valor de "no" significa que se deniega el permiso completamente.

domingo, 2 de octubre de 2011

WIIMC: Reproducir archivos multimedia almacenados en nuestro PC

WiiMC (Wii Media Center) es un excelente "media player" opensource que nos va a permitir escuchar nuestra música, ver videos, dvd y fotos tanto si están almacenados en DVD, USB o SD como si están almacenados en una máquina de nuestra red, o incluso medios online, como por ejemplo, youtube.

Además, si tenemos nuestra wii conectada a internet, podremos actualizar WiiMC cada vez que haya una versión nueva porque nos avisará.

Y como siempre hay alguien que lo pregunta: Sí, tiene soporte de idioma español.

Eso sí, para poder instalarlo es imprescindible tener el Homebrew Channel en nuestra Wii.

 

Una cosa que me encanta de esta aplicación es la opción de reproducir los archivos a través de la red. De este modo, si quiero, puedo guardar la música, los videos y las fotos en una carpeta de mi máquina y reproducirlos vía wifi desde la Wii. Esto es una  gran ventaja, porque teniendo esta aplicación puedo reproducir una enorme cantidad de formatos tanto de vídeo como de audio.

La reproducción a través de la red puede hacerse via SMB, HTTP, and FTP.

Para probar, podemos crear una carpeta donde almacenar nuestros archivos multimedia:

# mkdir /home/multimedia

Y asignarle como propietario nuestro usuario. Por ejemplo:

# chown enavas:enavas /home/multimedia

En esta carpeta será donde almacenemos nuestra música, videos y fotos.

Después instalamos samba, si no lo tenemos ya instalado en nuestra distribución, y modificamos el fichero  /etc/samba/smb.conf añadiendo lo siguiente:

[multimedia]
path=/home/multimedia
read only=yes
guest ok=yes


Reiniciamos samba:
# /etc/init.d/samba restart

Y estaremos compartiendo la carpeta /home/multimedia con permisos de sólo lectura.

Ahora nos vamos a la Wii, abrimos el WIIMC y nos vamos a las opciones de configuración (el icono que hay arriba a la derecha , al lado del logo de WIIMC).

En el listado de opciones de configuración, seleccionamos "conexiones".

Nos mostrará dos posibilidades:
  • "conexion PC
  • "conexion FTP"
Elegimos "conexion PC" y rellenamos las casillas que nos aparecen con los siguientes datos:

  • Nombre Mostrado: Como se pueden crear diferentes conexiones, las diferenciamos mediante un nombre. Por ejemplo: "multimedia".
  • IP: Debemos especificar la IP de la máquina que comparte los recursos. Por ejemplo: 192.168.0.1
  • Carpeta: Indicamos el nombre de la carpeta compartida. Ejemplo: multimedia.
  • Usuario: Especificamos el nombre de un usuario con permisos para leer la carpeta.
  • Contraseña: Escribimos la contraseña del usuario que hemos especificado en el cuadro anterior.
Una vez rellenado el formulario, hacemos clic sobre el botón "atras" y nos aparecerá la nueva conexión que acabamos de crear.

Ahora, ya tan sólo tenemos que seleccionar dicha conexión para ver los archivos que compartimos desde el PC y seleccionar el archivo que queremos reproducir.

viernes, 30 de septiembre de 2011

Actualizar la imagen de un netboot del centro

Ya que tengo que volver a asignar portátiles a otros usuarios y, algún que otro software y actualizaciones de puppet, como por ejemplo NetworkManager dieron problemillas, he pensado que lo mejor que puedo hacer es actualizar la imagen y volver a clonarlos con el sistema actualizado y los errores solucionados.

Para empezar, clono el portátil con la imagen que viene en el DVD de recuperación del sistema. Una vez clonado, ya tengo un equipo limpio que aún no se ha configurado.

Siguiente paso: Arranco el portátil desde un pendrive de rescate en el que tengo System Rescue CD y Clonezilla, entre otras cosas e inicio Clonezilla, no para clonar, sino para entrar en un shell.

Una vez que tengo un shell, lo primero que hago es ver la lista de particiones con:

# fdisk -l

Al ejecutar fdisk -l, veo la lista de particiones del disco duro y observo que linux se encontraba instalado en /dev/hda2.

El siguiente paso: Montar la partición donde se encuentra instalado el sistema:

# mount /dev/sda2 /mnt

Después monto el /dev del sistema live que estoy corriendo (en este caso, clonezilla) en el directorio /dev de la partición que acabo de montar:

# mount --bind /dev /mnt/dev

También monto /proc del sistema live en el directorio /proc de la partición que he montado anteriormente:

# mount --bind /proc /mnt/proc

Y ejecuto el comando chroot para acceder al sistema instalado en /dev/hda2 (en este caso Squeeze):

# chroot /mnt

Bien, pues una vez hecho ésto, ya tengo corriendo el sistema del portátil dentro de la "jaula" chroot.

Como en estos momentos, no tengo red, conecto el cable y levanto la interfaz eth0:

# ifconfig eth0 up

Y solicito una ip al servidor:

# dhclient eth0

Con ésto, ya tengo acceso a la red. Compruebo si tengo resolución de nombres en el fichero /etc/resolv.conf. Como estoy en la red del centro, la tendré al haber hecho el dhclient,  pero, si no la tengo, añado la ip del servidor de nombres del centro:

# echo "nameserver 172.19.144.3" >> /etc/resolv.conf

Actualizo los paquetes del sistema con pkgsync:

# pkgsync
Y fuerzo la ejecución de tareas puppet que haya para él:

# puppetd -t
Vuelvo a actualizar los paquetes del sistema con pkgsync, por si después de hacer el puppetd -t hubiera paquetes nuevos:

# pkgsync

Siguiente paso: Pongo una password de root conocida por mí mediante el comando:

# passwd
Borro en el servidor puppet el certificado almacenado en esta sesión. Para ello ejecutamos en el servidor puppet:

# puppetca --clean debian.valledeljerte3

Donde debian.valledeljerte3 es el nombre de la máquina a la que se le ha creado el certificado.

Y  borro en el cliente los ficheros de certificado que se han creado dentro de /var/lib/puppet/ssl

En cuanto al fichero /etc/udev/rules.d/70-persistent-net.rules, no es necesario borrarlo, porque lo borra automáticamente el script:
S99primer-arranque.

Por si acaso lo necesitara en algún momento para algo en particular, voy a crear dos imágenes:
  • portatil-alumno.
  • portatil-profesor.
El script S99primer-arranque configura el portátil para un alumno. Así que creo una imagen para portátiles de alumnos.

Una vez creada la imagen de portátil de alumno, vuelvo a arrancar el equipo con un shell de clonezilla y:
  • Modifico el fichero /etc/escuela2.0 para que contenga:
    • use=portatil-alumno
    • use2=portatil-profesor
  • Borro el script S99primer-arranque del directorio /etc/rcS.d/
  • Y copio el script S99primer-arranque-p, que configura un ordenador de profesor al directorio /etc/rcS.d
Después de realizar las modificaciones, inicio de nuevo con clonezilla y creo una imagen para portátiles de profesores.

miércoles, 28 de septiembre de 2011

NetworkManager: Establecer conexión wifi antes de iniciar sesión en Debian


Una cosa que me fastidiaba de NetworkManager era no poder establecer una conexión inalámbrica antes de iniciar sesión con un usuario, pero, a partir de la versión 0.7, NetworkManager ya permite establecer conexiones a redes wifi durante el arranque del sistema.

Si echamos un vistazo al fichero /etc/NetworkManager/NetworkManager.conf, veremos que, como mínimo, contiene lo siguiente:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

NetworkManager usa "plugins" que parsean y almacenan configuraciones en disco que se encontrarán disponibles para NetworkManager antes de que cualquier usuario haya iniciado sesión.

El plugin "keyfile" nos va a permitir hacer lo que queremos: Almacenar la configuración de conexión de nuestra red y establecer dicha conexión antes de que iniciemos la sesión. Si no se encontrara añadida la palabra keyfile en plugins, dentro de este fichero, lo añadimos y reiniciamos NetworkManager:

# /etc/init.d/network-manager restart

Las configuraciones de las redes a las que se conecta cada usuario, se almacenan en un directorio dentro de su home, concretamente en:
/home/USUARIO/.gconf/system/networking/wireless/networks/ dentro de un directorio con el nombre del SSID de la red, en un archivo %gconf.xml. Es decir, que si nuestra red tiene el SSID WLAN_44, la configuración se almacenará en el fichero:

/home/USUARIO/.gconf/system/networking/wireless/networks/WLAN_44/%gconf.xml

En cuanto a las configuraciones de sistema, que se encontrarán disponibles para realizar la conexión antes de que el usuario inicie sesión, se almacenarán en:

/etc/NetworkManager/system-connections/nombreconexion

Bien, pues una vez activado, no tenemos más que crear nuevas conexiones:
  • Haciendo clic con el botón derecho sobre el icono de nm-applet y seleccionando la opción "Editar las conexiones".
  • Llamando directamente al editor de configuraciones, desde un terminal: /usr/bin/nm-connection-editor
  • Editando a mano los ficheros de configuración.
Una vez introducidos los parámetros de configuración de la red, marcamos las casillas "Conectar automáticamente" y "Disponible para todos los usuarios", como se muestra en la imagen de ejemplo:



Nos pedirá que introduzcamos la password de root para poder almacenar la configuración y la almacenará en:

/etc/NetworkManager/system-connections/nombreconexion

Si nos desplazamos al directorio /etc/NetworkManager/system-connections/, veremos que se encuentra creado el fichero con los datos necesarios para establecer la conexión.

Y ya está. Ahora, cada vez que encendamos el equipo, se habrá establecido la conexión inalámbrica antes de iniciar la sesión, algo interesante para mí, porque comparto la conexión con otros equipos y de este modo tan sólo tengo que encender la máquina. Y muy útil para las actualizaciones de los portátiles del centro, vía puppet.

martes, 23 de agosto de 2011

Instalar wiithon en Debian Squeeze

Hace tiempo ya hablé de wiithon, una herramienta muy usada que sirve para trabajar con backups de juegos Wii, permitiendo añadirlos a un disco duro, extraerlos, etc. Esta herramienta ha evolucionado y mejorado con el tiempo.

Instalar wiithon en Debian Squeeze es sencillo haciendo uso de Bazaar, la herramienta de control de versiones que utilizan sus desarrolladores.

Lo primero de todo, sería instalar bzr, si no lo tenemos:

# aptitude install bzr

Una vez instalado, nos situamos en el directorio /usr/src:

# cd /usr/src

Descargamos el código fuente de la rama estable:

# bzr branch http://bazaar.launchpad.net/~wii.sceners.linux/wiithon/1.1 wiithon

Entramos en el directorio wiithon:

# cd wiithon

Compilamos:

# make

Y si todo ha ido bien, instalamos:

# make install_auto

Y ya tendremos wiithon.

A la hora de instalar wiithon, tenemos dos posibilidades:
  • make install -> Instala wiithon
  • make install_auto -> Instala wiithon y sus dependencias
Si ya hubiéramos instalado wiithon anteriormente, podríamos actualizarlo fácilmente:

# cd /usr/src/wiithon
# bzr pull
# make install

 Si quisiéramos desinstalarlo:

# cd /usr/src/wiithon

# make uninstall

Y si quisiéramos borrar todos los ficheros al desinstalar, como por ejemplo, carátulas, disc-art...

# cd /usr/src/wiithon
# make purge

lunes, 22 de agosto de 2011

Conexión a escritorio remoto de Windows 2008 Server mediante rdesktop

En alguna ocasión he tenido que acceder desde Debian mediante la herramienta rdesktop a un Windows 2003 server y no he tenido ningún problema.

Sin embargo, con Windows 2008 Server, no conseguía conectarme y cada vez que lo intentaba, me decía que el usuario o la contraseña no era válida.

El problema está en que para conectar a un Windows 2008 Server hay que indicar, además del usuario y la máquina, el nombre de dominio:

$ rdesktop -d dominiodelservidor -u usuario maquina

Ejemplo:

$ rdesktop -d valledeljerte3 -u Administrador pasarela.no-ip.org

viernes, 12 de agosto de 2011

Hacer funcionar Ralink RT2870/RT3070 en Debian Squeeze

Hace tiempo intenté usar una tarjeta Ralink RT2870/RT3070 en Squeeze de mi portátil y me dí cuenta de que el equipo la montaba, pero no detectaba redes wifi. Despues de "googlear" conseguí que funcionara, pero no tomé nota de lo que había hecho.

Estos últimos días he actualizado mi máquina de sobremesa para pasarla de Lenny a Squeeze, he conectado la tarjeta y me ha vuelto a surgir el mismo problema, que me ha resultado curioso porque en Lenny la tarjeta sí funcionaba.

He pensado que lo que faltaba era el firmware. Así que, para hacerla funcionar, lo primero que he hecho ha sido añadir la rama non-free de los repositorios al fichero /etc/apt/sources.list:
# Debian Squeeze/6.0
deb http://ftp.de.debian.org/debian squeeze main contrib non-free
E instalar el firmware:
aptitude update
aptitude install firmware-ralink
Pensando que eso era todo lo que necesitaba, he reiniciado, y he visto que seguía sin funcionar.
He vuelto a "googlear" y en vivahate.com "http://vivahate.com/2011/04/04/ralink-rt2870rt3070-in-debian-6-squeeze/" he encontrado la solución: Había que añadir a blacklist unos pocos módulos del kernel:

# cd /etc/modprobe.d
echo "blacklist rt2800lib" > rt2800lib.conf
echo "blacklist rt2800pci" > rt2800pci.conf
echo "blacklist rt2800usb" > rt2800usb.conf
echo "blacklist rt2x00lib" > rt2x00lib.conf
echo "blacklist rt2x00pci" > rt2x00pci.conf
echo "blacklist rt2x00usb" > rt2x00usb.conf
echo "blacklist rt61pci" > rt61pci.conf

Y ahora sí. He vuelto a reiniciar y la tarjeta wifi ya funciona sin problemas.

viernes, 5 de agosto de 2011

Añadir y borrar varias líneas en un archivo

Añadir varias líneas a un archivo
Puedo añadir varias líneas a un archivo usando el comando echo con el parámetro -e que activa la interpretación de secuencias de escape, como por ejemplo, tabuladores (\t), nuevas líneas (\n)...

Por ejemplo, el siguiente comando:

# echo -e "#inicio\niface wlan0 inet static\naddress 192.168.100.1\nnetmask 255.255.255.0\nauto wlan0\n#fin\n" >> /etc/network/interfaces

añade el siguiente conjunto de líneas al fichero /etc/network/interfaces:

#inicio
iface wlan0 inet static
address 192.168.100.1
netmask 255.255.255.0
auto wlan0
#fin

Borrar varias líneas de un archivo
Los comentarios #inicio y #fin están añadidos a propósito al archivo como indicadores de dónde comienza y termina el bloque de texto, para facilitar el borrado de las líneas en un momento dado.

Si ahora, quisiera borrar este bloque de líneas, no tendría más que ejecutar el siguiente comando:

# sed -i.bak '/^#inicio/,/^#fin/d' /etc/network/interfaces

Aunque para ser más exactos, lo que haría, sería guardar el resultado de ejecutar el comando sed en el fichero /etc/network/interfaces y una copia de seguridad del contenido antes de ejecutar el comando en el archivo /etc/network/interfaces.bak

jueves, 4 de agosto de 2011

sysv-rc-conf: Gestionar el arranque y parada de servicios en un terminal

sysv-rc-conf es una herramienta muy útil que nos permite controlar el arranque y la parada de servicios desde un terminal. Esto es algo que podemos hacer manualmente mediante comandos. Lo que sysv-rc-conf nos aporta es una interfaz accesible desde un terminal.

sysv-rc-conf nos será de gran utilidad para gestionar los enlaces simbólicos de «/etc/rc{runlevel}.d/».

Al ser una herramienta disponible en los repositorios, instalarla es tan sencillo como hacer:

# apt-get install sysv-rc-conf

Para ejecutar la herramienta nos vamos a un terminal y ejecutamos:

# sysv-rc-conf

Como muestra, veamos un pantallazo:


martes, 31 de mayo de 2011

ssha-attack: Una herramienta para crackear hashes SSHA

ssh-attack es un pequeño programa creado para auditar hashes SSHA que se encuentra disponible en SourceForge: http://sourceforge.net/projects/ssha-attack/

Como nos dice su autor, puede ser tratado como una herramienta de crackeo de hashes SSHA, pero no fue escrita con intenciones maliciosas.

Instalar la herramienta es muy sencillo.
Primero la descargamos. La última versión disponible a día de hoy es la 0.4.: ssha_attack-0.4.tar.gz

Una vez descargado el fichero, lo descomprimimos:
# tar xfvz ssha_attack-0.4.tar.gz

Se nos creará una carpeta. Entramos en ella:
# cd ssha_attack_0.4

Para compilarla, primero hacemos un:
# make clean

Y luego, la compilamos:
# make

Y se creará un fichero ejecutable: ssha_attack que podremos usar para auditar/crackear hashes SSHA.

Para consultar cómo usarlo:
# ssha_attack --help

Crackear hashes SSHA.
ssha_attack nos permite realizar dos tipos de ataques:
  • Ataque mediante diccionario:  -m dictionary
  • Ataque mediante fuerza bruta: -m brute-force
Bueno, en cualquier caso, yo considero que ambos son ataques de fuerza bruta, ya sea comparando palabras o componiendo combinaciones de caracteres.

Si usamos un ataque de diccionario, tendremos que especificar cuál es el fichero que contiene el diccionario mediante el parámetro -d: -d /home/usuario/wordlist

Más parámetros:
-l  nos permite indicar el mínimo número de caracteres a usar en el ataque.
 
-u nos permite indicar el máximo número de caracteres.

-a nos permite indicar qué tipo de caracteres vamos a usar en el ataque. Pego la lista de posibles opciones que nos ofrece la ayuda:
  • 1 Numbers only
  • 2 lowercase hex
  • 3 UPPERCASE HEX
  • 4 lowercase alpha characters
  • 5 UPPERCASE ALPHA characters
  • 6 lowercase alphanumeric characters
  • 7 UPPERCASE ALPHANUMERIC characters
  • 8 lowercase & UPPERCASE ALPHA characters
  • 9 lowercase & UPPERCASE ALPHAnumeric characters
  • 10 All printable ASCII characters
  • 11 lowercase & UPPERCASE ALPHAnumeric characters, as well as:         !"£$%^&*()_+-=[]{}'#@~,.<>?/|
  • 20 Custom alphabet - must be used with -c switch

El parámetro -c nos permite indicar una combinación de caracteres personalizada con la que realizar el ataque.

Por último, pero no por ello menos importante, el parámetro -s nos permite indicar el hash que queremos atacar.

Veamos un ejemplo de ataque de diccionario, para que quede más claro:

# ssha_attack -m dictionary -d /root/swireless/wordlist -l 1 -u 5 -s {SSHA}rPIPZoIS7AyqHoyK9XAS20ZvubjpIsR4

ssha_attack realizará un ataque de diccionario, tomando las palabras a comparar del diccionario /root/swireless/wordlist sobre el hash indicado en el parámetro -s.

Y un ejemplo de ataque de fuerza bruta:

# ssha_attack -m brute-force -l 1 -u 5 -a 4 -s {SSHA}rPIPZoIS7AyqHoyK9XAS20ZvubjpIsR4


Realizaremos un ataque de fuerza bruta en el que se usarán como mínimo 1 caracter y como máximo 5 de tipo alfabético en minúsculas sobre el hash indicado en el parámetro -s.

Por cierto. He creado un módulo Wifiway que "instala" ssha_attack en Wifiway: http://dl.dropbox.com/u/5004198/wifiway/ssha_attack-0.4.sq4.lzm

Para instalarlo, como cualquier módulo, lo único que hay que hacer es colocarlo dentro de la carpeta wifiway/modules/ de nuestra iso o pendrive.

lunes, 30 de mayo de 2011

Descompririr archivos .xz

Para poder descomprimir archivos .xz en Debian, debemos instalar el paquete xz-utils:

# apt-get install xz-utils

Una vez instalado, ya podemos comprimir y descomprimir. Veamos un ejemplo de cómo descomprimir un archivo:

# xz -d xtables-addons-1.35.tar.xz
# tar -xf xtables-addons-1.35.tar


Si quisiéramos comprimir un archivo, usamos el parámetro -z o --compress:

# xz -z fichero
 
Y se nos creará un archivo llamado fichero.xz

Por otra parte, podemos comprobar la integridad de un archivo comprimido usando las opciones -t o --test. Por ejemplo:

# xz -t fichero.xz

Y también podemos listar el contenido de un archivo usando las opciones -l o --list. Ejemplo:

# xz -l fichero.xz

xz dispone de una serie de alias que nos permitirán recordar más fácilmente los comandos para comprimir, listar, etc:
  • unxz es equivalente a xz --decompress.
  • xzcat es equivalente a xz --decompress --stdout.
  • lzma es equivalente a xz --format=lzma.
  • unlzma es equivalente a xz --format=lzma --decompress.
  • lzcat es equivalente a xz --format=lzma --decompress --stdout.
No obstante, si consultamos la ayuda, veremos que, si queremos descomprimir ficheros xz mediante comandos dentro de un script, nos recomiendan que usemos xz con los argumentos apropiados, en lugar de usar estos alias.

sábado, 28 de mayo de 2011

Guardar cambios en WifiWay para hacerlos persistentes

Podemos montar WifiWay en un pendrive o en una tarjeta de memoria SD, simplemente usando Unetbootin, una aplicación que nos permite crear un pendrive arrancable. El problema es que se comportará como un CD. Es decir, que cada vez que reiniciemos, los cambios que hayamos hecho no se guardarán.

Si hacemos cambios en nuestro dispositivo y queremos que esos cambios se guarden de forma permanente, podemos hacerlo de dos modos:

1ª forma:
  1. Abrimos la carpeta /mnt/live/memory/changes en el explorador de archivos.
  2. Hacemos clic con el botón derecho y se nos abrirá un menú de contexto. Seleccionamos la opción "Gestor contextual modulo Wifiway" y se nos mostrará un submenú en el que podremos elegir "Crear módulo Wifiway sq3" o "Crear módulo Wifiway sq4". Si elegimos por ejemplo "Crear módulo Wifiway sq4" se creará un módulo llamado changes.sq4.lzm en /mnt/live/memory/
  3. Copiamos el módulo /mnt/live/memory/changes.sq4.lzm al directorio de módulos de Wifiway. Por ejemplo, como mi pendrive está montado en /mnt/sdb1, guardaré el módulo en /mnt/sdb1/wifiway/modules/ 

2ª forma:
  1. Instalar el módulo crea modulos v4 en Wifiway. Se nos añadirá un acceso directo al escritorio de Wifiway.
  2. Al hacer clic sobre el icono "CREAR MODULO" del escritorio, se nos creará un módulo llamado cambios.lzm. Lo copiamos al directorio de módulos de Wifiway. Y listo.
 De ambos modos, se habrán guardado los cambios y se aplicarán cada vez que arranquemos nuesto live-usb.

martes, 10 de mayo de 2011

Como descompririr archivos .rar con file-roller

Algún compañero me ha comentado que no puede descomprimir archivos .rar con file-roller.

Para que file-roller pueda comprimir/descomprimir archivos rar, lo único que hay que hacer es instalar los paquetes rar y unrar.

Como en Debian tenemos éstos paquetes en los repositorios, la cosa es tan sencilla como instalarlos.

# apt-get install rar unrar

Y file-roller ya podrá comprimir y descomprimir rar.

martes, 26 de abril de 2011

Activar/desactivar ip_forward

Se nota que en estos últimos meses no tengo mucho tiempo... Tengo el blog un poco abandonado y no encuentro el momento de publicar algún artículo.

Una de las cosas que tenemos que hacer cuando compartimos el acceso a internet de nuestro equipo, es activar el ip_forward:

Podemos activar el ip forward ejecutando como root el comando sysctl:

# sysctl -w net.ipv4.ip_forward=1

Y desactivarlo:

# sysctl -w net.ipv4.ip_forward=0 

Esta activación durará mientras no cerremos el sistema y cuando lo volvamos a iniciar el ip_forward estará a cero por defecto. Si queremos hacerlo permanente, no tenemos más que editar el fichero /etc/sysctl.conf y "descomentar" la línea:

# net.ipv4.ip_forward=1

Dejándola así:


net.ipv4.ip_forward=1

domingo, 6 de febrero de 2011

Actualizar firmware router C54APRA

Parece que últimamente me está dando un poco de guerra el router C54APRA. Así que he puesto otro y voy a trastear un poco con él, poniéndole otra vez el firmware Openwrt, ahora con una versión más reciente: la backfire (La última vez lo flasheé con el firmware kamikaze 8.09.2):

http://downloads.openwrt.org/backfire/10.03/ar7/


He vuelto a tener problemas para flashearlo desde linux, así que he tenido que usar de nuevo el cliente ftp de windows desde una máquina virtual.

Como ya sé que la IP adam2 de mi router es la 192.168.1.199, abrimos un terminal y, una vez abierto, hacemos ftp a la direccón adam2 de nuestro router:

ftp 192.168.1.199

El router nos mostrará un mensaje y nos perguntará un usuario y una password. Introduciremos adam2 como usuario y como password:

Connected to c54apra (192.168.1.199).
220 ADAM2 FTP Server ready.
Name (192.168.1.1:user): adam2
530 Please login with USER and PASS.
SSL not available
331 Password required for adam2.
Password: adam2

Y veremos un mensaje en el que nos dice que el usuario adam2 se ha logueado correctamente:

230 User adam2 successfully logged in.
ftp>

En el prompt de ftp establecemos el modo de transferencia binario e indicamos, por decirlo de algún modo, que vamos a flashear:

ftp> binary
ftp> quote MEDIA FLSH

El siguiente paso, será transferir el archivo:

put "openwrt-ar7-squashfs.bin" "c mtd4"


Tardará un poquito en flashearlo, pero no demasiado. Una vez que termine, veremos de nuevo el prompt de ftp:

ftp>

Reiniciamos el router:

ftp>quote REBOOT

Y salimos de ftp:

ftp>QUIT

Y listo. Ya tendremos nuestro router funcionando con OpenWRT backfire.