===== Comment générer des mots de passe chiffrer/déchiffrer aléatoires dans Linux ===== {{:systeme:linux_logo.jpeg?nolink&100 |}} Dans un environnement multi-utilisateurs Linux, il est une pratique standard pour créer des logins avec un certain mot de passe par défaut. \\ Oui, mais on manque souvent d'imagination pour les créer, du moins j'en manque souvent. Dans cet article, nous allons partager quelques trucs et astuces Linux intéressants pour générer des mots de passe aléatoires et aussi comment chiffrer et déchiffrer les mots de passe. ~~READMORE~~ ==== 1. Générer un mot de passe aléatoire unique de 10 caractères en utilisant la commande "pwgen" ==== Si vous n'avez pas encore installé ''pwgen'', utilisé ''apt-get'' ou ''yum'' pour l'obtenir. Voici le résultat : test@ksh:~# pwgen 10 1 eiH1gooGha test@ksh:~# pwgen 10 1 Taeleequ4w test@ksh:~# pwgen 10 1 ixooB2aong test@ksh:~# pwgen 10 1 Gi7gein3hi test@ksh:~# pwgen 10 1 eiChohCee4 test@ksh:~# pwgen 10 1 Een3au1kub Générer plusieurs mots de passe aléatoires de 50 caractère en une seule fois test@ksh:~# pwgen 50 thaop5Pah0eePa1ais1PaiHie5WooWuhoo2EsaiJ1yohraid4e wee8QueoD4cu8eetee8Aibocaeth3roe8ooquip8yeCohkepha Thahbohhiasoa6idooquahge8Uche7che7iexiev7ahtieXoBe Airee1joocaetieh7Riu1jueG7iewomae4ushai2jakiacuewi jiekaefi5uqueiKephuYimipieyohphu9RaefuaLoodahkooyo yoogau7jaiquetei8mahWaehooThoh2Mah8baeTa9oowee1tho ejomaiSeejeiweivu4shi6chobu2odazahaBa3yeivahn8eelo eveipowe6iev9iquobaiv6ohthaiXosiwoixaotheu9ooxu4oo oh2baiReWo0woo5aeciech0ooJaeJeo6thae6Veshaeg9au3ie rohth0nujue1pho0ish7yo5ciy0kioVeet7QueeNg4ohghua2j nuo4umueng6ijahmoo2iekeiQua1Oozahaixei1EiQu4Jah6do Aivohk5zuiraphaiquu6Ohph0Ahng6sue0yiithee8weewei6x XaiNg1ohR0chohqu6Wieci4Aish2Ioteeleepobaetach8Ahse oboo8seix1pheilei6tioJac6Jatuy5voht7ioYa8ahv3Foh8g phoo8biephae4hau7itaegoo3Ahph4acha9ubaseijae8iu6bo zouxee9yupie1aingooquooph3queicaineo2maekahSie5ceF vaepa1daeshohTheij8yooroome5yaiv0bair0aek4chaing7j quiSheit4iShaiJoo4hap8ufookawoopaeyohchaejif6keiRu cah4rohX1eiM6ingua4ChaeP0oopiepodohvahgheep0ahPhei vii7iec6Ou6eir6iemee0tieth1looloa6ogaeH1neiy4choo9 ==== 2. Vous pouvez utiliser "makepasswd" pour générer des mot de passe aléatoires de longueur donnée ==== Assurez-vous que vous avez installé ''makepasswd''. Générer un mot de passe aléatoire de 10 caractères, ce qui est la valeur par défaut: test@ksh:~# makepasswd xEL01DUh7 test@ksh:~# makepasswd FD5uwVU5J test@ksh:~# makepasswd IfPHmvyqB test@ksh:~# makepasswd fPu6gyRQ test@ksh:~# makepasswd 8K3Y2bEy test@ksh:~# makepasswd rqb6TyqW test@ksh:~# makepasswd o4MEoU7jN test@ksh:~# makepasswd 9iBryfHJad test@ksh:~# makepasswd 8HmK8zwig Générer un mot de passe aléatoire de 50 caractères : test@ksh:~# makepasswd --char 50 5SgXXNoNQV7IzGrecEETREiKLBBjibxBf6ngNYqHyYXatU4ifW test@ksh:~# makepasswd --char 50 e4Xnx27NtKuYqa3YHGy0tX2eLFD7Nxbd07cp5gd0f0RjH4F8BE test@ksh:~# makepasswd --char 50 ECGtd7FwICF1E2dj4T2rJv6hmFuqHGcAK2RjuEKfvGvP1JIYdh test@ksh:~# makepasswd --char 50 H2JdHSuwq2356hpEFvTw6dzmiAMumtwdbSwyqtN5VfT26xf6Mz test@ksh:~# makepasswd --char 50 PKTK2y7LAwtuXNIsnccofSFDYGMf0RqoKCXxiHGGNPWuCQyp24 test@ksh:~# makepasswd --char 50 zgNIejLHJobDpDwNajS4eSSHF5T33Fm8AbLRg5LeyGL0rQ0Kss Générer 7 mots de passe de 20 caractères : test@ksh:~# makepasswd --char 20 --count 7 rKfARgtJznLXzYo1WyPK 49f2EVta8VuWH239UELc KEx9ChY2XwgUPg9QuA7z SNUWWdw2HTvujPUdRP2R aPGmHxXBCqCREiw4pDT2 hU5m38rLWEyvedd9qiCy IdxJM6w6BfmJUNmwVtH8 ==== 3. chiffrer un mot de passe en utilisant le sel ==== Pour ceux qui ne savent pas ce que c'est que le sel. Le sel est une chaîne que le programme peut retrouver d'après le hash puis, connaissant cette chaine (le sel), le programme peut reconstituer un hash à partir du mot de passe en clair : si ce hash résultant est identique au hash stocké, alors le mot de passe est correct. \\ L'intérêt du sel, c'est justement qu'un même mot de passe peut alors avoir plusieurs hash, ce qui empêche les attaques. Sans sel, un attaquant a juste besoin de ce qu'on appelle une "rainbow table" : c'est une table qui donne la correspondance entre tous les mots de passe possibles et tous les hash correspondants dès qu'il a un hash, il trouve le mot de passe en une fraction de seconde en vérifiant dans sa table. \\ Avec sel, l'attaque doit se faire par force brute, ce qui prend plus de temps (de plusieurs minutes à plusieurs années, selon la force de l'algorithme). \\ Le sel est une donnée aléatoire qui sert comme une entrée supplémentaire à la fonction à sens unique afin de protéger le mot de passe contre les attaques par dictionnaire. La commande ci-dessous permet de chiffrer le mot de passe avec le sel. \\ La valeur de sel est prise au hasard. \\ Ainsi chaque fois que vous exécutez la commande ci-dessous, il va générer une sortie différente, car il accepte une valeur aléatoire du sel. test@ksh:~$ mkpasswd ksh ABpwGJKElNQlk test@ksh:~$ mkpasswd ksh Bfo3qxUVX2xx6 test@ksh:~$ mkpasswd ksh BX56s0JKbvLUQ test@ksh:~$ mkpasswd ksh cQHvTGnktA6oU test@ksh:~$ mkpasswd ksh yVwOgViNsgvXw Maintenant nous allons définir une valeur pour le sel. \\ Il va afficher le même résultat à chaque fois. \\ test@ksh:~$ mkpasswd ksh -s do dozjkuz1nOm.s test@ksh:~$ mkpasswd ksh -s do dozjkuz1nOm.s test@ksh:~$ mkpasswd ksh -s do dozjkuz1nOm.s test@ksh:~$ mkpasswd ksh -s do dozjkuz1nOm.s 4. Chiffrer une chaîne genre "ksh-veux-dire-korn-shell" en utilisant le cryptage AES-256-CBC en utilisant le mot de passe genre "ksh" et le sel. test@ksh:~$ echo ksh-veux-dire-korn-shell | openssl enc -aes-256-cbc -a -salt -pass pass:ksh U2FsdGVkX1+ZKDMi0XiqbAQ4Tufz1dq4q/xOwbQMqAEwsP5qWthIPgiKyvk7GMqL Ici, dans l'exemple ci-dessus, la sortie de la commande ''echo'' est un pipeline avec la commande ''openssl'', qui chiffre la chaîne en utilise un Cipher (ENC) avec l'algorithme de chiffrement AES-256-CBC et finalement avec du sel, il est chiffré en utilisant le mot de passe (ksh). 5. Déchiffrer la chaîne ci-dessus en utilisant la commande ''openssl'' utilisant l'algorithme de chiffrement AES-256-CBC souyo@gw01:~$ echo U2FsdGVkX1+ZKDMi0XiqbAQ4Tufz1dq4q/xOwbQMqAEwsP5qWthIPgiKyvk7GMqL | openssl enc -aes-256-cbc -a -d -salt -pass pass:ksh ksh-veux-dire-korn-shell