Retour à la liste des tutoriels
apt-get install php5
PHP est maintenant installé sur notre serveur, et est automatiquement intégré à Apache.
Le script d'installation a mis à jour automatiquement la configuration d'Apache, et l'a relancer pour prendre en compte les modifications.
La configuration de PHP s'effectue en éditant le fichier /etc/php5/apache2/php.ini .
Avant toute chose, j'effectue une sauvegarde du fichier de configuration original
cd /etc/php5/apache2/ mv php.ini php.ini.back
Et je vais me baser sur le fichier de configuration recommandé pour un environnement de production
cp /usr/share/doc/php5-common/examples/php.ini-recommended ./php.ini
cp /usr/share/php5/php.ini-production ./php.ini
Nous n'allons pas activer cette fonctionnalité de PHP qui est devenue obsolète avec la version 5.3.0 de PHP !
Doc. PHP
Toutefois, je recommande de les appliquer : ceci peut permettre de réduire l'impact d'une faille dans un de vos logiciels !
Nous allons désactiver certaines fonctions de PHP pouvant mettre en péril la sécurité du serveur.
Permet de modifier le groupe propriétaire d'un fichier.
Les mauvaises utilisations de cette fonction sont partiellement inhibées par la modification du fichier /etc/apache2/conf.d/security → Directory / .
Doc. PHP
Retourne l'espace disque disponible sur la partition. Une personne malveillante pourrait l'utiliser pour savoir si elle peut saturer le disque ou non.
Doc. PHP
Retourne l'espace disque utilisé sur la partition. Une personne malveillante pourrait l'utiliser pour savoir si elle peut saturer le disque ou non.
Doc. PHP
Alias de disk_free_space
Doc. PHP
Charge des extensions PHP à la volée. Ce genre d'action n'a pas à être mis en place dans un script !
Doc. PHP
Permet d'exécuter une commande (comme si elle était saisie dans le shell). Faille de sécurité monstrueuse !
Doc. PHP
Permettent de modifier certaines valeurs de la configuration effectuée dans le fichier php.ini .
Si certaines valeurs doivent être ajustées, l'administrateur du serveur peut les définir dans le fichier de configuration Apache.
Doc. PHP
Cette fonction permet d'allouer de la mémoire.
Toutefois, elle n'est présente que si PHP à été compilé avec l'option debug-mode.
Autant la supprimer pour éviter tout risque.
Exécute une requête au niveau du shell et retourne le résultat.
Cette fonction est une faille de sécurité monstrueuse également !
Doc. PHP
Exécute une commande au niveau du shell et retourne un pointeur de fichier.
Cette commande peut-être utilisée pour passer des commandes et est donc à proscrire.
Doc. PHP
Ferme un flux de fichier ouvert avec popen.
Doc. PHP
Fonctions similaires au popen / pclose.
Doc. PHP - proc_close
Doc. PHP - proc_get_status
Doc. PHP - proc_nice
Doc. PHP - proc_open
Doc. PHP - proc_terminate
Définit la valeur d'une variable d'environnement. Ce genre de configuration n'a pas à être effectuée à travers un script !
Doc. PHP - putenv
Doc. PHP - setenv
Cette commande permet de modifier le path accessible par nos scripts.
Nous le définirons à l'endroit précis voulu ultérieurement avec openbasedir (dans le fichier de configuration Apache).
Doc. PHP
Permet de modifier la configuration PHP quand à la durée d'exécution d'un script, ou les paramètres d'arrêt.
Doc. PHP - set_time_limit
Doc. PHP - ignore_user_abort
Doc. PHP - apache_reset_timeout
Exécute des commandes au niveau du shell, et retourne le résultat.
Doc. PHP - shell_exec
Doc. PHP - system
Permet d'insérer des entrées dans le journal du système.
Doc. PHP
La configuration devient donc :
disable_functions = chgrp, disk_free_space, disk_total_space, diskfreespace, dl, exec, ini_alter, ini_set, ini_restore, leak, popen, pclose, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, putenv, apache_setenv, set_include_path, set_time_limit, ignore_user_abort, apache_reset_timeout, shell_exec, system, syslog
Définit si PHP doit-être annoncé à vos visiteurs comme étant installé sur votre serveur (entête).
Je n'indique pas à mes visiteurs que mon serveur exécute PHP : cela ne leur apporte rien, et peut protéger mon serveur contre une attaque ciblée.
Doc. PHP
expose_php = Off
Définit la durée maximale d'exécution d'un script PHP.
Par défaut la valeur est 30 secondes, à n'augmenter que si vos scripts n'ont pas le temps de s'exécuter entièrement !
Doc. PHP
Quantité maximale de RAM qu'un script PHP peut utiliser.
La valeur par défaut est de 128 Mo maximum par exécution du script.
Adaptez la valeur à la quantité de RAM que vous possédez.
Doc. PHP
L'envoi de fichier sur le serveur est autorisé.
Je vais définir upload_tmp_dir
sur /tmp (répertoire temporaire du système dont le contenu est effacé à chaque redémarrage du serveur).
Je vais définir upload_max_filesize
à 5M (au lieu de 2) pour les besoins d'un de mes sites.
Attention à être cohérent entre upload_max_filesize
(taille maximale d'un fichier envoyé) et post_max_size
(quantité maximale de données envoyées à une page PHP).
Doc. PHP - upload_max_filesize
Doc. PHP - upload_tmp_dir
Doc. PHP - post_max_size
Définit le répertoire dans lequel PHP enregistre les sessions des visiteurs de votre site.
Il faut un chmod de 600 minimum sur ce répertoire.
Je pensais utiliser le répertoire /tmp (chmod 777) principalement pour son auto-effacement à chaque relance du système.
Je ne l'ai pas fait car tous mes sites web ont accès à ce répertoire (servant à stocker temporairement les fichiers envoyés par exemple).
Laisser le répertoire de sessions dans /tmp représente donc une faille de sécurité !
J'ai donc créé un répertoire sessions dans /var/www (propriétaire www-data:www-data ; chmod 700)
session.save_path = /var/www/sessions
Pour chaque nouvelle session crée via un script PHP, un fichier sera créé dans /var/www/sessions .
Il faut vider de temps en temps les fichiers correspondant à une session qui n'est plus utilisée. Pour cela, PHP intègre une probabilité d'exécution d'un processus de nettoyage (garbage collector) lorsqu'une nouvelle session est créée.
J'utilise la valeur par défaut : une probabilité de 1 / 1000.
session.gc_probability = 1
Doc. PHP - session.gc-probability