serveur-debian-securite:securiser-php

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
serveur-debian-securite:securiser-php [16/08/2015 16:26] – créée 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 =====
  
-===== Interdire des fonctions =====+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//.
  
-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. +{{howhard>3}} 
-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 //.+
  
-<code> +{{ :serveur-debian-securite:2-1.jpg?nolink&600 |}} 
-disable_functions exec,passthru,popen,proc_open,shell_exec,system+ 
 +===== Préambule ===== 
 + 
 +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.\\  
 +<code bash
 +versionPHP="$(readlink -f /usr/bin/php | cut -c 13-)"
 </code> </code>
  
-Si vous avez aussi installé le paquet **php5-cli** pour lancer des scripts PHP directement en ligne de commande, il existe un deuxième fichier de configuration : // /etc/php5/cli/php.ini //+===== Interdire l'exécution de fonctions PHP=====
  
-Puis relancer le service apache avec la commande suivante :+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> +<code bash
-/etc/init.d/apache2/restart+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> </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
 +</code>
  
 +===== Supprimer l'exposition de la version de PHP =====
  
-===== Vérification des paramètres par défaut =====+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>
  
 +Et nous relançons //php-fpm// et //apache2//.
 +<code bash>
 +service "php${versionPHP}-fpm" restart
 +service apache2 restart
 +</code>
  
-Par mesure de sécurité, il vaut mieux vérifier les paramètres suivants.+===== Vérification des paramètres par défaut =====
  
-//safe_mode = Off// +Par mesure de sécurité, il vaut mieux vérifier les paramètres suivants dans les fichiers //php.ini//.
-//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).+<code php> 
 +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> 
 +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 Pour le paramètre //allow_url_fopen//, si vous devez utiliser la fonction //fopen// dans vos scripts, mettre cette valeur à ON
  
 +===== Aller plus loin =====
 +
 +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//.
 +
 +===== Notes de version =====
 +
 +  * [27/11/2017] : Création de l'article
 +  * [30/01/2020] : Mise à jour complet du guide
 +
 +===== Auteurs et sources =====
 +
 +  * Auteur : [[:user:montuy337513]]
 +
 +===== Navigation =====
 +
 +{{page>:navigation#serveur-debian-php}}
 +{{page>:navigation#serveur-dedie-debian}}
 +
 +<nspages -h1 -exclude:subNs: -textPages="Autres liens rapides pouvant vous intéresser">
  • serveur-debian-securite/securiser-php.1439735171.txt.gz
  • Dernière modification : 08/10/2019 16:40
  • (modification externe)