Forum général.général Rappels élémentaires sur les droits

Posté par  (site web personnel) .
Étiquettes : aucune
0
9
août
2004
Cher forum,

Je me suis mis en tête de sécuriser au maximum mon futur site, mais pour se faire, j'ai besoin de quelques rappels pour le moins élémentaires...

Mon serveur tomcat est actuellement lancé via un user normal (moi), et non le root, est-ce mal ? (si oui pourquoi)
Mes fichiers jsp sont tout naturellement en rw-r--r-- et m'appartiennent.
Ma question : le serveur ayant les droits du user qui le lance (donc moi), est il possible pour un internaute de supprimer une de mes jsp (etant donné qu'il a théoriquement les droits rw dessus) ?
si oui, comment, et comment y remedier de manière simple ?

Voilou :)
Merci pour vos réponses
  • # C'est pas trop mal....

    Posté par  . Évalué à 4.

    Mon serveur tomcat est actuellement lancé via un user normal (moi), et non le root, est-ce mal ? (si oui pourquoi)
    Au contraire c'est bien.... Il faut que le nombres de programmes (et à fortiori de serveurs) lancés en root doivent être réduits au strict minimum.
    En effet, si un serveur (à l'occurence Tomcat) contient une faille de sécurité et permet par un Buffer Overflow de transformer ce serveur en shell distant, alors ce shell a les privilèges de l'utilisateur qui a lancé le serveur.
    Ainsi si le serveur tourne en root et se fait attaquer, le pirate a alors tous les droits sur la machine.

    est il possible pour un internaute de supprimer une de mes jsp?
    Théoriquement non. Tomcat ne permet pas d'effacer des fichiers à distance. Par contre, comme je l'ai expliqué au dessus, si Tomcat venait à se faire pirater, le pirate pourrait eventuellement effacer tes jsp.

    La meilleure solution est de créer un utilisateur tomcat, qui ne sert qu'à lancer tomcat.
    Fais alors en sorte que le fichiers JSP t'appartiennent et que l'utilisateur Tomcat ait seulement les droits en lecture dessus.
    • [^] # Re: C'est pas trop mal....

      Posté par  (site web personnel) . Évalué à 1.

      Merci beaucoup pour ton avis eclairé :)
    • [^] # Re: C'est pas trop mal....

      Posté par  . Évalué à 2.

      >Fais alors en sorte que le fichiers JSP t'appartiennent et que l'utilisateur Tomcat ait seulement les droits en lecture dessus.


      Désolé, mais ce point-là ne sert à rien... En fait, s'il n'a plus le droit d'écriture sur le fichier, cela signifie qu'il n'a plus le droit de le modifier. Il conserve le droit de changer ses droits (héhéhé... adieu la protection), et même de le supprimer, car le droit de suppression d'un fichier dépend du répertoire dans lequel celui-ci se trouve, et non des droits du fichier lui-même. En d'autres termes, si le répertoire à les droits 755 (drwxr-xr-x), alors, comme le droit d'écriture, dans un répertoire, correspond au droit de création et de suppression de fichiers, ton utilisateur tomcat aura toujours le droit de supprimer tous les fichiers du répertoire.

      Tu peux d'ailleurs faire l'expérience : crée un fichier, mets-le en mode 000 (---------), puis essaye de le supprimer... Pas de problème!

      Il existe tout de même une solution, particulièrement tordue, pour empêcher totalement un utilisateur non root de supprimer un fichier qui lui appartient. Il s'agit de créer, sur la même partition que les fichiers en question, un répertoire appartenant à un autre utilisateur, et de placer, dans ce répertoire, des liens matériels (et non symboliques) pointant les fichiers à protéger. Ensuite, il faut retirer tous les droits sur ce répertoire (et non son contenu) à l'utilisateur visé (ici, tomcat) : n'ayant plus d'accès à ces fichiers, il ne peut les supprimer, même s'ils lui appartiennent! Et si un pirate prend le contrôle de tomcat et lui fait effacer ses fichiers, tu n'auras plus qu'à les récupérer dans ce répertoire.

      Bon, cela dit, cela n'empêche malheureusement pas le pirate de modifier les données de ces fichiers, et en particulier, il peut les tronquer à une taille nulle, ce qui revient (presque) à une suppression. Pour cela, deux parades :
      -Soit tu retires les droits d'écriture à Tomcat sur ces fichiers, en sachant que cela est contournable par un bon pirate (il suffit de rétablir les droits),
      -Soit tu emploies une solution bien plus simple, et qui t'évite aussi d'avoir à créer le répertoire de liens matériels : tu attribues les images de tomcat, en mode r--r--r--, à un utilisateur autre que celui qui lance le processus tomcat! Et le tour est joué.

      CoinKoin
      • [^] # Re: C'est pas trop mal....

        Posté par  (site web personnel) . Évalué à 1.

        tu attribues les images de tomcat, en mode r--r--r--, à un utilisateur autre que celui qui lance le processus tomcat! Et le tour est joué

        Ca m'interesse mais j'suis pas sûr de comprendre, tu peux expliquer d'avantage ?
        • [^] # Re: C'est pas trop mal....

          Posté par  (site web personnel) . Évalué à 1.

          Bon j'essais malgrès tout de récapituler :
          1/ Je me fais un user tomcat, je lance le serveur avec.
          2/ je fais un chown -R root:root * dans mon repertoire contenant les jsp, j'active le stickybit du dossier parent pour que ce soit pas la foire et que personne ne puisse effacer les fichiers des autres
          3/ Je donne le droit r à others pour l'ensemble de mes jsp

          Qu'en penses tu ?
          • [^] # Re: C'est pas trop mal....

            Posté par  . Évalué à 2.

            L'explication de cho7 est la bonne.

            Attention quand même, avec l'option -R, chown va se comporter de façon récursive, et donc changer aussi le propriétaire des fichiers des sous-répertoires de celui-ci. Si ce n'est pas souhaitable, enlève l'option -R.
            • [^] # Re: C'est pas trop mal....

              Posté par  . Évalué à 2.

              Ah, pardon, Cho7, je n'avais pas vu que tu étais auteur de la demande d'éclaircissements ainsi que de la réponse. Eh bien oui, c'est comme cela qu'il faut procéder.
              • [^] # Re: C'est pas trop mal....

                Posté par  . Évalué à 2.

                Ah, un détail, quand même : plutôt que le sticky bit, qui peut être supprimé par le propriétaire du répertoire, fais plutôt un "chown root:root ." .Comme ça, pas de mauvaises blagues possibles.

                Et puis, pour faire encore plus propre, tu peux carément te créer un utilisateur dédié aux .jsp, nommé par exemple jspuser, et faire un "chown jspuser:jspuser ." et "chown jspuser:jspuser -R *" .

                Comme ça, tu n'auras pas à te loguer en root où à faire su root pour mettre à jour tes images, ce qui est préférable. Le login en root doit vraiment être réduit au strict minimum.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.