Chapitre 5. Déploiement et guide des opérations PHP

$Revision: 1.19 $

$Date: 2007/07/07 19:53:15 $

Table des matières

5.1. Installation
5.2. Configuration
5.2.1. Restrictions
5.2.2. Limites
5.2.3. Gestion d'erreurs
5.2.4. Exceptions

Résumé

Rares sont les serveurs Apache qui ne sont pas accompagnés du module PHP permettant d'interpréter des scripts sur le serveur. Après avoir lu le chapitre traitant des questions générales de sécurité (Chapitre 1, Principes généraux), les mots « scripts » et « serveur » dans une même phrase doivent inquiéter. A juste titre. PHP est probablement l'un des vecteurs de nuisances les plus utilisés aujourd'hui. Même s'il est parfois impossible de controller la qualité du code PHP déposée sur votre serveur, on pourra prendre un certain nombre de mesures afin de « limiter les dégats » en cas d'exploitation de ce code. Ce chapitre en présente quelques unes.

5.1. Installation

PHP fonctionne comme module d'Apache. L'installation de PHP consiste donc à installer ce module et à configurer Apache pour l'utiliser.

root@ubuntu:~# apt-get install libapache2-mod-php5
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Reading state information... Fait       
Les paquets supplémentaires suivants seront installés : 
  libxml2 php5-common
Paquets suggérés :
  php-pear
Paquets recommandés :
  xml-core
Les NOUVEAUX paquets suivants seront installés :
  libapache2-mod-php5 libxml2 php5-common
0 mis à jour, 3 nouvellement installés, 0 à enlever et 8...
Il est nécessaire de prendre 2754ko/3515ko dans les archives.
Après dépaquetage, 7782ko d'espace disque supplémentaire...
Souhaitez-vous continuer [O/n] ? O
Réception de : 1 http://security.ubuntu.com feisty-security/main php5-...
Réception de : 2 http://security.ubuntu.com feisty-security/main libap..
2754ko réceptionnés en 1m5s (41,9ko/s)                                                                                                     
Sélection du paquet libxml2 précédemment désélectionné.
(Lecture de la base de données... 16145 fichiers et répertoires déjà install...
Dépaquetage de libxml2 (à partir de .../libxml2_2.6.27.dfsg-1ubuntu3_i386.de...
Sélection du paquet php5-common précédemment désélectionné.
Dépaquetage de php5-common (à partir de .../php5-common_5.2.1-0ubuntu1.2_i38...
Sélection du paquet libapache2-mod-php5 précédemment désélectionné.
Dépaquetage de libapache2-mod-php5 (à partir de .../libapache2-mod-php5_5.2....
Paramétrage de libxml2 (2.6.27.dfsg-1ubuntu3) ...

Paramétrage de php5-common (5.2.1-0ubuntu1.2) ...
Paramétrage de libapache2-mod-php5 (5.2.1-0ubuntu1.2) ...

Creating config file /etc/php5/apache2/php.ini with new version
 * Forcing reload of web server (apache2)...                       [ OK ] 

root@ubuntu:~# 

Lors de l'installation, les fichiers de configuration Apache permettant de charger le module PHP sont installés dans répertoire /etc/apache2/modules-available/. Il suffit donc d'activer le module comme vu précédemment :

root@ubuntu:~# a2enmod php5
Module php5 installed; run /etc/init.d/apache2 force-reload to enable.
root@ubuntu:~# /etc/init.d/apache2 force-reload
 * Forcing reload of web server (apache2)...                       [ OK ] 
root@ubuntu:~# 

On pourra vérifier simplement que PHP est bien installé et fonctionne correctement en créant une page dynamique PHP à la racine du site avec la simple commande :

echo "<? phpinfo(); ?>" > /var/www/index.php

Il suffira ensuite de faire pointer un navigateur sur l'URL http://<ip_serveur>/info.php pour obtenir une page d'information sur le serveur Apache/PHP.

Figure 5.1. PHP Info

PHP Info


Il conviendra de supprimer cette page (ou d'en restreindre l'accès). Les données renvoyées par phpinfo() sont très prisées par les personnes à la recherche de vecteurs de nuisances. Pour la même raison, on évitera de créér une URL info.php contenant un appel à phpinfo(), car cette URL est souvent testée afin d'obtenir des informations sur les version et configurations déployées.