Ceci est une ancienne révision du document !


Titre_page

Retour à la liste des tutoriels

Présentation rapide.
Prérequis
  • Aucun prérequis pour ce tutoriel.


grand1

lorem ipsum


Liens

++But : Installer et configurer [PHP|tag:PHP].++ %''(mis à jour pour Ubuntu 10.04 /php5.3 - 02/07/2010)'' % !!!! I) [Installation|tag:Installation] de PHP /[bash] apt-get install php5 / PHP est maintenant installé sur notre serveur, et est automatiquement intégré à Apache ! %Le script d'installation à même eu la délicatesse de mettre à jour la configuration d'Apache et de le relancer :-) % % !!!! II) [Sécurisation|tag:Sécurisation] / configuration de PHP La configuration de PHP s'effectue en éditant le fichier __ /etc/php5/apache2/php.ini__ . %Nous allons tout de suite utiliser le fichier de configuration PHP recommandé pour un environnement de prod : (et faire un backup du fichier actuel) /[bash] cd /etc/php5/apache2/ mv php.ini php.ini.back cp /usr/share/doc/php5-common/examples/php.ini-recommended ./php.ini / !!! 1) [SafeMode|tag:SafeMode] Nous n'allons pas activer cette fonctionnalité de PHP qui est devenue obsolète avec la version 5.3.0 de PHP :) %[Doc. PHP|http://php.net/manual/fr/features.safe-mode.php|fr] !!! 2) disable_functions Nous allons désactiver certaines fonctions de PHP pouvant mettre en péril la sécurité du serveur ! !! A) chgrp Permet de modifier le groupe d'un fichier. %Cette fonction est partiellement inhibée par la modification du fichier /etc/apache2/conf.d/security → 1) Directory / . %[Doc. PHP|http://fr.php.net/manual/fr/function.disk-free-space.php|fr] !! B) disk_free_space Retourne l'espace disque disponible sur la partition. Une personne malveillante pourrait l'utiliser pour savoir si elle peut saturer le disque ou non. %Cette fonction est partiellement inhibée par la modification du fichier /etc/apache2/conf.d/security → 1) Directory / . %[Doc. PHP|http://fr.php.net/manual/fr/function.disk-free-space.php|fr] !! C) disk_total_space 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|http://fr.php.net/manual/fr/function.disk-total-space.php|fr] !! D) diskfreespace Alias de disk_free_space %[Doc. PHP|http://fr.php.net/manual/fr/function.disk-free-space.php|fr] !! E) dl Charge des extensions PHP à la volée. Ce genre d'action n'a pas à être mis en place dans un script ! %[Doc. PHP|http://fr2.php.net/manual/fr/function.dl.php|fr] !! F) exec Permet d'exécuter une commande (comme si elle était saisie dans le shell). Faille de sécurité monstrueuse :) %[Doc. PHP|http://fr2.php.net/manual/fr/function.exec.php|fr] !! G) ini_alter, ini_set, ini_restore Permettent de modifier certaines valeurs de la configuration effectuée dans le fichier php.ini . %Si certaines valeurs doivent être ajustées, ce ne sera pas par l'utilisateur, mais par l'administrateur du serveur :) %[Doc. PHP|http://fr2.php.net/manual/fr/ini.list.php|fr] !! H) leak 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 futur :) !! I) passthru 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|http://fr2.php.net/manual/fr/function.passthru.php|fr] !! J) popen 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|http://fr2.php.net/manual/fr/function.popen.php|fr] !! K) pclose Ferme un flux de fichier ouvert avec popen. %[Doc. PHP|http://fr2.php.net/manual/fr/function.pclose.php|fr] !! L) proc_close, proc_get_status, proc_nice, proc_open, proc_terminate Fonctions similaires au popen / pclose. %[Doc. PHP - proc_close|http://fr2.php.net/manual/fr/function.proc-close.php|fr] %[Doc. PHP - proc_get_status|http://fr2.php.net/manual/fr/function.proc-get-status.php|fr] %[Doc. PHP - proc_nice|http://fr2.php.net/manual/fr/function.proc-nice.php|fr] %[Doc. PHP - proc_open|http://fr2.php.net/manual/fr/function.proc-open.php|fr] %[Doc. PHP - proc_terminate|http://fr2.php.net/manual/fr/function.proc-terminate.php|fr] !! M) putenv, apache_setenv Définit la valeur d'une variable d'environnement. Ce genre de configuration n'a pas à être effectuée à travers un script ! %[Doc. PHP|http://fr2.php.net/manual/fr/function.putenv.php|fr] %[Doc. PHP|http://fr2.php.net/manual/fr/function.apache-setenv.php|fr] !! N) set_include_path Cette commande permet de modifier le path accessible par nos scripts. %Nous le définirons à l'endroit précis voulu ultérieurement avec openbasedir. [Doc. PHP|http://fr2.php.net/manual/fr/function.set-include-path.php|fr] !! O) set_time_limit, ignore_user_abort, apache_reset_timeout 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|http://fr2.php.net/manual/fr/function.set-time-limit.php|fr] %[Doc. PHP - ignore_user_abort|http://fr2.php.net/manual/fr/function.ignore-user-abort.php|fr] %[Doc. PHP - apache_reset_timeout|http://fr2.php.net/manual/fr/function.apache-reset-timeout.php|fr] !! P) shell_exec, system Exécute des commandes au niveau du shell, et retourne le résultat. %[Doc. PHP - shell_exec|http://fr2.php.net/manual/fr/function.shell-exec.php|fr] %[Doc. PHP - system|http://fr2.php.net/manual/fr/function.system.php|fr] !! Q) syslog Permet d'insérer des entrées dans le journal du système. %[Doc. PHP|http://fr.php.net/manual/fr/function.syslog.php|fr]

La configuration devient donc : /[php] 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 /

!!! 3) expose_php Définit sur PHP doit-être annoncé à vos visiteurs comme installé sur votre serveur (entête). %Autant oublie de dire à nos visiteurs que nous avons PHP, cela pourra toujours nous cacher un peu :) [Doc. PHP|http://php.net/manual/fr/ini.core.php#ini.expose-php|fr] /[php] expose_php = Off /

!!! 4) max_execution_time 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|http://www.php.net/manual/fr/info.configuration.php#ini.max-execution-time|fr]

!!! 5) memory_limit Quantité maximale de RAM qu'un script PHP peut utiliser. %Ne possédant que 128Mo de RAM sur ma machine, je vais le définir à 64M. %Je devrais diminuer encore cette valeur, mais vait mettre en ligne un site gourmand en mémoire ;-) %[Doc. PHP|http://php.net/manual/fr/ini.core.php#ini.memory-limit|fr] !!! 6) File uploads L'envoi de fichier sur le serveur est autorisé. %Je vais définir upload_tmp_dit sur /tmp (pour être sur que les fichiers temporaires sont bien mis dans un répertoire système temporaire). %Je vais fichier upload_max_filesize à 5M (au lieu de 2) pour les besins d'un de mes sites :-) %Attention à être cohérent entre upload_max_filesize (taille max d'un fichier envoyé) et post_max_size (quantité maximale de données envoyées à une page PHP)

!!! 7) session.save_path Cette directive sert à définir 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. Toutefois 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 user-web:www-data ; chmod 770) /[php] session.save_path = /var/www/sessions /