Vamos a ver como crear un «kiosko» a partir de una web con Raspberry Pi, una pantalla táctil y una pagina web que es la que queremos mostrar en nuestro kiosko. Lo que deseamos es que la web aparezca a pantalla completa y sin que el usuario pueda «escapar» de ella. En mi caso lo que deseaba mostrar era una web con el tiempo, un calendario y alguna información del ayuntamiento de mi ciudad. Para ellos bastaba con mostrar una pagina web alojada en la propia Raspberry con iframes para mostrar parte de la información. El problema era que se viera en toda la pantalla y no se pudiera salir accidentalmente (o intencionadamente) de la web.
Para ello existe en chromium y firefox (tambien en chrome aunque para Raspberry no este) el modo kiosko que muestra una página web a pantalla completa, sin barra de herramienta, direcciones, menú o cabecera. La forma de lanzarlo es asi:
chromium-browser --kiosk direccionweb firefox --kiosk direcionweb google-chrome --kiosk direccionweb
La única forma de salir es con un teclado y pulsado alt+f4. En mi caso como no había teclado ya tenia mi kiosko seguro pero hay algunas cosas que hay que tener en cuenta según su uso para que el kiosko sea seguro:
- Desactivar el recordar y autocompletar de campos
- Nada de teclados
- Si se tiene que poner un teclado mejor si es un teclado en pantalla, mejor aun si el teclado es parte de la web, por ejemplo este
- El teclado ha de tener solo las teclas necesarias. No tiene que tener teclas «especiales» como control, alt, f1, f2,…
- Asegurarse de que la web que se muestra no tiene enlaces que lleven fuera de la misma.
- Bloquear los puertos USB para evitar que nadie los use. Si la conexión de red es por WiFi aquí se puede ver como hacerlo
Estas medidas hay que tenerlas en cuenta según el entorno del kiosko, no es lo mismo en una casa que en una tienda o en un lugar publico.
Aun así hay varios puntos de ataque:
- Quitar la alimentación.
- Quitar la conexión de red.
Quitar la alimentación eléctrica dejaría nuestra Raspberry apagada, el problema esta cuando vuelve, que por defecto se reinicia. Aquí tenemos que decidir porque opción optamos. Si mostrar una pantalla de login (mejor si es consola en lugar de interface gráfica) con usuario y password (ambos deben de ser seguros, nada de dejar los por defecto) y dejar el kiosko sin servicio. La otra opción es configurar el autologin y hacer que el kiosko se lance automáticamente cuando el desktop se inicie. Aquí se explica como hacerlo.
Al quitar la conexión de red (red de datos) el navegador mostrará una pagina de error. Al recuperar la conexión es posible que se quede esa página en lugar de volver a la que debería mostrar el kiosko. Hay una solución que es en lugar de cargar directamente la web remota poner un servidor web en la propia Raspberry Pi, que el navegador en modo kiosko cargue la pagina que sirva este servidor local y ella sea la que se muestren las distintas fuentes de datos. Al falla la conexión el servidor local sigue funcionando y permite tener cierto control sobre lo que ocurra.