Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
powershell_password [2019/11/22 11:18] – créée nekanpowershell_password [2021/03/05 16:04] (Version actuelle) nekan
Ligne 1: Ligne 1:
-~~CLOSETOC~~ +====== Sécurisation d'un mot de passe =====
-===== Sécurisation d'un mot de passe =====+<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 18:38//
  
 On peut être amené à fournir un mot de passe dans un script afin de d'obtenir les droits d'exécution ou tout simplement pour s'authentifier pour envoyer un mail. On pourrait écrire le mot de passe en clair dans le script mais en terme de sécurité, c'est pas terrible. En effet, n'importe qui visionnant le script pourra le voir et donc l'exploiter. Pour palier à ce problème, Powershell nous met à disposition les objets de type ''SecureString''. On peut être amené à fournir un mot de passe dans un script afin de d'obtenir les droits d'exécution ou tout simplement pour s'authentifier pour envoyer un mail. On pourrait écrire le mot de passe en clair dans le script mais en terme de sécurité, c'est pas terrible. En effet, n'importe qui visionnant le script pourra le voir et donc l'exploiter. Pour palier à ce problème, Powershell nous met à disposition les objets de type ''SecureString''.
Ligne 9: Ligne 9:
 Les cmdlets afférents à SecureString permettent de chiffrer une chaîne de caractères, ce qui nous permet de la stocker dans un fichier pour un déchiffrement ultérieur. Le chiffrement englobe l'identifiant de l'utilisateur qui exécute le chiffrement ainsi que l'identifiant de la machine sur laquelle le chiffrement est effectué. De cette manière, le fichier ne peut être décrypté que par le même utilisateur sur la même machine. Même si de l'aveu de Microsoft, ce n'est pas une sécurité absolue, dans le cadre d'une protection plus globale, cela est suffisant. Les cmdlets afférents à SecureString permettent de chiffrer une chaîne de caractères, ce qui nous permet de la stocker dans un fichier pour un déchiffrement ultérieur. Le chiffrement englobe l'identifiant de l'utilisateur qui exécute le chiffrement ainsi que l'identifiant de la machine sur laquelle le chiffrement est effectué. De cette manière, le fichier ne peut être décrypté que par le même utilisateur sur la même machine. Même si de l'aveu de Microsoft, ce n'est pas une sécurité absolue, dans le cadre d'une protection plus globale, cela est suffisant.
  
-==== Chiffrement et stockage ====+===== Chiffrement et stockage =====
  
-<code:ps1># On demande à d'entrer un mot de passe.+<sxh powershell># On demande à d'entrer un mot de passe.
 # On le convertit. # On le convertit.
 # On sauvegarde le tout dans un fichier. Le nom est purement arbitraire. # On sauvegarde le tout dans un fichier. Le nom est purement arbitraire.
  
 Read-Host "Entrez le mot de passe" -AsSecureString | ConvertFrom-SecureString | Out-File ".\data.crypt" Read-Host "Entrez le mot de passe" -AsSecureString | ConvertFrom-SecureString | Out-File ".\data.crypt"
-</code>+</sxh>
  
 A noter que l'on peut renforcer le chiffrement au niveau AES-192 en utilisant le paramètre ''-Key'' avec une table de 24 entier compris entre 0 et 255. La syntaxe est alors : A noter que l'on peut renforcer le chiffrement au niveau AES-192 en utilisant le paramètre ''-Key'' avec une table de 24 entier compris entre 0 et 255. La syntaxe est alors :
  
-<code:ps1>$Key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)+<sxh powershell>$Key = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
 Read-Host "Entrez le mot de passe" -AsSecureString | ConvertFrom-SecureString -Key $Key | Out-File ".\data.crypt" Read-Host "Entrez le mot de passe" -AsSecureString | ConvertFrom-SecureString -Key $Key | Out-File ".\data.crypt"
-</code>+</sxh>
  
 Évidement, on peut aussi stocker notre table d'encryption dans un SecureString intermédiaire et la déchiffrer avant de l'utiliser pour chiffrer le mot de passe. Évidement, on peut aussi stocker notre table d'encryption dans un SecureString intermédiaire et la déchiffrer avant de l'utiliser pour chiffrer le mot de passe.
  
-==== Déchiffrement ====+===== Déchiffrement =====
  
 Chiffrer, c'est bien beau mais il faut pouvoir déchiffrer ensuite pour pouvoir utiliser le contenu protégé. pour cela, on utilisera la cmdlet ConvertTo-SecureString : Chiffrer, c'est bien beau mais il faut pouvoir déchiffrer ensuite pour pouvoir utiliser le contenu protégé. pour cela, on utilisera la cmdlet ConvertTo-SecureString :
  
-<code:ps1># Dans le cas d'une encryption simple+<sxh powershell># Dans le cas d'une encryption simple
 $MDPCryptFile = ".\data.crypt" $MDPCryptFile = ".\data.crypt"
 $SecureStringPassword = Get-Content -Path $MDPCryptFile | ConvertTo-SecureString $SecureStringPassword = Get-Content -Path $MDPCryptFile | ConvertTo-SecureString
Ligne 40: Ligne 40:
  
 # Dans les deux cas, le mot de passe crypté précédemment sera décrypté et stocké dans la variable $SecureStringPassword sous la forme d'un objet SecureString # Dans les deux cas, le mot de passe crypté précédemment sera décrypté et stocké dans la variable $SecureStringPassword sous la forme d'un objet SecureString
-</code>+</sxh>
  
 A noter aussi qu'un objet SecureString peut être crypté à l'aide d'un certificat, ce qui renforce d'autant plus sa sécurité. A noter aussi qu'un objet SecureString peut être crypté à l'aide d'un certificat, ce qui renforce d'autant plus sa sécurité.
- 
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 18:38// 
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  • powershell_password.1574417929.txt.gz
  • Dernière modification : 2019/11/22 09:18
  • (modification externe)