Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/05/2020, à 12:48

den66

Vérification sur les droits d'un nouvel utilisateur

Bonjour,

Je voulais vérifier une chose auprès de vous. Je suis obligé de créer un nouvel utilisateur sur mon serveur. En fait, j'héberge un petit outil Web que j'ai créé pour une antenne emploi du secours pop, et l'ami qui gère l'antenne à besoin d'un accès à la BDD de cet outil. Il utilise le logiciel Navicat et pour ce connecter il lui faut d'abord se connecter en ssh au serveur puis il se connecte à la BDD.
Pas de PHPMyAdmin sur le serveur, donc, pas de possibilité de lui donner un accès par ce biais.

Je vais donc lui créer un utilisateur, mais je voudrais, afin d'éviter toute boulette ou toute fuite, que cet utilisateur n'ait pas le droit de se balader dans le serveur et encore moins celui d'avoir la possibilité d'y agir.

J'ai vu que lorsque l'on créait un utilisateur, un groupe à son nom était créé (et un dossier dans le dossier home). Comment être sur qu'il ne puisse arpenter le serveur, lire les fichiers qui sont dessus (ce qui lui donnerait les login et mot de passe aux autres bases de données), à certain .htaccess... Non que je doute de lui, mais une erreur ou l'utilisation de cet accès par quelqu'un d'autre est si vite arrivé !

Est-ce possible de faire en sorte qu'il soit restreint à son dossier ? À chaque fois que je crois avoir compris comment fonctionnent les utilisateurs, je m'aperçois que ce n'est pas le cas.

J'ai exploré les pages https://doc.ubuntu-fr.org/adduser, https://guide.ubuntu-fr.org/server/user-management.html et https://doc.ubuntu-fr.org/tutoriel/gest … e_commande mais je ne trouve pas la solution à mon problème. Aussi, merci d'avance pour votre aide et vos conseils.

Hors ligne

#2 Le 21/05/2020, à 14:36

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

Bonjour

Et si, au lieu d'avoir un shell bash (donné par défaut à la création d'un compte utilisateur),
ce compte utilisateur n'avait pour shell que le programme (dont tu ne nous a pas donné le nom) qui gère la BDD,
il ne pourrait alors rien faire d'autre que d'utiliser les commandes de ce programme de gestion de la BDD
ou sortir de son shell, ce qui le déconnecterait de sa session,
et n'aurait accès à aucune autre commande qui lui permettrait de se balader dans l'arborescence de la machine.

Dernière modification par MicP (Le 21/05/2020, à 14:39)

Hors ligne

#3 Le 21/05/2020, à 15:00

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

Bonjour,

Ce n'est pas aussi simple.
Le seul moyen fiable de faire cela est de bloquer l'utilisateur dans son dossier personnel (ou autre) via la configuration de SSH et de lui créer un environnement chrooté plus ou moins complet. Par exemple voir une description basique : https://www.techrepublic.com/blog/linux … rectories/

Personnellement je chercherais un autre moyen de donner à cet utilisateur un accès à la base de données. Je ne sais pas ce qu'est Navicat (apparemment un logiciel privateur) ni pourquoi il a besoin d'une connexion SSH au préalable. Il faudrait éclaircir ce point.

Hors ligne

#4 Le 21/05/2020, à 15:00

den66

Re : Vérification sur les droits d'un nouvel utilisateur

Bonjour MicP,

C'est effectivement une super idée. Je ne savais pas que c'était possible.
Je vais faire des recherches sur le sujet et je em permettrais de revenir vers vous si je ne trouve pas d'ici la fin de la semaine.
Merci beaucoup pour la piste.
Denis

Hors ligne

#5 Le 21/05/2020, à 15:06

den66

Re : Vérification sur les droits d'un nouvel utilisateur

Bonjour Bruno,

Merci pour votre aide. C'est effectivement plus la voie que je comptais prendre, sauf que je n'en trouvais pas le chemin.
Navicat est un logiciel de connexion aux bases de données. On peut utiliser une connexion SSL, SSH ou HTTP pour aller sur le serveur, puis une connexion avec un utilisateur de la BDD pour se connecter dessus.

En tout cas, merci pour la piste, elle est plus proche de mes maigres connaissances que l'idée de MicP, même si je la trouverais élégante. Par contre, vu mon niveau, je crains de ne pouvoir l'aborder facilement.

Je regarde votre piste et vous tiens au courant.
Merci beaucoup.
Denis

Hors ligne

#6 Le 21/05/2020, à 15:19

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

Une doc un peu plus complète et assez proche de ce qu'il faut faire sous Ubuntu : https://fr-wiki.ikoula.com/fr/Chrooter_ … urs_Debian
Mais attention c'est casse-pieds et délicat à mettre en place.

AMHA, l'idée de MicP ne fonctionnera pas, ou si elle fonctionne il sera très facile d'avoir un accès complet au système (retrouver un shell bash ou autre).

Il faut décrire plus précisément les méthodes de connexion utilisées par Navicat. Il doit y a avoir moyen de donner un accès sans passer par SSH un un environnement chroot.

Hors ligne

#7 Le 21/05/2020, à 15:45

den66

Re : Vérification sur les droits d'un nouvel utilisateur

Merci Bruno,

Ça me fout toujours les miquettes quand je dois faire un truc comme ça ! Heureusement, je peux faire un smanshot du serveur avant de me lancer, ça c'est vraiment une invention du feu de dieu.
J'ai regarder la doc, je pense que je vais faire ça ce week-end.
Sinon, comme je le disais, Navicat prpose une connexion SSL (Key client, certificat client et certificat CA), SSH (host, port, user name, et password ou key) et tunnel HTTP, mais ça je ne sais ps trop pourquoi, mais ça ne me tente pas. J'ai regardé la doc Ubuntu sur le sujet, ça me parait encore plus compliqué.
Si vraiment, jene m'en sort pas, je lui dirais que quand il a besoin d'un DUMP, je lui enverrai ! Ça reste la solution la plus simple :-)

En tout cas, merci pour ton aide, d'ici mardi, je vous donnerais des nouvelles.
Bonne fin de semaine à tous.

Hors ligne

#8 Le 21/05/2020, à 15:52

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

…l'idée de MicP ne fonctionnera pas, …

Regarde quel est le shell utilisé par le compte postgresql (ou autre base de données)

…ou si elle fonctionne il sera très facile d'avoir un accès complet au système (retrouver un shell bash ou autre).…

essaye, pour voir…

Hors ligne

#9 Le 21/05/2020, à 15:52

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

hum… si ton machin Navicat utilise un tunnel SSH pour se connecter il doit y avoir moyen de faire fonctionner cela sans un avoir un chroot complet. Avec un utilisateur sans login mais autorisé à faire du tunnelling (AllowTcpForwarding yes) ça devrait le faire.

Hors ligne

#10 Le 21/05/2020, à 15:54

den66

Re : Vérification sur les droits d'un nouvel utilisateur

Merci Micp,
Je regarderai aussi, quand on est comme moi un amateur qui n'a appris qu'à gérer son petit serveur Web et qui ne sait donc faire que ce dont il a besoin, toutes les pistes sont bonne à suivre.

Et je ne voudrais surtout pas occasionner une dispute entre expert !

Hors ligne

#11 Le 21/05/2020, à 15:58

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

@MicP, désolé mais je n'ai sans doute pas compris ce que tu voulais faire. Je ne vois pas comment cela pourrait fonctionner avec un utilisateur qui aurait pour shell /usr/bin/mysql ou /usr/bin/pgsql
En fait je ne vois pas comment un utilisateur pourrait se connecter en SSH sans avoir un shell valide (sh,bash, dash, zsh, …)

Et les shells « restreints » comme rbash sont très faciles à contourner : https://fireshellsecurity.team/restrict … echniques/
C'est pourquoi je disais que la seule méthode fiable est environnent chroot.

Dernière modification par bruno (Le 21/05/2020, à 16:02)

Hors ligne

#12 Le 21/05/2020, à 15:59

den66

Re : Vérification sur les droits d'un nouvel utilisateur

Ok Bruno,

Voilà une autre piste ! Je sens que je vais passer un week-end épique ! Donc, du tunneling... je vais regarder ça https://www.tecmint.com/create-ssh-tunn … -in-linux/ ça m'a l'air de répondre à cette problématique... il me faut juste le temps de déchiffrer le texte (et oui, pas une brute en anglais !)

Hors ligne

#13 Le 21/05/2020, à 16:05

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

Non il faut que tu regardes la doc de ton logiciel. J'ai l'impression qu'il utilise le tunneling SSH pour ensuite établir la connexion à la base de données. Dans ce cas tu peux avoir un utilisateur qui ne peut rien faire sur le système (par exemple shell /bin/true et home /dev/null), ou ne faire que du SFTP, mais qui est autorisé à faire du tunnelling SSH. Il faudra tout de même utiliser un mot de passe très solide ou mieux une authentification par clé.

Dernière modification par bruno (Le 21/05/2020, à 16:10)

Hors ligne

#14 Le 21/05/2020, à 16:21

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

Créé un compte utilisateur et fait en sorte qu'il ait son mot de passe sur le serveur de la BDD pour accéder à ses bases de données dans le serveur de BDD

sudo chsh /bin/PrgDeGestionDeBddQueJeNeConnaisToujoursPas nomDuCompteUtilisateur

La prochaine fois que ce compte utilisateur ouvrira une session sur ta machine, (que ce soit depuis la machine ou par ssh),
il se trouvera avec le prompt du PrgDeGestionDeBddQueJeNeConnaisToujoursPas qui lui demandera le mot de passe de son compte sur le serveur de la BDD
et il ne pourra pas utiliser autre chose que les commandes du serveur de base de données que l'administrateur de la BDD lui aura autorisé dans la BDD.

Après ces tests, si tu veux redonner à ce compte utilisateur un shell bash :

sudo chsh /bin/bash nomDuCompteUtilisateur

Dernière modification par MicP (Le 21/05/2020, à 16:22)

Hors ligne

#15 Le 21/05/2020, à 16:38

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

@MicP : on ne peut pas ouvrir une session sur une machine sans shell valide.

MicP a écrit :

il ne pourra pas utiliser autre chose que les commandes du serveur de base de données que l'administrateur de la BDD lui aura autorisé dans la BDD.

Ce n'est pas clair… Qu'est-ce qui est autorisé, ou interdit, et comment et où ?

Dernière modification par bruno (Le 21/05/2020, à 16:41)

Hors ligne

#16 Le 21/05/2020, à 17:39

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

Voilà, c'est fait :

J'ai installé mysql 8.0.20
et créé une base dans la quelle j'ai créé une table
puis un utilisateur du même nom que celui qui devra se connecter avec le shell mysql : monusermysql
puis j'ai donné sur cette base les privilèges ALL au compte utilisateur monusermysql
puis j'ai quitté mysql

J'ai installé le paquetage mysql-shell
et j'ai ajouté à la liste des shells le shell /usr/bin/mysqlsh

add-shell /usr/bin/mysqlsh

et j'ai changé le shell du compte utilisateur monusermysql
par /usr/bin/mysqlsh :

chsh /usr/bin/mysqlsh monusermysql

Maintenant, quand l'utilisateur monusermysql se connecte,
il tombe dans le shell de mysql

Après, à vous de configurer mysql et le programme mysqlsh comme il vous plaira,
mais quoi qu'il en soit, il ne peut plus accéder à autre chose que mysql

=======
Je ne connais pas du tout Navicat, mais il faudrait déjà savoir comment ce programme va chercher à se connecter à un serveur de base de données,
si ça se trouve, il n'a même pas besoin d'ouvrir de session autrement qu'en se connectant directement au serveur de la base de données.
Donc, n'y aurait qu'à intervenir dans mysql pour que son compte utilisateur puisse s'y connecter directement par Navicat

Dernière modification par MicP (Le 21/05/2020, à 17:56)

Hors ligne

#17 Le 21/05/2020, à 17:53

den66

Re : Vérification sur les droits d'un nouvel utilisateur

OUAHHH ! Je teste ça samedi.
Un grand merci. Si un jour vous avez un soucis en peinture !-)
Et encore merci. Je vous tiens au courant.

Hors ligne

#18 Le 21/05/2020, à 18:06

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

@MicP : où as-tu trouvé le paquet mysql-shell, ce paquet n'existe ni sous Debian, ni sous Ubuntu.
Ensuite j'ai déjà dit que les soi-disant shells restreints n'étaient pas sûrs et que l'on pouvait s'en échapper facilement.

MicP a écrit :

mais quoi qu'il en soit, il ne peut plus accéder à autre chose que mysql

Amusons-nous avec un shell mysql :

mysql> \! ls /
mysql> \! nano
mysql> \! sh

N.B. : je ne te contredis pas pou t’embêter ou pour le plaisir mais parce que je pense, et je peux me tromper, que ce que tu proposes n'est pas une mauvaise solution (ou au mieux une fausse bonne idée).

Dernière modification par bruno (Le 21/05/2020, à 18:25)

Hors ligne

#19 Le 21/05/2020, à 18:26

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

@bruno
Ce n'est pas un des "...soi-disant shells restreints..." : il ne s'agit pas d'un shell qui a été bricolé par un fichier de configuration quelconque,
mais d'un programme shell qui a été fait par Oracle Corporation et qui ne permet que d'accéder à mysql.
Si on quitte ce programme, on se retrouvera déconnecté de la machine, et si on est en ssh, on se retrouve déconnecté de sa session ssh

J'ai installé la dernière version de mysql depuis le site d'Oracle Corporation
en téléchargeant le paquetage à l'adresse https://dev.mysql.com/get/mysql-apt-con … -1_all.deb
Une fois ce paquetage installé, j'ai installé le paquetage mysql-shell

Hors ligne

#20 Le 21/05/2020, à 18:30

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

Où sont les sources ?
Et tu as testé ? Connexion à la base de données puis les commandes que j'ai indiquées en #18 ?

Je rappelle que soi-disant :

MicP a écrit :

mais quoi qu'il en soit, il ne peut plus accéder à autre chose que mysql

Après avoir récupéré le binaire chez Oracle (pas trouvé les sources) :

 MySQL  JS > \c toto@localhost:3306
 MySQL  localhost:3306  JS > \! cat /etc/passwd

À partir du moment on l'on donne accès à un utilisateur à la ligne de commande MySQL, il peut accéder à plein de choses sur le système.

Dernière modification par bruno (Le 21/05/2020, à 18:47)

Hors ligne

#21 Le 21/05/2020, à 18:53

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

… À partir du moment on l'on donne accès à un utilisateur à la ligne de commande MySQL, il peut accéder à plein de choses sur le système. …

Oui, j'ai testé, et je reconnais que ce n'est pas une bonne méthode => j'ai proposé une fausse bonne idée sad

On ne peut cependant pas accéder par exemple à /etc/shadow et aux répertoires autres que ceux accessibles par un compte utilisateur non privilégié

Il reste à voir ce qu'il est possible de faire pour se connecter depuis l'application Navicat
en espérant qu'il ne soit pas non plus possible d'ouvrir un shell mysql (et donc sh ou autre) depuis Navicat

Du coup, c'est peut-être aussi pour ce genre de faille que les paquetages mysql-server et mysql-client ne sont plus dans les dépôts de debian

=======
En tout cas, un grand MERCI à bruno smile

Dernière modification par MicP (Le 21/05/2020, à 19:05)

Hors ligne

#22 Le 21/05/2020, à 19:29

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

@bruno Sais-tu si on retrouve ce même problème avec mariaDB ?

Hors ligne

#23 Le 21/05/2020, à 19:45

krodelabestiole

Re : Vérification sur les droits d'un nouvel utilisateur

bruno a écrit :
mysql> \! sh
kro@minipoutre ~  sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 592
Server version: 10.3.22-MariaDB-1ubuntu1 Ubuntu 20.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> mysql> \! sh
# whoami
root
#

waoooo....

c'est bon à savoir !

Hors ligne

#24 Le 21/05/2020, à 20:44

bruno

Re : Vérification sur les droits d'un nouvel utilisateur

Ce n'est pas un problème c'est une fonctionnalité wink La commande est référencée dans les docs comme system, \! est un raccourci wink

À ma connaissance cela fonctionne avec toutes les versions de MySQL, MariaDB et Perconna. Il me semble que la commande system ne fonctionne pas si on accède à un serveur distant. Je n'ai pas de serveur qui autorise les accès distants sous la main pour tester mais je le ferai.
On peut aussi accéder aux fichiers depuis un shell pgsql mais c'est plus complexe : https://www.postgresql.org/docs/current … IN-GENFILE

@kro : Évidemment si tu connectes à MySQL en root, tu obtiens un shell root wink

N.B.: Je n'ai pas trouvé si on pouvait bloquer la commande system dans la configuration de mysql/mariadb.

Dernière modification par bruno (Le 21/05/2020, à 20:51)

Hors ligne

#25 Le 21/05/2020, à 23:34

MicP

Re : Vérification sur les droits d'un nouvel utilisateur

bruno a écrit :

…Il me semble que la commande system ne fonctionne pas si on accède à un serveur distant. Je n'ai pas de serveur qui autorise les accès distants sous la main pour tester mais je le ferai.…

Alors ce n'est plus le même contexte que décrit par den66 puisque les connexion se feront à distance.
Il faudra vérifier ça, par curiosité.

======
De toutes façons, je pense que Navicat se connectera sans doute directement à la BDD par un genre de mysql-client version graphique avec des jolis boutons, et tout et tout.
Il faudra demander à l'utilisateur de Navicat ce qu'il faudrait mettre en place sur la BDD pour qu'il puisse se connecter sur le port 3306.

Dernière modification par MicP (Le 22/05/2020, à 10:26)

Hors ligne