2 votes

Stratégies de protection des fichiers de configuration des applications web PHP de tiers

Je suis intéressé par les commentaires et les stratégies pour protéger les fichiers de configuration PHP, en particulier ceux qui contiennent des informations d'identification de la base de données.

Le conseil habituel, qui consiste à définir l'extension du fichier à *.php, est très bien pour l'instant, mais il ne protège pas contre les attaques de type "perusal". Le scénario particulier que j'envisage :

  1. Nous avons un serveur qui héberge une variété d'applications tierces.
  2. Nous ne pouvons pas passer en revue toutes les applications
  3. Si un attaquant compromet une application, il peut potentiellement utiliser cette application pour lire des fichiers dans d'autres répertoires. Les fichiers de configuration de la base de données sont une cible évidente.

J'ai une solution, qui semble avoir du mérite, mais je ne suis pas entièrement à l'aise avec elle. J'aimerais entendre des commentaires à ce sujet, ainsi que sur les points suivants

  1. trouver ce que php_include est configuré pour
  2. placer le fichier de configuration dans ce répertoire
  3. assurez-vous que les instructions require/include qui chargent la configuration ne spécifient pas de chemin d'accès dur (pas de ./ en tête, etc.)

OBJECTIFS

  • cache complètement le fichier de configuration à une application web sœur errante (et plus important encore, au serveur web lui-même).

  • masque l'emplacement réel du fichier de configuration. Il n'est pas facile de le déterminer en lisant le code. Ceci est opposé à la spécification d'un chemin en dehors de l'arbre web.

  • une intervention minimale, tant au niveau du serveur que de l'application.

  • Évite le codage dur de la voie.

Cela ne résout pas les conflits de noms de fichiers de configuration, même si, pour certaines applications, il est probablement utile de changer le nom du fichier de configuration inclus.

Malheureusement, un grand nombre de nos applications Web semblent exiger des chemins d'accès codés en dur.

Quelles approches les autres ont-elles adoptées ?

0voto

Steve Wright Points 1085

Les conseils habituels s'appliquent :

  • Placez le fichier de configuration au-dessus de la racine du site web
  • Utilisez .htacess ou similaire pour interdire l'accès à ces dossiers.
  • Utiliser les autorisations de fichiers pour protéger les dossiers

Un meilleur conseil encore :

  • Veillez à ce que votre serveur de bases de données ne soit accessible que par votre serveur Web, à la fois par des listes de contrôle d'accès au réseau/pare-feu et par sa propre authentification basée sur l'hôte.
  • N'utilisez pas de mots de passe, mais des certificats/Kerberos/PKI (une brève recherche sur Google). a cette suggestion pour implémenter ceci dans MySQL )
  • Si vous n'avez pas confiance en une application, exécutez-la sur son propre serveur web qui n'a pas accès aux fichiers des autres applications.
  • Utiliser un tripwire pour la détection des intrusions

Cacher les fichiers de configuration comme vous le suggérez semble futile, une fois qu'un attaquant a le contrôle de votre système de cette façon, c'est fini de toute façon. Vous ne faites que rendre plus difficile votre propre travail de maintenance de vos applications web, avec un gain de sécurité minime.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X