run kiosco

20 de diciembre de 2009

Un kiosco en Linux es una máquina dispuesta en un stand para que los usuarios la puedan utilizar a modo de terminal de consulta. Por ejemplo si habéis ido alguna tienda de Pixmania, a la entrada hay un terminal (pantalla+teclado+ratón) donde solo tenéis acceso a su pagina Web para consultar sus productos.

En mi empresa hemos montado tres kioscos para que los empleados tengan acceso al "portal del empleado" y estén siempre al día de la noticias de la empresa. Una está en la cafetería, la otra en el restaurante y la otra aun no se donde irá.

Explico pues como montar una maquina de estas. La idea es que el Linux arranque automáticamente, cargue el firefox con la página de inicio y el usuario solo pueda consultar esta página. Naturalmente no podrá navegar por ningún otro sitio, no podrá reiniciarla, no podrá ejecutar ninguna aplicación, etc.

+ Instalaremos una versión ligera de Linux como Ubuntu Server. La idea es que cualquier maquina con poco disco (unos 2Gb) y memoria (unos 256Mb) nos pueda funcionar. Haremos una instalación estándar y consideraremos los siguientes puntos:

1) Crear el usuario con nombre "operador". Este será el usuario con el que funcionará el Kiosco.
2) No utilizar LVM ya que no es necesario.
3) Instalar OpenSSH Server. Es necesario para realizar un mantenimiento remoto del kiosco.

+ Actualizar la máquina e instalar un entorno X ligero como Blackbox (con 5Mb de RAM ya funciona):

operador@kiosko$ sudo passwd root
operador@kiosko$ su root
root@kiosko# apt-get update
root@kiosko# apt-get upgrade
root@kiosko# apt-get install x-window-system-core blackbox squid firefox mingetty 
flashplugin-nonfree
+ Lo primero que haremos es configurar el Squid para decirle el conjunto de paginas Web por donde podrá navegar el kiosco. Si solo tenemos un kiosco el proxy lo instalaremos en la maquina local, si tenemos varios podemos instalar el proxy en uno de ellos y hacer que el resto de kioscos lo utilicen.

El usuario no puede escribir una URL ya que la pagina inicial le viene impuesta, el problema es que si la pagina contiene un link a otro site no controlado o no previsto, el usuario podrá navegar. Imagina que dentro de la pagina inicial encuentra un link a Google. Si accede a Google podrá navegar por donde quiera.

Para ello creamos el archivo "/etc/squid/kiosko_allow_sites.conf" y dentro colocaremos todos los dominios (incluidos nuestra pagina inicial) por donde queramos que navegue nuestro kiosco:

root@kiosko# cat kiosko_allow_sites.conf 
intranet.miempresa.com
miempresa.com
submiempresa.com
Ahora le decimos a Squid que acepte estos sites y que todo lo demás lo deniegue. Para ello editamos el /etc/squid/squid.conf. Dentro del "Defining an Access List", añadimos la ACL:

acl kiosko_allow_sites url_regex "/etc/squid/kiosko_allow_sites.conf"
Ahora creamos la rule para aceptar estas sites y denegar el resto. Dentro de "Allowing or Denying access based on defined access lists" añadimos:
http_access allow kiosko_allow_sites
http_access deny all
Ahora solo queda reiniciar Squid:
root@kiosko# /etc/init.d/squid restart
+ Ya podemos arrancar el entorno X. Mientras tanto podemos ir conectándonos por SSH y terminar de configurar la maquina:
root@kiosko# startx
Para arrancar Firefox manualmente, hacemos botón derecho en el ratón y ejecutamos xterm. En la ventana de consola podemos escribir "firefox" para ejecutarlo.

Una vez arrancado el Firefox lo configuramos para que siempre arranque nuestra pagina de inicio. Para ellos hacemos "Editar->Preferencias" y modificamos la "Pagina de Inicio".

Es aconsejable revisar todas las opciones de Firefox para no dejarnos nada. Por ejemplo:

1) cambiar la ruta de descargas de archivos a /tmp.
2) deshabilitar la barra de progreso de descargas
3) no recordar nunca los passwords
4) limpiar historial todos los dias
5) deshabilitar las actualizaciones

También debemos decirle a Firefox que utilice el proxy (Squid) que hemos configurado en el punto anterior. Para ello dentro de Preferencias vamos a Advanced->Network->Settings y añadimos:

HTTP Proxy: 127.0.0.1
Puerto: 3127

Otra cosa para configurar es deshabilitar la restauración de la sesión de Firefox al cerrar incorrectamente el navegador. Esto evita que cada vez que arranque el Firefox (al reiniciar el kiosco) pregunte si deseamos restaurar la ultima sesión:

1) En la URL escribimos "about:config" y pulsamos Enter
2) Buscamos "browser.sessionstore.resume_from_crash"
3) Hacemos doble click en el parámetro para ponerlo a false

También pondremos a false el parámetro "network.protocol-handler.external.mailto". Esto lo que hará es que cuando la pagina encuentre un link del tipo "mailto" este no funcione y no cargue ningún Webmail tipo GMail o Yahoo.

Tras finalizar la configuración de Firefox viene la parte más importante que es la instalación de un complemento de Firefox que nos permite eliminar las barras de navegación, la minimización de las ventanas, el botón derecho del ratón, etc: el R-Kiosk.

Lo debemos instalar accediendo a su descarga: https://addons.mozilla.org/en-US/firefox/addon/1659

Una vez arrancado Firefox con este complemento perderemos toda posibilidad de acceder a los menus y al escritorio la maquina. Si queremos arrancar con los menús de Firefox, tendremos que arrancarlo en safe-mode como se indica más abajo.

+ Hacer auto-login y arrancar el entorno grafico automáticamente.

Primero editamos "/etc/event.d/tty1" y cambiamos "exec /sbin/getty 38400 tty1" por "exec /sbin/mingetty –-autologin operador tty1". Esto lo que hace es el auto-login con el usuario "operador" creado durante la instalación.

Para arrancar las X editamos "/home/operador/.profile" y añadimos en la última linea un "startx".

+ Arrancar automáticamente Firefox. Creamos el archivo "/home/operador/.xinitrc". Este archivo se ejecuta cada vez que arranque el entorno gráfico:
root@kiosko# cat .xinitrc 
#!/bin/bash

## Arranque normal de Firefox
firefox &

## Utilizar esta linea para arrancar Firefox en safe-mode
##firefox -safe-mode &

. /etc/X11/Xsession

root@kiosko# chown operador:operador .xinitrc
NOTA: Si no queremos arrancar el R-Kiosk arrancaremos el Firefox con "firefox -safe-mode &".

+ También es necesario que el usuario no pueda hacer un "ctrl+alt+del" y reiniciar el kiosco. Para ello renombramos este archivo:
root@kiosko# cd /etc/envet.d
root@kiosko# mv control-alt-delete control-alt-delete.disable
Otras consideraciones: la máquina al arrancar es vulnerable a que un usuario pueda acceder. Por ejemplo, al arrancar el grub podría modificar los parametros de arranque, podría cambiar de tty mientras está cargado, o podría llegar a ejecutar un xterm antes de arrancar el Firefox.

Por esto unas modificaciones que podrías hacer tú es:

+ Modificar el grub para que el timeout sea 0 segundos.
+ Quitar todos los ttys no necesarios
+ No ejecutar ningún programa una vez dentro de Blackbox.

1 comentarios:

Fernando Vergniaud dijo...

1 UAddreNada mas agredecer este resumen de instalacion de kiosko, muy bueno, me desasne de varios puntos.

Todavia tengo que seguir luchando un poco mas con el Flash ( me esta dando problemas con la webcam y el video).

Estoy usando Ubuntu 12.04.

Hay varios directorios cambiados con respecto a esto, pero nada del otro mundo.

Gracias de nuevo