Contenu | Rechercher | Menus

Annonce

La nouvelle clé USB Ubuntu-fr est en prévente
Rendez-vous sur la boutique En Vente Libre

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 08/07/2019, à 17:28

lebossejames

Sécurisation Login/password déclaré dans un script

Bonjour,

J'ai un script qui utilise le couple login/password mais ils sont déclaré en clair. Quel est la meilleur solution qui pourrait être appliqué au cas où on pirate mon pc afin de récupérer ce script pour les protégés?

Est-ce la récupération via un fichier (exemple: fichier .json ) se trouvant sur un serveur googledrive suffira ou bien plus?

Merci d'avance.

Hors ligne

#2 Le 08/07/2019, à 17:53

Watts

Re : Sécurisation Login/password déclaré dans un script

Bonjour,

Peut être implémenter du hachage (comme le fait Unix avec mes mots de passe stockés dans /etc/shadow). C'est à dire que tu ne stockes que les hachés de ton login et mot de passe, et lorsque tu rentres ces dernières, tu fais la comparaison entre les hachés. Je te conseille de t'intéresser à ce point, si tu cherches la sécurité


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#3 Le 08/07/2019, à 18:07

kamaris

Re : Sécurisation Login/password déclaré dans un script

Oui je pensais aussi à ça, tu peux calculer le hash avec la commande

openssl passwd -6 -salt SALT PASSWD

en t'inspirant pour la valeur de SALT de ce que te renvoie

sudo cat /etc/shadow | grep "$USER"

et en remplaçant PASSWD par ce qu'il faut.

Cf. man passwd.1ssl et ce petit article si tu veux (plus particulièrement à la section « How is an encoded password stored in /etc/shadow file […] »).

Dernière modification par kamaris (Le 08/07/2019, à 18:10)

Hors ligne

#4 Le 10/07/2019, à 09:41

lebossejames

Re : Sécurisation Login/password déclaré dans un script

Même si le couple login/password n'est pas celui de la machine c'est un couple permettant l'accès à distance de fichiers?

Merci.

Hors ligne

#5 Le 10/07/2019, à 10:02

Watts

Re : Sécurisation Login/password déclaré dans un script

Tu peux hacher ce que tu veux, la fonction de hachage prends en argument une chaine de caractère, peu importe sa signification


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#6 Le 11/07/2019, à 15:14

lebossejames

Re : Sécurisation Login/password déclaré dans un script

Je vois bien comment créé le hachage mais je ne vois pas à quelle moment il fera la transcription du hachage vers le mot de passe originel requis?

Prenons par exemple mon script Test.sh actuel:

monExecutable login_clair password_clair

Comment procédait de la sorte?

Merci d''avance.

Hors ligne

#7 Le 11/07/2019, à 15:19

Watts

Re : Sécurisation Login/password déclaré dans un script

Je ne suis pas expérimenté là dessus, mais normalement c'est ton login_clair et password_clair qu'il va hacher afin de comparer ce résultat à son stockage (des hachés du bon login et du bon mot de passe). L'intérêt d'une fonction de hachage est que:

clair -> haché: simple

haché -> clair: très difficile


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#8 Le 11/07/2019, à 17:28

erresse

Re : Sécurisation Login/password déclaré dans un script

Bonjour,
Mais dans le script, même sous une forme codée par le hachage, il faut bien mentionner les identifiants...
Dès lors, si quelqu'un liste le script, il va bien voir ce qu'il faut lui passer pour que ça fonctionne.
Par exemple, si j'ai comme identifiants en clair : "toto" et mot de passe "tata", en passant par le hachage, le script recevra "xcvbn" et "qsdfg" pour être validé. Toutefois, ces deux valeurs seront indiquées dans le script, il suffira de les lui fournir (juste en listant le script on peut les voir) et cela validera tout aussi bien, non ?
Où est la sécurité d'une telle procédure ???


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#9 Le 11/07/2019, à 17:41

Watts

Re : Sécurisation Login/password déclaré dans un script

Si tu n'as que le haché et la fonction de hachage (voir le salt), impossible de connaître la chaine de caractère qui va coincider avec le haché. Ou alors il faut faire des attaques brute force, ou de la collision pour le découvrir.

Ou alors tu considères que Unix a une grande faille de sécurité puisque les hachés des mots de passe user est contenu dans un fichier lisible par tous.


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#10 Le 11/07/2019, à 17:45

kamaris

Re : Sécurisation Login/password déclaré dans un script

@erresse : le script doit calculer le hash de ce que l'on lui donne en entrée, et le comparer à ce qu'il a comme données en dur, et non pas comparer directement son entrée à ses données. De même que quand tu tapes ton mot de passe de connexion sous Ubuntu, le système calcule d'abord le hash de ce que tu as tapé, puis le compare au contenu de /etc/shadow.

Hors ligne

#11 Le 11/07/2019, à 18:12

erresse

Re : Sécurisation Login/password déclaré dans un script

Je comprends bien, mais si le script compare le haché avec ses données en dur, où sont elles, ses données ?
Si elles ont quelque part dans le script, on peut donc les voir et si on peut les voir, on peut les passer au script directement, comme si le hachage venait d'être fait... Où est-ce que j'ai faux ?
Pour l'ouverture de la session, certes, l'identification est hachée et comparée avec le contenu du fichier /etc/shadow (que je ne peux pas voir facilement, du moins à ce moment-là), mais surtout, je suis OBLIGÉ de fournir les données d'identification en clair pour que le système les convertisse, je ne peux pas me connecter autrement en passant outre.
Dans le cas du script, qu'est-ce qui empêche de le lister pour voir comment il fonctionne et contourner la sécurité ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#12 Le 11/07/2019, à 18:23

Watts

Re : Sécurisation Login/password déclaré dans un script

Ah oui, evidemment tu dois faire marcher ta fonction de hash une première fois pour avoir des hachés à stocker. Mais les données en clair ne sont jamais sauvegardées, jamais. Et puis si ton script c'est juste "récupérer chaine, passer au hachage, comparer au haché stocké", je comprends pas ce qui te permet de "craquer" la sécurité. La libre consultation du code est, au contraire, au centre de la sécurité


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#13 Le 11/07/2019, à 18:42

kamaris

Re : Sécurisation Login/password déclaré dans un script

erresse a écrit :

Dans le cas du script, qu'est-ce qui empêche de le lister pour voir comment il fonctionne et contourner la sécurité ?

Ça dépend des droits qui y sont appliqués, à qui il appartient, et qui l'exécute. Mais il est vrai que pour que l'utilisateur puisse à la fois exécuter le script et ne puisse pas le lire, il faut ruser, cf. https://forum.ubuntu-fr.org/viewtopic.php?pid=22110008

Hors ligne

#14 Le 11/07/2019, à 18:44

erresse

Re : Sécurisation Login/password déclaré dans un script

Peut-être que je m'explique mal ou insuffisamment, mais c'est cette phase "comparer au haché stocké" qui me pose problème. Il faut bien que ce "haché stocké" soit stocké quelque part où le script peut aller le lire...
Et si le script le peut, on doit le pouvoir également, et ainsi disposer des données hachées qu'il faut pour valider...
On n'a pas besoin de connaître les données en clair, sauf si, comme pour l'ouverture de session, il est obligatoire de les fournir pour passer obligatoirement par la phase de hachage.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#15 Le 11/07/2019, à 18:51

erresse

Re : Sécurisation Login/password déclaré dans un script

Je pense à un moyen qui offrirait un certain degré de sécurité : Ne pas stocker le résultat du hachage, mais créer un fichier dont le nom serait le résultat de ce hachage. Ce fichier contiendrait tout simplement la suite du script, et il serait lancé par le script d'amorçage qui demanderait les données en clair, ferait le hachage nécessaire et appellerait le fichier résultant pour continuer le script.
Ainsi, on ne peut pas connaître le résultat du hachage, puisqu'il n'est stocké nulle part, et si les données en clair fournies sont correctes, le résultat du hachage doit permettre d'atteindre le fichier portant ce nom.
C'est un peu tordu, mais ça pourrait marcher, non ? Qu'en pensez-vous ?

Dernière modification par erresse (Le 11/07/2019, à 18:55)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#16 Le 11/07/2019, à 18:56

Watts

Re : Sécurisation Login/password déclaré dans un script

Je ne comprends pas en quoi les données hachés peuvent te permettre d’interagir avec le script. Dans le cas où tu pourrai accéder aux données sous forme de hash, tu ne pourrai rien faire, les entrer en tant qu'argument du script ne te donnera pas la bonne réponse.

A moins que, et je comprends mal dans ce cas, tu t'inquiètes que le contenu du script soit accessible à n'importe qui, et dans ce cas la demande d'un longin/password soit inutile


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#17 Le 11/07/2019, à 19:00

erresse

Re : Sécurisation Login/password déclaré dans un script

Watts a écrit :

A moins que, et je comprends mal dans ce cas, tu t'inquiètes que le contenu du script soit accessible à n'importe qui, et dans ce cas la demande d'un longin/password soit inutile

Oui, c'est précisément cela ! Si on peut lire le script, on peut savoir ce qu'il fait et comment il le fait.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#18 Le 11/07/2019, à 19:05

kamaris

Re : Sécurisation Login/password déclaré dans un script

@erresse : as-tu lu le lien que j'ai donné plus haut : https://forum.ubuntu-fr.org/viewtopic.php?pid=22110008 ?

Hors ligne

#19 Le 11/07/2019, à 19:06

Watts

Re : Sécurisation Login/password déclaré dans un script

Un peu dur de compréhension mon cerveau parfois lol Doit effectivement avoir une solution particulière à ce problème

EDIT: Un programme en C pourrait être la solution. En tant que binaire, impossible de le lire et de savoir ce qu'il fait exactement. Je ne sais pas si un script bash exécuté via C apparaîtrait tout de même dans la liste des processus

Dernière modification par Watts (Le 11/07/2019, à 19:11)


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#20 Le 11/07/2019, à 19:39

erresse

Re : Sécurisation Login/password déclaré dans un script

kamaris a écrit :

@erresse : as-tu lu le lien que j'ai donné plus haut : https://forum.ubuntu-fr.org/viewtopic.php?pid=22110008 ?

Il me semble que j'avais suivi cette discussion en son temps, mais là, on n'est plus dans le bash s'il faut se compiler des bouts de code en C... Et ça semble tester l'utilisateur pour s'exécuter, pas la fourniture d'une identification qui peut être détenue par plusieurs personnes autorisées.
Mais c'est certainement une voie possible pour résoudre ces problèmes de confidentialité.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#21 Le 11/07/2019, à 19:47

Watts

Re : Sécurisation Login/password déclaré dans un script

C'était néanmoins une bonne question à se poser, merci de m'avoir fait réfléchir là dessus! big_smile


Acer Aspire X3990-Dual boot Windows 7 / Ubuntu 18.04

Hors ligne

#22 Le 23/08/2019, à 11:51

Pending...

Re : Sécurisation Login/password déclaré dans un script

Je ne sais pas où en est la question ?

Il y a toujours la possibilité de chiffrer ton login et password par exemple en base64 que tu vas mettre dans un des dossiers à la racine. Sur ton script, tu fais déchiffrer tes identifiants, par exemple :

- dans un fichier mesidentifiant, placé dans /usr/ :

id : aWRlbnRpZmlhbnQK
pass : cGFzc3dvcmQK

- Pour déchiffrer l'id :

cat /usr/mesidentifiants | grep -o -P '(?<=id : ).*' | base64 -d

- Pour déchriffer le pass :

cat /usr/mesidentifiants | grep -o -P '(?<=pass : ).*' | base64 -d

Après, il reste à voir s'il y a moyen de jouer avec les droits pour empêcher que ton fichier d'identifiants ne soit lu par autre chose que ton script. Tu peux aussi noyer tes identifiants dans un tas de chiffres et de lettres et faire sélectionner par ton script les bons patterns qui correspondent aux id et pass en base64, de telle manière que si quelqu'un venait à lire ton fichier mesidentifiants, il ne puisse en déduire quoi que se soit.

ex :

F5vD7eH54F5vaWRlbnRpZmlhbnQKD7eH548c0Ad8E8Ha8cHcGFzc3dvcmQK54c2Ad8d2c68dhAd8cc5h8eB85

PS : tu dois aussi pouvoir stocker ton fichier mesidentifiants à distance sur un serveur et n'autoriser ton serveur à le délivrer qu'à ton adresse IP (via un simple fichier php). Sur ce fichier php, tu peux ajouter tout un tas de mesures d'identification pour t'assurer que c'est bien de ton ordinateur qu'il s'agit, et même que celui-ci n'a pas été piraté (un script à exécuter au démarrage par exemple, etc., bref les possibilités sont assez larges).

Dernière modification par Pending... (Le 23/08/2019, à 12:06)


Ubuntu / Mint / Windows 10 - Projet : Diablotine 2.0

Hors ligne