PowerShell: Parolalarınızı şifreleyin, saklayın ve Uzaktan Kimlik Doğrulama için kullanın (Protect-CmsMessage)


Sertifikalara gelince birçok kişi kaçıyor. Konu pek popüler değil ama her şey korkulduğu kadar kötü değil. Bu yazıda size şifrenizi veya şifrelerinizi sabit diskinizde şifrelenmiş biçimde nasıl saklayacağınızı göstereceğim. Genel/özel anahtar işlemi nedeniyle, dosyayı açabilen ve şifreleri okuyabilen tek kişi, sertifikayı (özellikle özel anahtarı) elinde bulunduran kullanıcıdır. Daha sonra bu şifrenin bazı uzaktan işlemler için nasıl kullanılacağını göstereceğim.

Bu makale ne için?

Her uzaktan iletişim yaptığınızda sizden kimlik bilgileriniz istenecektir. Bu sizi rahatsız ediyorsa okumaya devam edin. Şifrenizi kriptografiyle korunan sabit diskimize kaydedeceğiz. Amacımız, uzak bağlantı kurmak için şifrelenmiş parolanızı kullanan, Enter-PSSessionPW adı verilen yeni ve gelişmiş bir işlevdir.

Güvenlik Notu

Gösterilen çözüm %100 güvenli değildir. Ancak bunu daha güvenli hale getirmek mümkün. Daha fazla bilgi için bu makalenin son bölümüne bakın.

Ama önce genel sürece bir göz atmamız gerekiyor.

Asimetrik Kriptografi

Bu makalede ne yapacağımızı tam olarak anlamak için öncelikle size Asimetrik Kriptografiye genel bir bakış sunayım. Koruma-CmsMessage sürecini düşünün:

Bu, özel anahtarı yalnızca verilerin şifresini çözmek için kullanabileceğimiz anlamına gelir. Açık anahtarla verileri şifreleyebiliriz.

Bu işlem, genel anahtarın Petra kullanıcısına verilmesiyle kontrol edilebilir. Daha sonra bir dosyanın içeriğini şifrelemek için ortak anahtarı kullanır. Ancak, özel anahtarı eksik olduğundan dosyanın şifresini çözemez (yalnızca pewa2303'te bulunur). Bunu göstermek için genel anahtarı dışarı aktardım ve Petra bunu sertifika deposuna (Kişisel - Sertifikalı) yükledi. Şimdi şunlar oluyor:

Petra, pewa2303 sertifikasının ortak anahtarıyla içeriği şifreleyebiliyor. Beklenildiği gibi.

Umduğu gibi Petra, özel anahtarı olmadığı için içeriğin şifresini çözemiyor.

Ancak öte yandan pewa2303, özel anahtarın sahibi olduğu için mesajın şifresini çözebilir. Kafanız karışmasın pewa2303=yönetici ?

son dönem gösteri ?

Hadi çalışalım!

Belge Şifreleme için yeni bir Sertifika oluşturma

Yukarıda gösterilenleri yapabilmek için öncelikle bir sertifikaya ihtiyacımız var. Bunu yapmanın tam olarak iki yolu vardır: 1. Kamuya ait bir sertifika yetkilisinden bir tane alırsınız veya yoksa bir tane satın alırsınız ve 2. kendiniz için bir tane yaratırsınız. Çoğu okuyucunun sertifikası olmadığını varsaydığım için şu anda bir sertifika oluşturmak için birlikte çalışıyoruz.

Tamam hadi gidelim. Tek yapmanız gereken aşağıdaki komutu PowerShell oturumunuza kopyalamak. Pewa2303 adı özelleştirilmelidir. 2018'de artık makecert gibi 3. parti araçlara ihtiyacımız yok. Bunun için tanrıya veya PowerShell Ekibine şükürler olsun!


New-SelfSignedCertificate -DnsName pewa2303 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsage KeyEncipherment,DataEncipherment,KeyAgreement -Type DocumentEncryptionCert

Yukarıdaki parmak izine dikkat edin. Aşağıdakiler için bu numaraya ve özel anahtarı içeren pfx dosyası için bir şifreye ihtiyacımız var.

Şununla kontrol edin:


certmgr.msc

ŞİMDİ bu sertifikayı yedeklemenizi şiddetle tavsiye ediyorum. Daha sonra değil. Daha sonra asla demek değildir. ?


Export-PfxCertificate -Cert Cert:\CurrentUser\My\9209C2F587CC95B6F229279ACDB8B3765C1D054B -FilePath C:\Temp\cert.pfx -Password (ConvertTo-SecureString -AsPlainText '123' -Force)

Artık sertifikamızın yedeğini aldık. En iyisi benden daha iyi bir şifre seçip dosyayı sabit disk dışında bir ortamda saklamanız ?

Artık bazı kriptografik işlemlere geçebiliriz.

Şifrenizi şifrelemek

Özetle: Sertifikamız var. Bu sertifikayı yedekledik. Artık bu sertifikayı bir dosyayı şifrelemek için kullanabiliriz. Öncelikle yeni bir dosya oluşturuyoruz.


New-Item -ItemType File -Path C:\Temp\pwd.txt

Daha sonra şifrelenmiş şifremizi bu dosyaya yerleştiriyoruz. Burada ilk adımda tanımladığınız sertifikanın adını (cn=pewa2303) sağlamamız gerekiyor.


'password' | Protect-CmsMessage -To cn=pewa2303 -OutFile C:\Temp\pwd.txt

Hızlı bir kontrol ne olduğunu gösterir:

Güzel, içinde şifremizin olduğu şifrelenmiş bir dosyamız var. Ve bu gezegende onun şifresini çözebilecek tek kişi sizsiniz (özel anahtarı unutmayın!):


Unprotect-CmsMessage -Path C:\Temp\pwd.txt

Uzak Ana Bilgisayarlara bağlanmak için bu yöntemi kullanma

Enter-PSSession cmdlet'i bir kimlik bilgisi parametresi sunar. İlk adımımız şifreyi bir değişkende saklamaktır.


$password = ConvertTo-SecureString (Unprotect-CmsMessage -Path C:\Temp\pwd.txt) -AsPlainText -Force

Daha sonra yeni bir PSCredential Object oluşturuyoruz. Kullanıcı adınızı girin.


$cred= New-Object System.Management.Automation.PSCredential ('sid-500\administrator', $password )

Artık uzak ana bilgisayarlara bağlanmak için bu kimlik bilgisi $cred değişkenini kullanabiliriz.


Enter-PSSession -ComputerName dc01 -Credential $cred

Ancak bu yaklaşım hantal ve sıkıcıdır. Öyleyse bunu otomatikleştirelim.

Yeni bir işlev: Enter-PSSessionPW

PowerShell ISE'yi açın. Aşağıdaki kodu kopyalayın.


function Enter-PSSessionPW {

[CmdletBinding()]

param (

[Parameter(Position=0)]
$ComputerName='localhost'

)

$password = ConvertTo-SecureString (Unprotect-CmsMessage -Path C:\Temp\pwd.txt) -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("sid-500\administrator", $password)

Enter-PSSession -ComputerName $ComputerName -Credential $cred

}

Yeşil düğmeye basın. Komut artık kullanılabilir ve şifrelenmiş dosyadaki parolanızı kullanır. Bilgisayaradı parametresinin varsayılan değeri localhost'tur.

Bilgisayarda başka bir kullanıcının oturum açtığını varsayalım. Bu kullanıcı dosyanın şifresini çözemez çünkü kullanıcının özel anahtarı yoktur. Bu nedenle komut çalışmaz.

Kalıcı hale getirin

Yaklaşımımı beğendiyseniz PowerShell ISE'yi açın. İşlevi ISE oturumunuza kopyalayın. C:\Program Files\Windows PowerShell\Modules konumunda bir klasör oluşturun ve kodu psm1 dosyası olarak kaydedin. Dosya adınızla klasör adınızın eşleştiğinden emin olun.

Artık PowerShell, PowerShell her başlatıldığında özel modülü yükleyecektir.

Güvenlik endişeleri

Şifrenizi herhangi bir yere yazmamak her zaman daha iyidir. Yukarıda gösterilen senaryoda parola şifrelenmiş biçimde saklanır. Sertifikanıza ulaşan herkesin şifrenizin şifresini çözebileceğini unutmayın. Sertifikanın ayrı bir bellekte saklandığını ancak kilidi açılmış bilgisayarınıza erişebilen herkesin sertifikaya da erişebileceğini unutmayın. Aşağıdaki senaryoları göz önünde bulundurun.

Güvenlik açıkları

  • Yönetici, kullanıcının şifresini değiştirebilir ve kullanıcının kimlik bilgileriyle oturum açabilir. Daha sonra yöneticinin sertifikaya erişimi vardır ve bu özel anahtardır
  • Birisi bilgisayarı Hiren's Boot gibi bir önyükleme diskiyle başlatabilir. Daha sonra kullanıcının hesabının şifresini sıfırlayabilir, bu kullanıcı olarak giriş yapabilir ve sertifikayı çalabilir.

Karşı önlemler

  1. Hiç kimsenin bilgisayarınızı bir önyükleme diskiyle başlatamayacağından emin olmak için BitLocker Sürücü Şifrelemesi'ni yükleyin
  2. Bilgisayarın tek yöneticisi olduğunuzdan emin olun
  3. Sertifika, özel anahtar dışarı aktarılamayacak şekilde yapılandırılmalı ve sertifika, resmi bir sertifika yetkilisinden gelmelidir.

İlgili makaleler