Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Création d'un serveur HTTP (Lighty) + PHP + SQLite

Note préliminaire :

Dans ce tutoriel, nous supposons un hôte :

  • de nom server.exemple.com
  • d'adresse IP 192.168.0.31.

Modifiez ces paramètres selon vos besoins.

Un serveur lighttpd permet de construire un site web accessible via le réseau local (LAN).

En configurant le routeur et le pare-feu, vous pouvez ouvrir l'accès au site via l'Internet (en faisant attention à la sécurité).

Arborescence de lighty

Voici les dossiers et fichiers importants de lighty (les fichiers sont en italique, ceux qui nous servent sont en jaune et soulignés):

/etc
lighttpd
lighttpd.conf
conf–available :
répertoire des configurations complémentaires
40–config.conf :
configuration générale
50–modulexxx.conf :
configuration du module modulexxx
90–vhost–xxx.yyy.tld.conf :
configuration de l'hôte virtuel xxx.yyy.tld
etc.
/var /srv
/www
racine par défaut du site
/www
racine par défaut du site
log
lighttpd
access.log
error.log
  • /etc/lighttpd/ : répertoire des configurations
    • lighttpd.conf : configuration par défaut ; nous n'y touchons pas.
    • conf–available/ : répertoire des configurations complémentaires ; c'est ici que nous travaillerons. Pour cela, nous créerons des fichiers :
      • 40–config.conf : configuration générale
      • 50–modulexxx.conf : configuration du module xxx
      • 90–vhost–xxx.yyy.tld.conf : configuration de l'hôte virtuel xxx.yyy.tld
  • /srv/www/ : racine par défaut du site (reportée depuis /var/www par montage)
  • /var/log/lighttpd/ : répertoire des journaux du serveur
    • access.log : journal des pages traitées par le serveur
    • error.log : journal des erreurs

Pour ne pas toucher au fichier de configuration par défaut /etc/lighttpd/lighttpd.conf, livré avec l'application, nous ne travaillerons que dans le répertoire /etc/lighttpd/conf-available/. Ainsi, les réglages ne seront pas affectés par les mises à jour et les migrations seront simplifiées (il suffira de récupérer le fichier de configuration).

Dans ce dossier, nous placerons :

  • les réglages généraux dans un fichier spécifique /etc/lighttpd/conf-available/40–config.conf
  • les réglages des modules (fichiers /etc/lighttpd/conf-available/50–modulexxx.conf)
  • les hôtes virtuels (fichiers 90–vhost–xxx.yyy.tld.conf)

Le dossier /var/log/lighttpd/ contient les journaux (accès : access.log, erreurs : error.log)

Le dossier /srv/www/ est la racine du site, de même que /var/www (par montage).

Configuration

PhpPgAdmin

Créez avec les droits d'administration le fichier /etc/lighttpd/conf-available/50-phppgadmin.conf pour y écrire ceci :

/etc/lighttpd/conf-available/50-phppgadmin.conf
# PhpPgAdmin :
alias.url += ( "/phppgadmin" => "/usr/share/phppgadmin/")alias.url += ( "/phppgadmin" => "/usr/share/phppgadmin/")

Activez cette configuration en lançant :

...@...:~ $ sudo lighty-enable-mod phppgadmin

Hôtes virtuels (vhost)

vhosts utilisateur

Chaque utilisateur du système a accès à son home personnel et à un sous-répertoire public_html de son home. Il suffit de créer cette arborescence pour qu'elle soit aussitôt utilisable.

users.domaine.tld
$HTTP["host"] =~ "users\.domaine\.tld" {
    evhost.path-pattern = "/home/%4/public_html/" 
}

Si johndoe est un user, l'adresse http://johndoe.users.example.org//home/johndoe/public_html/

Méthode plus générale

Toujours pour l'utilisateur johndoe,

users.domaine.tld
$HTTP["host"] =~ "users\.domaine\.tld" {
    server.document-root = "/home/%4/sites/default/site"
    evhost.path-pattern  = "/home/%4/sites/%0/site/"
}
  • Si johndoe.users.domaine.tld est demandé, et que /home/johndoe/sites/domaine.tld/site/ est trouvé, ce chemin devient la docroot.
  • Si johndoe.users.domaine.tld est demandé mais qu'il n'existe pas de répertoire /home/johndoe/sites/domaine.tld/site/, alors la docroot reste /home/johndoe/sites/default/site.

Rendre le serveur disponible sur Internet

Il reste à rediriger le port 80 (en TCP) vers la machine qui supporte le serveur http, comme ceci :

paramètres de la freebox → mode avancé → réseau local/redirection de ports :

ajouter une redirection,

  • port de début : 80
  • port de fin : 80
  • TCP
  • choisir l'IP de la machine qui supporte le serveur
  • commentaire : par exemple, serveur http framboise

Pare-feu

Installez le paquet arno-iptables-firewall ou en ligne de commande :

$ sudo apt install arno-iptables-firewall

Pendant l'installation, il vous posera quelques questions pour configurer le parefeu :

Fail2ban

Fail2ban est sans doute le logiciel le plus important pour protéger votre serveur.

Principe : si un attaquant échoue plus de 3 fois (par exemple) à se connecter au serveur, alors son IP est bannie (automatiquement avec iptables).

Fail2ban fonctionne avec ssh, mais aussi le serveur mail postfix et dovecot, ainsi que d'autres services comme le ftp!

Pour l'installer :

$ sudo apt-get install fail2ban

Pour le configurer, éditez avec les droits d'administration le fichier /etc/fail2ban/jail.conf pour le modifier comme ceci :

Précisez :

  • enabled = true pour les services que vous souhaitez protéger,
  • ainsi que le nombre maximum de tentatives permises dans maxretry (par défaut, maxretry = 3).

Utilisation

Lancez l'application.

Désinstallation

Pour supprimer cette application, il suffit de supprimer son paquet.

Voir aussi

Basé sur http://redmine.lighttpd.net/projects/lighttpd/wiki par lighttpd.