Top PHP Hardening Security Conseils pour les serveurs Linux

Top PHP Hardening Security Conseils pour les serveurs Linux

Ce n'est pas plus craintif 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 diverses façons par lesquelles il peut manipuler PHP car il est souvent jumelé avec Mysql et permettre d'accéder aux données privées de vos utilisateurs.

En tout moyen, nous ne revendiquons pas Php est vulnérable ou a des problèmes graves par défaut, mais nous devons nous assurer que nous modifierons Php de telle manière qu'il peut être plus robuste que jamais.

1. Supprimer les modules PHP inutiles

Par défaut, vous obtenez un ensemble de Php Des 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 
Répertoriez les modules PHP

Les modules sont situés à / etc / php.d/ répertoire et peut facilement modifier notre répertoire actuel en / etc / php.d/ En utilisant la commande CD suivante.

CD / etc / php.d/ 

La raison pour laquelle nous modifions le répertoire pour supprimer les modules est que les modules sont nommés très différemment dans le répertoire d'origine. Maintenant, listez les modules disponibles par la commande donnée:

$ ls 
Vérifiez les modules PHP

Par exemple, supprimons le boucle module en utilisant la commande donnée:

$ sudo rm -r 20-curl.ini 

2. Désactiver l'exécution du code PHP distant

Dans la plupart des cas, les connexions à distance ne peuvent pas faire confiance. En désactivant l'accès à fopen emballages, ils ne peuvent accéder qu'à des 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 taper allow_url_fopen qui nous atterrira sur des lignes spécifiques d'où nous désactiverons ces options.

allow_url_fopen = off allow_url_include = off 
Désactiver l'exécution du code PHP distant

Une fois que vous avez terminé avec les modifications, enregistrez le fichier de configuration par Ctrl + o et frapper Entrer.

3. Désactiver la fuite d'informations PHP

Lorsqu'il n'est pas handicapé, le monde peut facilement identifier la version de Php est actuellement utilisé par notre serveur Web. Cela peut ne pas sembler être un gros problème, mais faire savoir à l'attaquant que la version exacte peut être dangereuse.

$ sudo nano / etc / php.ini 

Maintenant, modifiez les valeurs par défaut "Désactivé".

exposer_php = off 
Désactiver la fuite d'informations PHP

4. Désactiver les journaux d'erreur PHP

Par défaut, chaque erreur de notre serveur Web est visible pour nos visiteurs, y compris les attaquants. Pour nous assurer qu'aucune des erreurs n'est visible pour quiconque, nous devons apporter des modifications à notre fichier de configuration PHP.

$ sudo nano / etc / php.ini 

Et modifier le paramètre par défaut de l'affichage des journaux d'erreur à "Désactivé".

display_errors = de 
Désactiver les journaux d'erreur PHP

Mais que se passe-t-il si vous êtes un développeur et que vous devez avoir des journaux d'erreur pour surmonter les problèmes de développement? Ne vous inquiétez pas, il existe un moyen d'obtenir vos fichiers journaux en effectuant simplement une légère modification du même fichier de configuration.

Nous devons juste activer log_errors et donner un chemin pour error_log où nos fichiers journaux seront stockés.

log_errors = sur error_log = / var / log / httpd / php_scripts_error.enregistrer 
Activer les journaux d'erreur dans PHP

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, l'exécution sera arrêtée après un certain temps.

Nous avons choisi 25 secondes pour l'exécution et le temps d'entrée et 30 Mo de limite de mémoire. Sûr que vous pouvez le personnaliser selon vos besoins.

max_execution_time = 25 max_input_time = 25 Memory_limit = 30m 
Contrôle des ressources PHP

6. Restreindre l'accès au fichier 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 oblige à ajouter des répertoires importants manuellement, ce qui comprend é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" 
Contrôler l'accès au fichier PHP

7. Configurer les téléchargements de fichiers PHP

Si votre application ne nécessite pas de téléchargement de fichiers à partir de la fin 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 à partir de la fin de l'utilisateur? Dans ce cas, vous devez activer les téléchargements de fichiers, mais essayer de réduire l'espace maximum et de réduire le nombre de fichiers maximaux pouvant être téléchargés à partir d'une seule demande.

file_uploads = sur upload_max_filesize = 1m max_file_uploads = 1 
Contrôler les téléchargements de fichiers PHP

Dans 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 transféré à un endroit plus sécurisé et s'assurer qu'il n'est pas situé dans la racine Web.

Comme nous l'avons utilisé Open_Basedir, Nous utiliserons le même emplacement que nous l'avons déjà fait.

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 de toiles et leur désactiver ajouteront une couche de sécurité.

Nous avons un ensemble de fonctions désactivé et nous assurons de les recouper avant d'apporter des modifications au fichier de configuration.

Disable_Functions = exec, pasthru, shell_exec, système, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source 
Désactiver les fonctions PHP indésirables

9. Modifier le répertoire de cache de savon

Au fur et à mesure que nous avons modifié le répertoire et la session temporaires par défaut, il en va de même SAVON cache car il ne doit pas être enregistré dans le répertoire par défaut. Assurez-vous qu'il est sauvé dans un endroit sûr.

savon.wsdl_cache_dir = / var / lib / php / soap_cache 
Modifier le répertoire de cache de savon

dix. Contrôler la taille du post PHP

En contrôlant POSTE taille, nous pouvons sécuriser notre serveur à partir d'un pirate qui tente de coaguler les ressources du serveur en envoyant d'énormes fichiers. Cela nous évite des accidents de serveur indésirables et du temps de réponse lent.

post_max_size = 4m 
Limiter la taille du post PHP

11. Protéger les configurations PHP

Tout en supprimant des fichiers inutiles, nous supprimons souvent des fichiers cruciaux ou même des répertoires. Nous devons donc modifier les paramètres de telle manière que même les utilisateurs de racines ne peuvent pas les supprimer. Pour créer des fichiers et des répertoires, nous utiliserons bavard 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 

Tout en essayant de supprimer un fichier immuable, il montrera une erreur disant «Opération non autorisée".

$ sudo rm -r / etc / php.ini 
Opération non autorisée Erreur

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 +un Faculter au lieu de +je.

$ sudo chattr + a / etc / php.ini 

Il pourrait y avoir des cas où vous n'avez plus besoin de l'ancien fichier de configuration et dans ce cas, nous devons non set aux attributs.

$ sudo chattr -i / etc / php.ini 

De même, si vous êtes allé avec +un Attributs dans le processus de rendre les fichiers immuables, vous pouvez l'inverser en utilisant la commande donnée:

$ sudo chattr -a / etc / php.ini 

12. Utilisez des certificats SSL pour HTTPS

De nos jours, chaque navigateur moderne tel que Google Chrome, Firefox, Opera et d'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 Https, Nous pouvons être protégés contre XSS Attaques, y compris la prévention des pirates de lire les données transportées à l'aide de codes.

Pour activer HTTPS, nous installerons et utiliserons le gratuit Certificat SSL de crypte sur le serveur.

$ sudo dnf installer ePEL-Release $ sudo dnf install cert bot python3-certbot-apache mod_ssl $ sudo certbot --apache -d domain.com [pour Apache] $ sudo certbot --nginx -d domaine.com [pour Nginx]] 

13. Mettre à jour PHP régulièrement

Comme c'est une langue open-source, il est corrigé quotidien. Cela peut ne pas sembler une étape importante, mais peut vous sauver de la vulnérabilité majeure. Assurez-vous donc de garder vos packages PHP à jour, ce qui vous sauvera de nombreuses vulnérabilités possibles.

# Yum Update & Yum Upgrade [sur les systèmes basés sur RHEL] # APT Update && apt Upgrade [sur les systèmes basés sur Debian] 

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 rendre les choses simples que possible et si vous avez encore des doutes, veuillez nous le savoir dans les commentaires.