Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
powershell_util [2019/02/24 19:05] – [Sécurisation d'un mot de passe] nekanpowershell_util [2021/03/05 16:50] (Version actuelle) nekan
Ligne 1: Ligne 1:
 +<alert type="danger">Archivage suite à une refonte de la présentation.</alert>
 +
 ====== Fonctions utiles ====== ====== Fonctions utiles ======
  
Ligne 10: Ligne 12:
   * Référence ConvertTo-SecureString : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertto-securestring?view=powershell-6|Microsoft]]   * Référence ConvertTo-SecureString : [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/convertto-securestring?view=powershell-6|Microsoft]]
  
-Les cmdlets afférents à SecureString permettent de crypter une chaîne de caractères, ce qui nous permet de la stocker dans un fichier pour un décryptage ultérieur. Le cryptage englobe l'identifiant de l'utilisateur qui exécute le cryptage ainsi que l'identifiant de la machine sur laquelle le cryptage 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.
  
-==== Cryptage 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 cryptage 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écrypter avant de l'utiliser pour crypter 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écryptage ====+==== Déchiffrement ====
  
-Crypter, c'est bien beau mais il faut pouvoir décrypter 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 43: Ligne 45:
  
 # 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é.
Ligne 51: Ligne 53:
 L'envoi de mail est très utile pour informer, transmettre un rapport, etc... Pour cela, nous pouvons utiliser la commande Send-MailMessage : L'envoi de mail est très utile pour informer, transmettre un rapport, etc... Pour cela, nous pouvons utiliser la commande Send-MailMessage :
  
-Référence : [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Send-MailMessage?view=powershell-6|Microsoft]]+  * Référence : [[https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Send-MailMessage?view=powershell-6|Microsoft]]
  
-<code:ps1># On prépare d'abord les arguments de la commande+<sxh powershell># On prépare d'abord les arguments de la commande
 # L'expéditeur # L'expéditeur
 $From = "test@shyrkasystem.com" $From = "test@shyrkasystem.com"
Ligne 72: Ligne 74:
 # fichiers .htm et additionner les chaînes de caractère ou écrire un chaine de caractère contenant les balises HTML # fichiers .htm et additionner les chaînes de caractère ou écrire un chaine de caractère contenant les balises HTML
 # et les variables. # et les variables.
-# Si le corps et en HTML, on rajoutera le paramètre -BodyAsHtml+# Si le corps est en HTML, on rajoutera le paramètre -BodyAsHtml
  
 # Le serveur SMTP # Le serveur SMTP
Ligne 97: Ligne 99:
 # Finalement, on ajoute tous nos arguments à la cmdlet # Finalement, on ajoute tous nos arguments à la cmdlet
 Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -BodyAsHtml -SmtpServer $SMTP -Port $Port -UseSsl -Credential $Credential -Attachments $Attachment -Encoding $Encoding Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -BodyAsHtml -SmtpServer $SMTP -Port $Port -UseSsl -Credential $Credential -Attachments $Attachment -Encoding $Encoding
-</code>+</sxh>
  
 ===== Notifications ===== ===== Notifications =====
  
-Tout comme les mails, les notifications à l'écran peuvent être utiles. Personnellement, je ne les utilise pas trop, l'essentiel de mes scripts se faisant sur un serveur sur lequel je n'ai pas constamment les yeux braqués. Je p^réfère les mails qui ont le bénéfice de laisser une trace.+Tout comme les mails, les notifications à l'écran peuvent être utiles. Personnellement, je ne les utilise pas trop, l'essentiel de mes scripts se faisant sur un serveur sur lequel je n'ai pas constamment les yeux braqués. Je préfère les mails qui ont le bénéfice de laisser une trace.
  
-<code:ps1># On charge les Assenbly Windows+<sxh powershell># On charge les Assenbly Windows
 Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Windows.Forms
  
Ligne 125: Ligne 127:
 # On règle la durée d'affichage en ms # On règle la durée d'affichage en ms
 $balloon.ShowBalloonTip(5000) $balloon.ShowBalloonTip(5000)
-</code>+</sxh>
  
 On peut aussi utiliser ce code : On peut aussi utiliser ce code :
  
-<code:ps1># On charge les Assembly Windows+<sxh powershell># On charge les Assembly Windows
 [reflection.assembly]::loadwithpartialname("System.Windows.Forms" [reflection.assembly]::loadwithpartialname("System.Windows.Forms"
 [reflection.assembly]::loadwithpartialname("System.Drawing") [reflection.assembly]::loadwithpartialname("System.Drawing")
Ligne 144: Ligne 146:
 # On lance la notification. La aussi, on définira l'icône par None, Info, Warning ou Error # On lance la notification. La aussi, on définira l'icône par None, Info, Warning ou Error
 $notify.showballoontip(10,$title,$Message, [system.windows.forms.tooltipicon]::error) $notify.showballoontip(10,$title,$Message, [system.windows.forms.tooltipicon]::error)
-</code>+</sxh>
  
-Une autre solution est d'utiliser le module BurnToast.+Une autre solution est d'utiliser le module BurntToast.
  
-Référence : [[https://github.com/Windos/BurntToast|GitHub]]+  * Référence : [[https://github.com/Windos/BurntToast|GitHub]]
  
-<code:ps1># D'abord, il faut installer le module+<sxh powershell># D'abord, il faut installer le module
 Install-Module BurntToast Install-Module BurntToast
  
 # Ensuite, on peut l'utiliser comme on le souhaite. On va d'abord créer nos variables # Ensuite, on peut l'utiliser comme on le souhaite. On va d'abord créer nos variables
-# Le notificateur (celui qui envoie la notification, un utilisateur, un programme, le script...) 
-$Notificateur = "Script.ps1" 
- 
 # L'icône ou l'image # L'icône ou l'image
 $Logo = .\logo.png $Logo = .\logo.png
Ligne 164: Ligne 163:
  
 # On envoie la notification # On envoie la notification
-New-BurntToastNotification -AppId $Notificateur -AppLogo $Logo -Text $Text +New-BurntToastNotification -AppLogo $Logo -Text $Text 
-</code>+</sxh>
  
  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 18:38//  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/24 18:38//
 +
 +~~DISCUSSION~~
  • powershell_util.1551031543.txt.gz
  • Dernière modification : 2019/02/24 17:05
  • (modification externe)