[WEB - Owncloud] Sécuriser l'accès aux données (résolu)

Applications, problèmes de configuration réseau
Répondre
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

[WEB - Owncloud] Sécuriser l'accès aux données (résolu)

Message par Maltergate »

Bonjour à tous,

Je suis relativement novice sur archlinux. J'ai un serveur dédié chez Kimsufi qui me permet d'apprendre un peu sur cette distribution que j'adore !

J'ai installé un serveur web (Nginx + Php-fpm + MariadB). Avec cela, je fais tourner trois webapps :
  • Phpmyadmin
    Dotclear
    Owncloud
Pour Owncloud, je n'utilise pas le paquet disponible dans les dépôts, je préfère le faire "à la main" (Je n'aime pas l'idée d'installer une webapp par les dépôts. Préférence personnelle :wink: ).

Pour Owncloud, les données sont stockées dans le répertoire

Code : Tout sélectionner

/srv/http/owncloud/data/
avec le reste d'Owncloud. Ca m'embête car c'est à la base un dossier pour héberger des fichiers pour le web. Du coup, je pensais créer un utilisateur cloud:http, le faire devenir propriétaire de

Code : Tout sélectionner

/srv/http/owncloud
et ne pas stocker les données dans

Code : Tout sélectionner

/srv/http/owncloud/data
mais dans

Code : Tout sélectionner

/home/cloud/data
Avec pour but dans tout ça de sécuriser un peu les données si quelqu'un arrive a entrer via l'utilisateur http. Du coup, j'aurais aussi un utilisateur phpmyadmin:http et blog:http.

Est-ce que c'est la bonne façon de raisonner ? Pour l'instant les dossiers sont en root:root. Pas top :?

Merci de vos réponses :)
Dernière modification par Maltergate le lun. 05 janv. 2015, 07:22, modifié 1 fois.
121Ch212
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Backtoback »

Bonjour,

Je vois pas forcément le souci dans ton raisonnement. Ca me semble pas mal.

Perso, J'ai aussi le site dans /srv, et les données sur une partition chiffrée avec LUKS.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

Bonsoir,
Je ne suis pas vraiment sur d'avoir tout suivi, mais ce que je peux dire c'est qu'il faut avoir comme droit root:root pour tous les fichiers statiques. C'est une énorme faille de sécurité de modifier les droits des fichiers statiques tel que tu compte le faire (si j'ai bien compris).
Pour les fichiers utilisateurs, tu n'as pas le contrôle sur les droits, il seront créés avec les droits d'apache.Si tu maitrises les droits sur le dossier parent des données utilisateurs cela devrait limiter les risques (voir ci-dessous).

J'appelle les fichiers statiques tous les fichiers php, javascript, image de thème, ... Les fichiers utilisateurs sont les fichiers envoyés par l’utilisateur, cela peut être tout et n'importe quoi : fichiers zip, doc...

Tu dois avoir comme droits en fonction de ton besoin :
  • 644 root:root : Pour les fichiers statiques qui peuvent être lus par tous les utilisateurs de ta machine, en gros 99% des fichiers de ton application web
  • 640 root:http : Pour les fichiers statiques qui ne devraient pas être lus par d'autres personnes autre que le serveur web.
  • 755 http:http : Pour le dossier utilisateur si le contenu peut être partagé / lu par d'autres personnes sur le serveur (autre que root).
  • 750 http:http : Pour le dossier utilisateur si le contenu doit rester privé.
Sinon pour l'emplacement du dossier utilisateur, il est plus que recommandé que ce dernier ne soit pas dans les chemins autorisés de php : open_basedir

De plus désolé de te le dire, mais ne pas utiliser de paquet est une énorme connerie, car déjà Owncloud est dans les dépôts officiels, de plus cela permet de le garder à jour ultra simplement, tu peux aussi vérifier si aucun fichier n'a été modifié (un gros plus question sécurité avec les signatures, etc...).

@Backtoback Avoir les fichiers sur une partitions chiffrées est totalement inutile, ceci ne permet de se proteger que contre une attaque physique du serveur (on te démonte les disques durs). Cela ne te protège en rien contre toutes les autres attaques.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Maltergate »

Merci pour vos réponses.

@benjarobin : Merci pour tes infos.

Pour résumer de manière très concise, j'ai deux disques durs, l'un système de 20Go et l'autre /home de 2To. Bien entendu, il faut que je stocke les données dans le /home.

Dans la documentaion de phpmyadmin, il est conseillé pour ne pas laisser l'utilisateur root justement mais bien de créer un utilisateur dédié, sans lui créer de répertoire perso ni même de shell, et de le faire devenir possesseur du dossier.

phpmyadmin:http serait donc le meilleur moyen de sécuriser l'application. Avec un utilisateur dédié (est-ce que l'utilisateur appartient au groupe http ? Je ne sais pas. Lorsque j'ai crée l'user phpmyadmin j'ai crée le groupe avec le même uid en même temps), et le groupe de Nginx (http du coup), ça permettait de scinder les permissions, et augmenterait la sécurité dans le cas d'une intrusion. Effectivement, j'avais un ami (celui qui m'a mis sur Archlinux) qui etait obsédé par les permissions et j'ai souvenir qu'il faisait ça aussi. (il avait un user "cloud", un "pgsql", un "bolg" etc...).

Pour ce qui est de ne pas utiliser le paquet dans les dépôts, encore une fois c'est les goûts et les couleurs hein ?! :) , mais principalement c'est au niveau de la mise à jour, je préfère avoir quelque-chose de natif. Pour avoir déjà testé le paquet owncloud, c'est un bordel sans nom ! Le paquet est rarement à jour face à son homologue natif ce qui pose, là, de réels problème de sécurité. Ensuite, j'ai du mal au niveau des connections neuronales :lol: . Pour moi, assimiler une webapp à un paquet d'application native est un non-sens. Enfin du moins j'ai du mal. Donc les paquets pour des applis et du déploiement natif pour le web, et les moutons seront bien gardés :lol: . Enfin j'suis là pour m'amuser et apprendre, alors utiliser des automatisés, ça ne m'intéresse pas plus que ça :wink: .

Alors peut-être utiliserai-je le paquet des dépots plus tard. mais avant, j'aimerais réussir à le faire tourner en natif.
121Ch212
Backtoback
yeomen
Messages : 263
Inscription : jeu. 26 avr. 2012, 23:33

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Backtoback »

@benjarobin C'est en effet, le but.
Mais effectivement, ca n'a pas sa place sur ce topic car il utilise un dédié chez kimsufi.
Dsl, la fatigue...
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

Dans la documentaion de phpmyadmin, il est conseillé pour ne pas laisser l'utilisateur root justement mais bien de créer un utilisateur dédié
Indique moi le passage de la doc car c'est un non sens !!! Tu ne confondrais pas avec l'utilisateur de connexion à la base de donnée ?

La sécurité est maximale quand les fichiers appartiennent à root:root. C'est simple pourtant, les fichiers statiques ne doivent pas être modifiés, ils doivent être en lecture seul. Donc le moyen le plus sécurisé est de rendre root propriétaire du fichier.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Maltergate »

Tu peux trouver la doc ici : https://phpmyadmin-french.readthedocs.o ... tml#faq4-2

Dans un sens, c'est assez logique. Si des malins arrivent à récupérer l'accès à l'utilisateur phpmyadmin via une faille de la webapp, au moins ils n'ont pas l'accès à root. Alors qu'en mettant root propriétaire, ils peuvent faire ce qu'ils veulent sur la machine s'ils arrivent à rentrer...

EDIT : nan ça va je ne confonds pas avec l'utilisateur de la base de donnée :lol:
121Ch212
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

Maltergate a écrit :Si des malins arrivent à récupérer l'accès à l'utilisateur phpmyadmin via une faille de la webapp, au moins ils n'ont pas l'accès à root. Alors qu'en mettant root propriétaire, ils peuvent faire ce qu'ils veulent sur la machine s'ils arrivent à rentrer...
Tu n'as vraiment rien compris au droits unix... Cela ne marche pas du tout comme tu le dit !
La FAQ que tu donnes ne dit que des conneries... Sauf pour le fichier de configuration qui doit être comme j'ai expliqué plus haut avec comme droit 640 root:http
Reprenons depuis le début...
Si quelqu'un te pirate ton PC mais qu'il n'arrive pas avoir les droits root, il ne pourra rien faire / modifier de ton application Web : elle reste sécurisé ! Par contre si le pirate obtient les droits root, tu es juste dans la merde (quelque soit l'utilisateur et le groupe du fichier), car il peut tout faire.
Donc en gros même via une faille du serveur Web qui n'est pas lancé en root, tu ne risque rien !

Mais si tu donnes les même droits que celui du serveur Web alors s'il y a une faille dans ce dernier, il pourra modifier tous les fichiers qui sont avec ce groupe
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Maltergate »

Ah ah J'apprécie ta diplomatie et ta pédagogie !
121Ch212
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

Désolé mon message au dessus était en cours d'écriture... Sinon cela me fait déprimer que ce genre de connerie arrive même à être écrit dans une FAQ
C'est pourtant simple, un fichier appartenant à root ne peut être modifier que par root. Donc aucun risque.
Si tu modifies le propriétaire et le groupe du fichier alors si quelqu'un arrive à obtenir les droits sur ce groupe ou ce propriétaire, il peut donc modifier le fichier
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Maltergate »

benjarobin a écrit :C'est pourtant simple, un fichier appartenant à root ne peut être modifier que par root. Donc aucun risque.
Si tu modifies le propriétaire et le groupe du fichier alors si quelqu'un arrive à obtenir les droits sur ce groupe ou ce propriétaire, il peut donc modifier le fichier
Je comprends bien. Mais du coup, je m'imaginais dans ma petite tête de newbie que donner à un fichier le propiétaire root était "mettre en péril" l'utilisateur root. Du coup en mettant des utlisateurs distincts entre les différentes webapp, si jamais un malin réussit a rentrer, il ne foutra pas le zbeuh ailleurs. Et si il arrive dans le groupe, alors il ne mettra pas en péril autre que le groupe.

En mettant root:root, pour moi, c'était comme mettre un gyrophare en disant : "c'est la clé magique : pas facile à copier pour entrer mais une fois qu'on l'a on peut aller partout dans la baraque".
121Ch212
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

Maltergate a écrit :En mettant root:root, pour moi, c'était comme mettre un gyrophare en disant : "c'est la clé magique : pas facile à copier pour entrer mais une fois qu'on l'a on peut aller partout dans la baraque".
C'est que tu as tout à fait raison ! Mais j'ai un doute sur ce que tu penses : On est bien d'accord qu'il n'y a aucun lien entre les droits sur les fichiers et les droits du processus du serveur web par exemple. (Il faut juste que le serveur web est l'accès en lecture)

Une fois que l'utilisateur à les droits root, il peut mettre le bordel n'importe où.

Sauf que tu oublie que si tu met user:groupe alors il existe plus de 2 façons de casser la chose :
  • En étant root : voir au dessus
  • En se faisant passé pour user
  • En se faisant passé pour n'importe quel utilisateur dans groupe
Pour rappel root peut modifier n'importe quel fichier, même si ce dernier ne lui appartient pas. En gros root est le niveau ultime, c'est pour cela qu'il ne faut rien lancer en root, ou du moins faire très attention à ce que tu lances en root.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par Maltergate »

Mais j'ai un doute sur ce que tu penses : On est bien d'accord qu'il n'y a aucun lien entre les droits sur les fichiers et les droits du processus du serveur web par exemple. (Il faut juste que le serveur web est l'accès en lecture)
Aaaah d'accord. Ben voilà, c'est là que je confonds... Ok du coup je comprends maintenant ce que tu tentes de m'expliquer depuis le début !

Du coup, si je résume, c'est sécurisé si les fichiers statiques (images, php etc...) sont en 640 root:http (inutile de laisser les fichiers accessibles autre qu'au serveur web), et en revanche nginx doit tourner en http:http comme ça, si quelqu'un arrive à prendre le contrôle, il n'aura accès qu'aux fichiers disponibles pour le groupe http et ne pourra pas aller ailleurs que les services web.

Et pour mon dossier /home/cloud/data, les permissions devraient être en 750 http:http. Et inutile de créer d'autres utilisateurs.

Mais alors du coup, question : Si quelqu'un arrive à entrer dans la machine par une faille d'un autre service web (Dotclear par exemple), il aura accès à mes fichiers de cloud déposés dans /home/cloud/data vu qu'il est en http:http (si je me trompe dis le moi ^^). Du coup, existe-t-il un moyen de scinder les accès ? Ou faut-il lancer plusieurs sessions de Nginx (je sais pas si c'est possible) avec chacun un utilisateur différent pour empêcher les passerelles ?

Deuxième question : Est-ce que ma précédente question montre que je n'ai rien compris ? :lol:
121Ch212
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [WEB - Owncloud] Sécuriser l'accès aux données

Message par benjarobin »

En résumé tu commences à saisir l'ensemble oui :-)
En gros oui, il faudrait avoir différents serveur web pour chaque application / service web. Je ne veux pas te dire de bêtise, mais il est peut être possible sur certains serveurs web de spécifier par application (dossier servi) l'utilisateur et le groupe utilisé pour faire tourner le processus.

Pour les droits, je te conseil de laisser 644 root:root pour tout ce qui est statique, le code est publique, cela ne sert à rien de le cacher : on met en lecture seul pour tout le monde...
Par contre pour le fichier de configuration (généralement un fichier conf.php) doit impérativement être avec les droits 640 root:http, ce qui permet de le rendre uniquement accessible depuis le serveur web, tous les autres utilisateurs ne peuvent lire ce fichier (contenant généralement un mot de passe de base de donnée)

Un nouveau petit rappel sur les droits des fichiers, par exemple pour 640, au niveau position, le 6 c'est pour l’utilisateur, le 4 pour le groupe, et le 0 pour tous les autres. Au niveau des droits, le 4 c'est pour l'accès en lecture, le 2 en écriture, et le 1 pour les droits d’exécution. Donc 6 = 4 + 2 donne un accès en lecture et écriture.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Maltergate
Hankyu
Messages : 11
Inscription : dim. 14 déc. 2014, 12:11
Contact :

Re: [WEB - Owncloud] Sécuriser l'accès aux données (résolu)

Message par Maltergate »

Super, merci pour tes conseils et remarques :) . Je vais remettre tout ça en ordre. Merci beaucoup !
121Ch212
Fanch
archer
Messages : 144
Inscription : lun. 01 déc. 2008, 21:16

Re: [WEB - Owncloud] Sécuriser l'accès aux données (résolu)

Message par Fanch »

Salut,

Concernant phpmyadmin je te conseil de rajouter un .htaccess ou/et un "require ip" avec ton ip perso seulement, je ne connais pas la conf pour nginx pour ces options,
mais je peux te confirmer que sur internet il y'a beaucoup de robot scanner d'url qui cherche les install de phpmyadmin...

A part ca pour isoler tes webapps, il y'a d'autres solutions que les utilisateurs, par exemple qemu ou docker.

Enfin concernant owncloud, personnelement j'ai arreté d'utiliser le paquet fourni par archlinux, parcequ'il faisait regulierement sauter mes modifications perso dans le code php ... Je prefere donc gerer la mise a jour de mes applications web a la main ;)
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris." -> man perl
Répondre