====== Configuration d'un Point d'Accés Public au Web ======
===== Objectifs =====
Mettre à la disposition du public des lieux publics (MPT, MJC, Associations, etc…) des bornes d'accès au web
Recycler des ordinateurs anciens en installant une distribution légère de GNU/Linux qui proposera aux utilisateurs **un seul logiciel : le navigateur Web((le web n'est pas Internet)) **
===== Installation de l'OS =====
Comme OS on part sur une base de Debian/Squeeze que l'on installera seulement avec le système de base et openssh.
On fera 4 partitions((en principe 3 devrait suffire si on externalise le proxy et les logs)):
* le swap
* la racine (/)
* le home (/home)
* les logs et autre données du système (/data)
On peut créer ou pas l'utilisateur à ce moment mais faudra penser à restreindre ses droits dans le fichier /etc/group.
==== Configuration de l'OS ====
# mkdir /data/log
# echo "/data/log /var/log none bind 0 0" >> /etc/fstab
# mkdir /root/.ssh && chmod 700 /root/.ssh
# touch /root/.ssh/authorized_keys
Copiez vos clés id_rsa.pub dans le fichier /root/.ssh/authorized_keys puis éditez le fichier /etc/ssh/sshd_config pour enlever les authentification par mot de passe et n'autoriser que l'ulisateur root à se connecter:
PasswordAuthentication no
AllowUsers root
Puis on verrouille le compte root. Tous les accés suivants au compte root se faisant par ssh.
# passwd -l
On vérifie le fichier /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
//Attention au fichier /etc/resolv.conf. Il doit contenir la même liste de nameserver que l'endroit ou sera placer la machine ou utiliser un serveur DNS public comme 8.8.8.8.//
On complète le fichier /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
# Pour avoir xulrunner-2.0 et iceweasel-4.0 sur squeeze
deb http://mozilla.debian.net/ squeeze-backports iceweasel-4.0
En fonction du matériel présent dans la machine, il peut être nécessaire d'avoir les firmwares:
# apt-get install firmware-linux
Si d'autre firmware doivent être installé, on a la liste avec:
# apt-cache search --names-only firmware
On ajoute le support acpi et la gestion du son avec alsa((ou pulseaudio))
# apt-get install acpi acpi-support acpitool alsa-base alsa-firmware-loaders alsa-tools alsa-utils
Editez le fichier /etc/modprobe.d/alsa-base-blacklist.conf pour backlister les modules snd-pcsp et pcspkr pour arreter les BEEPs.
==== installation du proxy ====
Le proxy ainsi que l'écriture des logs ne devrait pas être sur ce type machine mais placé sur un serveur différent. Le choix du proxy et de ses modules complémentaires dépend de ce qui doit être filtré. Là on va juste installer squid et adzapper pour filtrer la pub:
# apt-get install squid adzapper
Puis il faut ajouter la ligne
redirect_program /usr/bin/adzapper
au fichier /etc/squid/squid.conf
===== Configuration de l'espace utilisateur =====
Créez l'utilisateur si il n'a pas été créé lors de l'installation. On va l'appeler linuxquimper. Il doit appartenir aux groupes video et audio (voir /etc/group). Puis il faut faire une sauvegarde du compte et on le verouille:
# rsync -av /home/linuxquimper /opt/
# passwd -l linuxquimper
On ajoute le serveur X et le gestionnaire de connection automatique nodm:
# apt-get install xorg nodm
==== Choix du navigateur ====
C'est ce qui pose le plus problème car on ne peut pas installer n'mporte quel navigateur. Celui-ci doit avoir les fonctionnalités suivantes:
* pas d'accés aux systèmes de fichiers
* pas d'ouverture de nouvelles fenêtres car on n'installe pas de window manager
* support des onglets
* support de l'html5 avec les balises video, audio et mathml
* support optionnel des plugins pour avoir flash, la lecture de fichier pdf ou autres documents bureautiques directement dans le navigateur.
Actuellement, il n'existe pas de navigateur installable qui porpose directement tout ça, il faut le développer. Le développement peut être basé sur xulrunner-2.0 ou sur webkit en gtk ou qt.
Pour faire une démo de l'installation je suis allez au plus simple même si il ne répond pas à tous les besoins en me basant sur le programme de démo GTkLauncher de webkit. Pour le faire fonctionner on aura besoin de libwebkit-1.0-2. Donc
# apt-get install libwebkit-1.0-2
En principe la compilation du programme doit ce faire sur une autre machine et on a besoin des paquets suivants
# apt-get install build-essential libwebkit-dev
et du code source de GtkLauncher et du [[gtklauncher#makefile|Makefile]].
que l'on installe avec la commande
# make install
==== configuration de la session ====
On configure nodm pour se connecter directement sur le compte linuxquimper en éditant le fichier /etc/default/nodm
# nodm configuration
# Set NODM_ENABLED to something different than 'false' to enable nodm
NODM_ENABLED=true
# User to autologin for
NODM_USER=linuxquimper
# xinit program
NODM_XINIT=/usr/local/bin/xinit
# First vt to try when looking for free VTs
NODM_FIRST_VT=7
# X session
NODM_XSESSION=/etc/X11/Xsession
# Options for the X server
NODM_X_OPTIONS='vt7 -nolisten tcp'
# If an X session will run for less than this time in seconds, nodm will wait an
# increasing bit of time before restarting the session.
NODM_MIN_SESSION_TIME=120
On créer le fichier /usr/local/bin/xinit que l'on rend exécutable:
#!/bin/sh
rsync -a --delete /opt/linuxquimper /home/
exec /usr/bin/xinit "$@"
et on créer le ficher /etc/X11/Xsession.d/98_linuxquimper pour lancer la session. ON ne peut pas utiliser de fichier $HOME/.xsession car on va passer la partition /home en noexec.
# This file is sourced by Xsession(5), not executed.
if [ "$USER" = "linuxquimper" ] ; then
export LANG=fr_FR.UTF-8
// exec xulrunner-2.0 /opt/conkeror/application.ini
exec /opt/GtkLauncher
# Reset default startup
STARTUP=/bin/false
fi
# vim:set ai et sts=2 sw=2 tw=80:
Puis on peut lancer la session utilisateur avec /etc/init.d/nodm start.
===== fin de la configuration =====
Il faut sécuriser l'accés au shell grub en lui métant un mot de passe. On obtient un mot de passe chiffré pour grub avec la commande grub-mkpasswd-pbkdf2. On recupére le résultat de cette commande que l'on met dans un fichier /etc/grub/01_password que l'on rend éxécutable:
#!/bin/sh
set -e
cat <
Pour avoir un boot graphique on peut installer plymouth et ajouter «splash» à la ligne de commande linux
# apt-get install plymouth plymouth-themes-solar
et on édite le fichier /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_LINUX_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
ensuite on peut mettre le fichier grub.cfg à jour
# update-grub
on termine on mettant toutes les partitions sauf / en noexec et / en read-only dans le fichier /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc nodev,noexec,nosuid 0 0
UUID=d240c895-f500-42fb-b34a-1335cf861c1b / ext4 errors=remount-ro,ro 0 1
UUID=0ffae1e9-f09a-4aa5-a8d0-7a681304e8d9 none swap sw 0 0
UUID=cb7b0fac-b92c-4c8c-9792-5a2ea4e1032b /home ext4 defaults,noexec 0 2
UUID=5fe5af3f-f3a8-479e-bd43-e8a77f2df74b /data ext4 defaults,noexec 0 2
/data/log /var/log none bind 0 0
/data/squid /var/spool/squid none bind 0 0
tmpfs /tmp tmpfs defaults,noexec 0 0
tmpfs /var/tmp tmpfs defaults,noexec 0 0
tmpfs /var/run tmpfs defaults,noexec 0 0
## Pas de device externes
#/dev/fd0 /media/floppy0 auto rw,user,noauto,noexec,utf8 0 0
Maintenant on peut rebooter((C'est le premier reboot après l'installation de la base)) pour voir si tout fonctionne correctement.