web-dev-qa-db-fra.com

Implications de sécurité d'avoir des fichiers appartenant à l'utilisateur Apache?

Exécution actuellement une instance de lampe que les développeurs utilisent pour une variété de webapps. J'ai le scénario suivant:

  • Plusieurs développeurs ont besoin d'un accès pour créer et modifier des fichiers sous/var/www/html
  • Les développeurs doivent pouvoir accéder au code de chacun en cas de vacances, malades, etc.

Mes pensées étaient les suivantes:

  1. Pour chaque application Web (répertoire) sous/var/www/html, changez de manière récursive le propriétaire sur "Apache" et le groupe à un groupe "Développeurs". Définissez les autorisations à 57.
  2. Pour chaque fichier sous/var/www/html, changez de manière récursive le propriétaire sur "Apache" et le groupe à un groupe "Développeurs". Définissez les autorisations à 47.

Garder les fichiers et les répertoires comme en lecture seule sur l'utilisateur Apache est une bonne pratique de sécurité, mais possédez de tels fichiers appartenant à l'utilisateur Apache un mauvais? Mon inquiétude était autour de ce qui se produirait si Apache a été touché par une vulnérabilité de 0 jour ou quelque chose du genre.

Si quelqu'un a un moyen plus élégant de le faire, je suis intéressé à l'entendre aussi.

14
am4

Restreindre le démon avec Mac

Peu importe la façon dont vous le coupez, enveloppez Apache dans un Contrôle d'accès obligatoire La couche comme APPARMOR ou SELINUX est une bonne première étape. Cela vous permettra de restreindre les opérations admissibles du démon, même si autrement, les autorisations. Cela empêchera Apache de modifier toujours vos fichiers.

Utilisez le contrôle de la version avec les commandes automatiques

Si chaque développeur a accès à GIT et la succursale de production est automatiquement vérifiée par le serveur Web lorsqu'il est mis à jour, vous aurez le contrôle et l'historique de tout ce qui est chargé et de vérification instantanée que tout est ce que cela devrait être.

Autorisation

L'inconvénient de faire Apache le propriétaire des fichiers est que Apache pourrait théoriquement chmod ces fichiers. Pour cette raison, la création du répertoire de données et des fichiers de la possession d'un autre utilisateur dispose d'un avantage, sauf si vous attendez Apache de modifier le répertoire. Si vous le faites, essayez de séparer des annuaires pour le contenu dynamique attendu et le contenu que Apache ne doit jamais mettre à jour.

10
Jeff Ferland

Vous avez absolument raison, en gardant l'utilisateur à exécuter le processus de serveur Web, dans votre cas Apache isolé de l'écriture à la Webroot est une bonne idée. C'est l'un des guides de durcissement de base pour une raison. Si l'utilisateur peut écrire sur les fichiers ou les répertoires, il est plus facile de modifier un utilisateur malveillant de modifier le système de fichiers. Une chose que vous ne tenez pas en compte est la manière dont la propriété des systèmes de fichiers fonctionne.

L'utilisateur qui possède un fichier peut toujours y écrire. Cela semble contradictoire, mais est en place pour que l'utilisateur puisse faire des choses telles que remplacer ou supprimer le fichier.

Si, pour votre processus métier, les développeurs nécessitent un accès direct en écriture aux fichiers Web en direct, je modifierais vos recommandations à ce sujet:

Mes pensées étaient les suivantes:

  1. Pour chaque application Web (répertoire) sous /var/www/html, modifier récursivement le propriétaire vers un autre compte tel que nobody ou root et le groupe à un groupe developers. Définissez les autorisations à 575.
  2. Pour chaque fichier sous /var/www/html, modifier récursivement le propriétaire vers un autre compte tel que nobody ou root et le groupe à un groupe developers. Définissez les autorisations à 474.

Cela permettra à l'utilisateur Apache de lire les fichiers, permettant ainsi à HTTPD de servir les fichiers, tout en empêchant la modification des fichiers.

9
Scott Pack