serveur-debian-securite:securiser-php

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveur-debian-securite:securiser-php [15/11/2017 00:50] – Harmonisation des pages zonewebmasterserveur-debian-securite:securiser-php [30/01/2020 18:08] (Version actuelle) zonewebmaster
Ligne 1: Ligne 1:
 +{{htmlmetatags>metatag-description=(PHP est très souvent installé sur un serveur web car c'est un langage de programmation très couramment utilisé. PHP, comme tout langage de scripts, comporte des failles de sécurités intentionnelles ou non. Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation. )
 +metatag-og:image=(https://www1.zonewebmaster.eu/_media/serveur-debian-securite:2-1.jpg)
 +metatag-og:description=(PHP est très souvent installé sur un serveur web car c'est un langage de programmation très couramment utilisé. PHP, comme tout langage de scripts, comporte des failles de sécurités intentionnelles ou non. Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation. )
 +metatag-og:title=(Sécuriser votre PHP - zonewebmaster.eu)
 +metatag-og:type=(article)
 +metatag-og:url=(https://www1.zonewebmaster.eu/serveur-debian-securite:securiser-php)
 +metatag-og:locale=(fr_FR)
 +metatag-og:site_name(zonewebmaster.eu)
 +metatag-article:published_time=(2017-11-27)
 +metatag-article:modified_time=(2020-01-30)
 +metatag-article:author=(montuy337513)
 +metatag-article:tag=(php, php-fpm,hack, sécurisation,help, tuto, wiki, debian)
 +}}
 +
 ====== Sécurisez votre PHP ====== ====== Sécurisez votre PHP ======
  
-PHP est très souvent installé sur un serveur web car c'est un langage de programmation très couramment utilisé. PHP, comme tout langage de scripts, comporte des failles de sécurités intentionnelles ou non. +PHP est très souvent installé sur un serveur web car c'est un langage de programmation très couramment utilisé. PHP, comme tout langage de scripts, comporte des failles de sécurités intentionnelles ou non. Voici comment renforcer **la sécurité de PHP**.\\ 
 Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation (souvent un défaut de validation des entrées) ou par des erreurs dans le fichier de configuration //php.ini//. Ces vulnérabilités s'expliquent par de mauvaises habitudes de programmation (souvent un défaut de validation des entrées) ou par des erreurs dans le fichier de configuration //php.ini//.
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-Fonctionne pour toute version de PHP+Fonctionne pour toute version de PHP-FPM
 </WRAP> </WRAP>
  
 +===== Pré-requis / Difficultés =====
  
-===== Préambule =====+Il faut au préalable avoir installé PHP-FPM (à partir de la version 5.3) pour utiliser ce guide. 
 +Toutes les lignes de commandes sont saisies dans un terminal avec accès administrateur //root//.
  
-Avant de commencer à sécuriser PHP, sachez qu'il existe plusieurs méthodes pour installer PHP. Ces méthodes influences la façon de redémarrer le services PHP.+{{howhard>3}} 
  
-Voici un petit tour rapide des méthodes de redémarrage du service PHP.+{{ :serveur-debian-securite:2-1.jpg?nolink&600 |}}
  
-==== PHP5 est un module de Apache2 ==== +===== Préambule =====
- +
-La méthode est simple +
  
-<code sh+Avant de commencer à sécuriser votre version de PHP, il est important de connaître la version PHP que vous avez installé sur votre machine avec la ligne de commande suivante.\\  
-/etc/init.d/apache2 restart+<code bash
 +versionPHP="$(readlink -f /usr/bin/php | cut -c 13-)"
 </code> </code>
  
-ou pour les versions de Debian récentes+===== Interdire l'exécution de fonctions PHP=====
  
-<code sh>+Certaines fonctions de PHP peuvent directement lancer des scripts à distance qui peuvent être malveillant. Il est donc judicieux, surtout si vous ne les utilisez pas, d'interdire l'utilisation de certaines fonctions de PHP. 
 +Pour cela, nous allons modifier la configuration de //PHP-FPM//
 +Le fichier de configuration se trouve en général à : // /etc/php5/apache2/php.ini // ou // /etc/php5/fpm/php.ini. // 
 + 
 +<code bash> 
 +if [ ! -e "/etc/php/${versionPHP}/fpm/conf.d/50-secure.ini" ]; then 
 +    echo " 
 +    ;Dangerous : disable system functions. This can break some administration softwares. 
 +    disable_functions = symlink,shell_exec,system,exec,proc_close,proc_open,popen,system,dl,passthru,escapeshellarg,escapeshellcmd 
 +" > "/etc/php/${versionPHP}/fpm/conf.d/50-secure.ini" 
 +fi 
 +</code> 
 +Sur //Debian//, nous stockons les fichiers de configuration de **PHP** dans le répertoire // /etc/php/${versionPHP}/fpm/conf.d //.\\ 
 +Le nom du fichier de configuration s'écrit par convention priorite-nom_fichier.ini, //priorite// fixe le niveau de priorité du fichier (99 étant le plus haut). Par convention, nous le fixons à 50. Le nom du fichier de configuration sera donc //50-secure.ini//.\\ 
 +Le //if// permet de vérifier si le fichier 50-secure.ini existe ou pas. 
 + 
 +Il ne reste plus qu'a redémarrer //php-fpm// et //apache2//
 +<code bash> 
 +service "php${versionPHP}-fpm" restart
 service apache2 restart service apache2 restart
 </code> </code>
  
-==== php5-fpm est installé ====+===== Supprimer l'exposition de la version de PHP =====
  
-Ici, c'est un poil plus complexe, il faut relancer //php5-fpm// et //apache2//+Nous pouvons aussi supprimer l'affichage de la version de PHP. Même principe que précédemment. 
 +<code bash> 
 +if [ ! -e "/etc/php/${versionPHP}/fpm/conf.d/50-version_exposure.ini" ]; then 
 +    echo " 
 +; Disable PHP exposure 
 +expose_php = Off 
 +" > "/etc/php/${versionPHP}/fpm/conf.d/50-version_exposure.ini" 
 +fi 
 +</code>
  
-<code sh+Et nous relançons //php-fpm// et //apache2//
-service php5-fpm restart+<code bash
 +service "php${versionPHP}-fpmrestart
 service apache2 restart service apache2 restart
 </code> </code>
  
 +===== Vérification des paramètres par défaut =====
  
-===== Interdire des fonctions ===== +Par mesure de sécuritéil vaut mieux vérifier les paramètres suivants dans les fichiers //php.ini//.
- +
-Certaines fonctions de PHP peuvent directement lancer des scripts à distance qui peuvent être malveillant. Il est donc judicieuxsurtout si vous ne les utilisez pas, d'interdire l'utilisation de certaines fonctions de PHP. +
-Pour cela, nous allons modifier ou rajouter cette ligne dans le fichier de configuration //php.ini//. +
-Le fichier de configuration se trouve en général à : // /etc/php5/apache2/php.ini // ou // /etc/php5/fpm/php.ini. //+
  
-<code> +<code php
-disable_functions exec,passthru,popen,proc_open,shell_exec,system+safe_mode Off 
 +safe_mode_gid = Off 
 +memory_limit = -1 
 +display_errors = Off 
 +display_startup_errors = Off 
 +register_globals = Off 
 +magic_quotes_gpc = Off 
 +magic_quotes_runtime = Off 
 +allow_url_fopen = Off 
 +allow_url_include = Off
 </code> </code>
 +Pour le paramètre //memory_limit// si votre machine possède une mémoire limitée mieux vaut mettre la valeur à 128MB (valeur par défaut).\\
 +Pour le paramètre //allow_url_fopen//, si vous devez utiliser la fonction //fopen// dans vos scripts, mettre cette valeur à ON
  
-Si vous avez aussi installé le paquet **php5-cli** pour lancer des scripts PHP directement en ligne de commande, il existe un autre fichier de configuration : // /etc/php5/cli/php.ini //+===== Aller plus loin =====
  
-Une fois les modifications effectuées, relancer le service PHP.+Si vous avez aussi installé le paquet **php-cli** pour lancer des scripts PHP directement en ligne de commande (une tâche CRON par exemple), vous pouvez modifier les commandes ci-dessus pour sécuriser **php-cli**. Il suffit de remplacer **fpm** par **cli** dans les lignes de commandes.
  
 +Une fois les modifications effectuées, relancer les services //PHP-FPM// et //apache2//.
  
-===== Vérification des paramètres par défaut ===== +===== Notes de version =====
- +
-Par mesure de sécurité, il vaut mieux vérifier les paramètres suivants. +
- +
-//safe_mode = Off// +
-//safe_mode_gid = Off// +
-//memory_limit = -1// +
-//display_errors = Off// +
-//display_startup_errors = Off// +
-//register_globals Off// +
-//magic_quotes_gpc Off// +
-//magic_quotes_runtime Off// +
-//allow_url_fopen Off// +
-//allow_url_include Off// +
- +
-Pour le paramètre //memory_limit// si votre machine possède une mémoire limitée mieux vaut mettre la valeur à 128MB (valeur par défaut). +
-Pour le paramètre //allow_url_fopen//, si vous devez utiliser la fonction //fopen// dans vos scripts, mettre cette valeur à ON+
  
 +  * [27/11/2017] : Création de l'article
 +  * [30/01/2020] : Mise à jour complet du guide
  
 ===== Auteurs et sources ===== ===== Auteurs et sources =====
Ligne 79: Ligne 116:
 ===== Navigation ===== ===== Navigation =====
  
-  * [[:accueil|Accueil]] +{{page>:navigation#serveur-debian-php}} 
-  * [[:serveur-debian-securite]] +{{page>:navigation#serveur-dedie-debian}}
-  * [[:serveur-debian-general]] +
-  * [[:serveur-debian-automatisation]] +
-  * [[:serveur-debian-file]] +
-  * [[:serveur-debian-log]] +
-  * [[:serveur-debian-user-groupe]] +
-  * [[:serveur-debian-apache2]] +
-  * [[:serveur-debian-postfix]] +
-  * [[:serveur-debian-mysql]] +
-  * [[:serveur-debian-divers]]+
  
 <nspages -h1 -exclude:subNs: -textPages="Autres liens rapides pouvant vous intéresser"> <nspages -h1 -exclude:subNs: -textPages="Autres liens rapides pouvant vous intéresser">
  • serveur-debian-securite/securiser-php.1510703431.txt.gz
  • Dernière modification : 08/10/2019 16:40
  • (modification externe)