Optimisation des configurations php.ini et php-fpm pour la sécurité et les performances

Les fichiers de configuration PHP, tels que php.ini et php-fpm.conf, jouent un rôle crucial dans l'optimisation des serveurs web, que ce soit pour Apache ou Nginx. Voici des recommandations pour améliorer la sécurité et l'efficacité.

  • Activation du mode sécurisé : Le mode sécurisé de PHP permet de restreindre l'exécution de fonctions potentiellement dangereuses. Configurez le paramètre suivant : ``` safe_mode = On
    
    Cela vérifie que le script et les fichiers manipulés appartiennent au même propriétaire.
    
  • Sécurité des groupes d'utilisateurs : Lorsque le mode sécurisé est actif, désactivez l'accès basé sur les groupes pour éviter des vulnérabilités : ``` safe_mode_gid = Off
    
    Par défaut, cette option est désactivée dans PHP 5.3.27.
    
  • Désatcivation des fonctions risquées : Pour empêcher l'exécution de commandes système, ajoutez : ``` disable_functions = exec, passthru, shell_exec, system, popen, phpinfo
    
    Cela bloque ces fonctions même sans le mode sécurisé.
    
  • Masquage des informations PHP : Évitez de divulguer la version de PHP dans les en-têtes HTTP : ``` expose_php = Off
    
    Cela réduit les risques d'attaques ciblées.
    
  • Désenregistrement des variables globales : Pour empêcher l'enregistrement automatique des variables soumises via POST ou GET : ``` register_globals = Off
    
    Cela renforce la sécurité en limitant l'accès direct aux données.
    
  • Prévention des injections SQL : Activez l'échappement automatique des caractères spéciaux : ``` magic_quotes_gpc = On
    
    Cela convertit les apostrophes et autres symboles pour prévenir les injections SQL.
    
  • Gestion des erreurs : Désactivez l'affichage des erreurs en production et activez la journalisation : ``` display_errors = Off log_errors = On error_log = /var/log/php_errors.log
    
    Assurez-vous que le fichier de log a les permissions d'écriture adéquates.
    
  • Limitatino des ressources :
    • Temps d'exécution maximal par script : ``` max_execution_time = 30
      
      Réglez sur 0 pour aucune limite, mais cela peut causer des problèmes de performance.
      
    • Limite de mémoire par script : ``` memory_limit = 128M
      
      Utilisez -1 pour désactiver la limite, mais cela risque d'épuiser les ressources.
      
    • Temps maximal d'analyse des entrées : ``` max_input_time = 60
      
      Cela affecte le traitement des données POST, GET et uploads.
      
    • Taille maximale des fichiers uploadés : ``` upload_max_filesize = 10M
      
      Augmentez cette valeur selon les besoins, par exemple pour les applications multimédias.
      
  • Paramètres de sécurité supplémentaires :
    • Empêcher l'ouverture d'URL distantes pour éviter les failles d'inclusion : ``` allow_url_fopen = Off
      
      Cela bloque l'accès à des fichiers externes via des variables non sécurisées.
      
    • Corriger les problèmes d'analyse des chemins pour Nginx : ``` cgi.fix_pathinfo = 0
      
      Cela renforce la sécurité en désactivant la résolution automatique des chemins.
      
  • Gestion des sessions : Pour une architecture distribuée, utilisez un stockage partagé : ``` session.save_handler = memcache session.save_path = "tcp://192.168.1.50:11211"
    
    Cela permet de partager les sessions entre plusieurs serveurs via Memcached. L'adresse IP et le port doivent correspondre à votre configuration Memcached.
    
    

Pour les serveurs utilisant php-fpm avec Nginx, voici des paramètres recommandés dans php-fpm.conf :

pid = /run/php-fpm.pid
error_log = /var/log/php-fpm_error.log
log_level = warning
rlimit_files = 65535
events.mechanism = epoll
listen.owner = www-data
listen.group = www-data
pm.max_children = 512
pm.start_servers = 32
pm.min_spare_servers = 10
pm.max_spare_servers = 50
pm.process_idle_timeout = 10s
pm.max_requests = 1024
slowlog = /var/log/php-fpm_slow.log
request_slowlog_timeout = 5

Pour améliorer les performences, activez et configurez OPcache dans php.ini :

opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.revalidate_freq = 300
opcache.fast_shutdown = 1
opcache.enable_cli = 0

Étiquettes: PHP php-fpm opcache memcache nginx

Publié le 8 juillet à 20h29