Ce n’est pas plus intelligent que PHP est l’un des langages de programmation de script de serveur les plus utilisés. Il est logique pour un attaquant de trouver différentes façons de manipuler PHP car il est souvent associé à MySQL et permettre l’accès aux données privées de vos utilisateurs.
En aucun cas, nous ne prétendons PHP est vulnérable ou a des problèmes sérieux par défaut, mais nous devons nous assurer que nous peaufinons PHP de telle sorte qu’il peut être plus robuste que jamais.
1. Supprimer les modules PHP inutiles
Par défaut, vous obtenez un ensemble de PHP modules qui peuvent être utiles dans diverses tâches, mais certains modules inutiles peuvent ne pas être utiles pour chaque projet. Liste disponible PHP modules, utilisez la commande donnée :
$ php -m
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 1 Lister Les Modules Php](https://www.tecmint.com/wp-content/uploads/2012/12/List-PHP-Modules.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 2 Lister Les Modules Php](https://www.tecmint.com/wp-content/uploads/2012/12/List-PHP-Modules.png)
Les modules sont situés à /etc/php.d/
répertoire et peut facilement changer notre répertoire actuel en /etc/php.d/ en utilisant la commande cd suivante.
cd /etc/php.d/
La raison pour laquelle nous changeons de répertoire pour supprimer des modules est que les modules sont nommés de manière assez différente dans le répertoire d’origine. Maintenant, répertoriez les modules disponibles par la commande donnée :
$ ls
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 3 Vérifier Les Modules Php](https://www.tecmint.com/wp-content/uploads/2012/12/Listing-PHP-Modules.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 4 Vérifier Les Modules Php](https://www.tecmint.com/wp-content/uploads/2012/12/Listing-PHP-Modules.png)
Par exemple, supprimons le boucle module en utilisant la commande donnée :
$ sudo rm -r 20-curl.ini
2. Désactiver l’exécution de code PHP à distance
Dans la plupart des cas, les connexions à distance ne sont pas fiables. En désactivant l’accès à ouvrir wrappers, ils ne peuvent accéder qu’aux fichiers locaux. Pour désactiver fopen, nous devons ouvrir le fichier de configuration PHP en utilisant la commande donnée :
$ sudo nano /etc/php.ini
Maintenant, utilisez CRTL + w
et tapez allow_url_fopen
qui nous amènera sur des lignes spécifiques à partir desquelles nous désactiverons ces options.
allow_url_fopen=Off allow_url_include=Off
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 5 Désactiver L'Exécution De Code Php À Distance](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-Remote-PHP-Code-Execution.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 6 Désactiver L'Exécution De Code Php À Distance](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-Remote-PHP-Code-Execution.png)
Une fois que vous avez terminé les modifications, enregistrez le fichier de configuration en CTRL + O
et frappe Entrer.
3. Désactiver la fuite d’informations PHP
Lorsqu’il n’est pas désactivé, le monde peut facilement identifier quelle version de PHP est actuellement utilisé par notre serveur Web. Cela peut ne pas sembler un gros problème, mais informer l’attaquant de la version exacte peut être dangereux.
$ sudo nano /etc/php.ini
Maintenant, changez les valeurs par défaut en “Off”
.
expose_php=Off
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 7 Désactiver La Fuite D'Informations Php](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-PHP-Information-Leakage.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 8 Désactiver La Fuite D'Informations Php](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-PHP-Information-Leakage.png)
4. Désactiver les journaux d’erreurs PHP
Par défaut, chaque erreur de notre serveur Web est visible par nos visiteurs, y compris les attaquants. Pour nous assurer qu’aucune des erreurs n’est visible par quiconque, nous devons apporter des modifications à notre fichier de configuration PHP.
$ sudo nano /etc/php.ini
Et modifiez le paramètre par défaut d’affichage des journaux d’erreurs en “Off”
.
display_errors = Of
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 9 Désactiver Les Journaux D'Erreurs Php](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-PHP-Error-Logs.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 10 Désactiver Les Journaux D'Erreurs Php](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-PHP-Error-Logs.png)
Mais que se passe-t-il si vous êtes un développeur et que vous avez besoin de journaux d’erreurs pour résoudre les problèmes de développement ? Ne vous inquiétez pas, il existe un moyen d’obtenir vos fichiers journaux en apportant simplement une légère modification au même fichier de configuration.
Nous devons juste activer log_errors et donner un chemin à error_log où nos fichiers journaux seront stockés.
log_errors=On error_log=/var/log/httpd/php_scripts_error.log
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 11 Activer Les Journaux D'Erreurs En Php](https://www.tecmint.com/wp-content/uploads/2022/06/Enable-Error-Logs-in-PHP.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 12 Activer Les Journaux D'Erreurs En Php](https://www.tecmint.com/wp-content/uploads/2022/06/Enable-Error-Logs-in-PHP.png)
5. Contrôle des ressources PHP
Selon nous, la gestion des ressources est la partie la plus cruciale lors de la sécurisation PHP. Ici, nous allons allouer une quantité fixe de temps d’exécution, de temps d’entrée et de limite de mémoire, donc si notre script est compromis d’une manière ou d’une autre, l’exécution sera arrêtée après un certain temps.
Nous avons choisi 25 secondes pour le temps d’exécution et d’entrée et 30 Mo de limite de mémoire. Bien sûr, vous pouvez le personnaliser selon vos besoins.
max_execution_time = 25 max_input_time = 25 memory_limit = 30M
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 13 Contrôle Des Ressources Php](https://www.tecmint.com/wp-content/uploads/2012/12/PHP-Resource-Control.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 14 Contrôle Des Ressources Php](https://www.tecmint.com/wp-content/uploads/2012/12/PHP-Resource-Control.png)
6. Restreindre l’accès aux fichiers PHP
Pour restreindre l’accès aux fichiers, nous allons activer open_basedir
ce qui garantira que PHP ne peut inclure que des fichiers de nos répertoires répertoriés.
Important: Cela bloquera tous les autres répertoires et nous obligera à ajouter manuellement des répertoires importants, ce qui inclut également l’ajout de fichiers temporaires et de répertoires de session.
open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session"
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 15 Contrôler L'Accès Aux Fichiers Php](https://www.tecmint.com/wp-content/uploads/2012/12/Control-PHP-File-Access.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 16 Contrôler L'Accès Aux Fichiers Php](https://www.tecmint.com/wp-content/uploads/2012/12/Control-PHP-File-Access.png)
7. Configurer les téléchargements de fichiers PHP
Si votre application ne nécessite pas de télécharger des fichiers du côté de l’utilisateur, il est toujours conseillé de désactiver les téléchargements de fichiers. Cela empêche les attaquants de télécharger des scripts dangereux qui pourraient finir par endommager l’ensemble de l’application.
file_uploads = Off
Mais que se passe-t-il si votre application est conçue pour obtenir des fichiers du côté de l’utilisateur ? Dans ce cas, vous devez activer les téléchargements de fichiers, mais essayez de réduire l’espace maximum et de réduire le nombre maximum de fichiers pouvant être téléchargés à partir d’une seule requête.
file_uploads = On upload_max_filesize = 1M max_file_uploads = 1
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 17 Contrôler Les Téléchargements De Fichiers Php](https://www.tecmint.com/wp-content/uploads/2012/12/Control-PHP-File-Uploads.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 18 Contrôler Les Téléchargements De Fichiers Php](https://www.tecmint.com/wp-content/uploads/2012/12/Control-PHP-File-Uploads.png)
En PHP, par défaut, les fichiers temporaires sont placés dans un répertoire que tous les utilisateurs du système peuvent écrire. L’emplacement par défaut doit être basculé vers un emplacement plus sécurisé et assurez-vous qu’il ne se trouve pas dans la racine Web.
Comme nous avons utilisé open_basedirnous utiliserons le même emplacement que celui que nous avons déjà ajouté à la liste blanche.
upload_tmp_dir = /var/lib/php/tmp_upload
8. Désactiver les fonctions PHP dangereuses
PHP a diverses fonctions activées par défaut et peut être utile à des fins de développement. Mais de nombreuses fonctions peuvent être utilisées par les pirates pour exploiter notre serveur Web et les désactiver ajoutera une couche de sécurité.
Nous avons un ensemble de fonctions désactivées et assurez-vous de les vérifier avant d’apporter des modifications au fichier de configuration.
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 19 Désactiver Les Fonctions Php Indésirables](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-Unwanted-PHP-Functions.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 20 Désactiver Les Fonctions Php Indésirables](https://www.tecmint.com/wp-content/uploads/2012/12/Disable-Unwanted-PHP-Functions.png)
9. Modifier le répertoire du cache SOAP
Comme nous avons changé le répertoire temporaire et la session par défaut, il en va de même pour le DU SAVON cache car il ne doit pas être enregistré dans le répertoire par défaut. Assurez-vous qu’il est enregistré dans un endroit sûr.
soap.wsdl_cache_dir = /var/lib/php/soap_cache
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 21 Modifier Le Répertoire Du Cache Soap](https://www.tecmint.com/wp-content/uploads/2012/12/SOAP-Cache-Directory.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 22 Modifier Le Répertoire Du Cache Soap](https://www.tecmint.com/wp-content/uploads/2012/12/SOAP-Cache-Directory.png)
10. Contrôler la taille PHP POST
En contrôlant PUBLIER taille, nous pouvons sécuriser notre serveur contre un pirate informatique tentant de coaguler les ressources du serveur en envoyant d’énormes fichiers. Cela nous évite des pannes de serveur indésirables et un temps de réponse lent.
post_max_size=4M
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 23 Limiter La Taille Php Post](https://www.tecmint.com/wp-content/uploads/2012/12/Limit-PHP-POST-Size.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 24 Limiter La Taille Php Post](https://www.tecmint.com/wp-content/uploads/2012/12/Limit-PHP-POST-Size.png)
11. Protégez les configurations PHP
Lors de la suppression des fichiers inutiles, nous supprimons souvent certains fichiers cruciaux ou même des répertoires. Nous devons donc modifier les paramètres de manière à ce que même les utilisateurs root ne puissent pas les supprimer. Pour créer des fichiers et des répertoires, nous utiliserons chattr avec différents drapeaux.
Une fois que vous avez utilisé la commande donnée, vous ne pouvez plus modifier un fichier spécifique ou le supprimer.
$ sudo chattr +i /etc/php.ini
Lors de la tentative de suppression d’un fichier immuable, une erreur indiquant « Opération non autorisée”.
$ sudo rm -r /etc/php.ini
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 25 Erreur D'Opération Non Autorisée](https://www.tecmint.com/wp-content/uploads/2012/12/Operation-Not-Permitted-Error.png)
![Principaux Conseils De Sécurité Pour Le Renforcement De Php Pour Les Serveurs Linux 26 Erreur D'Opération Non Autorisée](https://www.tecmint.com/wp-content/uploads/2012/12/Operation-Not-Permitted-Error.png)
Mais que se passe-t-il si vous voulez continuer à écrire ces fichiers tout en les rendant immuables ? Vous pouvez facilement y parvenir en utilisant le +a
drapeau au lieu de +i
.
$ sudo chattr +a /etc/php.ini
Il peut y avoir des cas où vous n’avez plus besoin de l’ancien fichier de configuration et dans ce cas, nous devons supprimer les attributs.
$ sudo chattr -i /etc/php.ini
De même, si vous alliez avec +a
attributs en train de rendre les fichiers immuables, vous pouvez l’inverser en utilisant la commande donnée :
$ sudo chattr -a /etc/php.ini
12. Utiliser des certificats SSL pour HTTPS
De nos jours, chaque navigateur moderne tel que Google Chrome, Firefox, Opera et autres recommande d’utiliser HTTPS pour les serveurs Web. Comme HTTPS fournit un canal d’accès sécurisé et crypté pour les sites non fiables, nous pouvons offrir une expérience fiable à nos utilisateurs.
En ajoutant HTTPSnous pouvons nous protéger contre XSS attaques, y compris empêcher les pirates de lire les données transportées à l’aide de codes.
Pour activer HTTPS, nous installerons et utiliserons le logiciel gratuit Encryptons le certificat SSL sur le serveur.
$ sudo dnf install epel-release $ sudo dnf install certbot python3-certbot-apache mod_ssl $ sudo certbot --apache -d domain.com [For Apache] $ sudo certbot --nginx -d domain.com [For Nginx]
13. Mettre à jour PHP régulièrement
Comme il s’agit d’un langage open source, il est corrigé presque quotidiennement. Cela peut ne pas sembler être une étape importante, mais peut vous éviter une vulnérabilité majeure. Assurez-vous donc de garder vos packages PHP à jour, ce qui vous évitera de nombreuses vulnérabilités possibles.
# yum update & yum upgrade [On RHEL-based systems] # apt update && apt upgrade [On Debian-based systems]
C’était notre point de vue sur la façon dont vous pouvez facilement améliorer la sécurité de PHP dans les systèmes Linux. Tout au long de ce tutoriel, nous avons essayé de simplifier au maximum les choses et si vous avez encore des doutes, n’hésitez pas à nous le faire savoir dans les commentaires.