Virtual Smart Card Logon using TPM for Windows 10 Guest on Hyper-V Host

Hyper-V sunucularda çalışan onlarca sanal bilgisayarın oturum bilgileri bellekte tutulur. Bu da güvenlik zaafiyeti oluşturur. Bu makalemizde Credantial Guard aktif edilmiş Hyper-V sunucusunda Windows 10 yüklü guest’lere akıllı kartlar ile logon olacağız. Böylelikle credantial guard ile oturum bilgilerini bellekten izole ederken, TPM kullanan sanal akıllı kartlar ile guest’lerimizde fiziksel logon güvenliğini sağlayacağız. Credantial guard hakkında daha fazla bilgi için buradaki makaleme bakabilirsiniz.

Fiziksel Smart Kartlar, kimlik doğrulaması ve veri şifreleme yaparak verilerin güvenli bir şekilde korunmasını sağlayan, harici olarak kullanılan cihazlardır. Kripto işlemleri için kendi üzerlerinde bulunan devreleri kullanırlar. Sanal Akıllı Kartlar (VSC) ise, tamamen fiziksel smart kartlar ile aynı özelliklere sahiptirler ve artık neredeyse her bilgisayarda bulunan TPM (Trusted Platform Module) çipini kullanırlar. Sanal akıllı kartlar geleneksel akıllı kartların temel üç özelliğini aynen sağlarlar:

  1. Export edilemezlik (non-exportability) : Sanal akıllı kartlar bilgisayarınızdaki TPM kullanılarak şifrelendiğinden başka bilgisayarlarda çalışmazlar. Tersine mühendislik yapmaya ve içindeki bilgilerin alınmasına izin vermezler.
  2. Yalıtılmış şifreleme (isolated cryptography) : Şifreleme veya şifre çözme işlemi TPM içerisinde yapılır ve hiçbir zaman işletim sisteminin kullandığı belleğe alınmaz.
  3. Kırılma önleyici (anti-hammering) : PIN yanlış girildiğinde (hızlıca ve birkaç kez) logon işlemini engellemek yerine TPM tümüyle kilitlenir. Açmak için admin müdahalesi gerekir.

TPM modülü tümleşik olarak günümüzde hemen her bilgisayarda bulunduğundan, sanal akıllı kartlar ile edinilen güvenlik daha ucuzdur. Ayrıca donanım satın almanıza gerek yoktur. Bu da maliyetinizi düşürür. Fiyat ve erişebilirlik avantajının yanında IT yöneticilerine, yönetimsel anlamda bazı kolaylıkları da sunar. Daha fazla ayrıntı için buraya bakabilirsiniz.

Gereksinimler:

  1. Hyper-V host : Windows Server 2016 / Windows 10.
  2. VM Guest : Windows 10 ve Domaine join.
  3. Domain Controller (DC) : En az Windows Server 2012 R2,
  4. Certificate Authority (CA) : En az Windows Server 2012 R2 ve domaine join olacak.

Hyper-V Host Üzerinde Yapılacaklar:

1) Sunucumuzda UEFI ve Secure Boot açık olmalıdır. Basitçe msinfo32 aracıyla kontrol edin.

2) Credential Guard’ı aktif edin: Run > gpedit.msc > Computer Configuration > Administrative Templates > System > Device Guard bölümünden Turn On Virtualization Based Security politikasına çif tıklayın ve politikayı enable edin.

3) Hyper-V izolated mode aktif edin: Run > Appwiz.cpl
Windows özelliklerinden izolated mode kutusunu işaretleyin ve sistemi yeniden başlatın.

4) Hyper-V konsolundan Windows 10 VM seçeneklerine gelerek Enable Secure Boot ve Enable Trusted Platform Module özelliklerini aktif edin.

CA ve DC Üzerinde Yapılacak İşlemler:

Akıllı kartlar ile logon olunurken kullanıcıya özel sertifika kullanılır. Bu sertifika domain genelinde yetkili olan CA tarafından üretilmelidir. CA, PKI seviyesinde yapılandırılmış olmalıdır. Yapılandırma ayarları aşağıda gösterilmiştir.

1) Add role > Active Directroy Certificate role

2) Certification Authorty

3) Kurulum bittikten sonra Configure Active Directory Certificate Services üzerine gelerek yapılandırmaya devam ediniz.

4) Certification Authorty seçin.

5) Enterprise CA seçin.

6) Root CA seçin.

7) Create a new private key seçin.

8) Specify the cryptopraphic options aşağıdaki gibi ayarlayın.

9) CA domainde olduğundan Common name of this CA aşağıdaki parametrelere benzer şekilde gelecektir. Sunucunun üreteceği tüm sertifikalarda bu isim gözükecektir. Dilerseniz özel bir isim tanımlayabilirsiniz. Özel bir isim tanımladığınızda distinguished name otomatik değişecektir

10) Specify the valid period ile sununcunun ne kadar süre ile sertifika üreteceğini tanımlayın. Varsayılan 5 yıldır ve daha sonra değiştirilebilir.

11) Sertifika ve talep loglarının tutulacağı yolu belirtin.

Sunucunun domain boyunca tanınması ve yetkili olabilmesi için sunucu sertifikasının (CA Certificate) tüm DC’lere gönderilmesi gerekir. Bunun bir kaç yolu vardır. En kolayı GPO ile dağıtmak yolu olmakla beraber sertifikanın export edilmesi ilk adımdır.

12) CA üzerinde Run > certmgr.msc > Trusted Root Certification Authorty yolunda CA sertifikasını bulun. Üzerinde sağ tuş/Export > Cryptographic Message Syntax Standard – PKCS #7 (.P7B) formatı ile dışarı alın.

13) DC üzerinde Domain Group Policy Management > Domain name > Domain Controller > Deafult Domain Policy üstünde sağ klik/Edit seçin.

14) Computer Configuration > Windows Settings > Security Settings > Public Key Policices > Trusted Root Certificate Authortiy yoluna CA sertifikasınızı import edin. Sunucu sertifikanız aşağıdaki gibi görünmelidir.

15) Domain Controller OU’su üzerinde Group Policy Update komutunu uygulayın.

Nihayet CA sunucusu Virtual Smart Card Logon için sertifika üretebilir durumdadır. Bu sertifika yalnızca kişiye özeldir. Sanal akıllı kart aygıtınıza yüklenecektir. Tanımlanan süre boyunca aktiftir. Süre dolduğunda basitçe re-enroll edilir.

16) CA üzerinde Run > certsvr.msc > Certificate Templates > Manage yolunu takip ederek ile şablonların olduğu bölüme gidin.

17) Şablon listesinden Smart Card Logon isimli şablonu bularak sağ click > Duplicate Template seçin.

18) Compability sekmesindeki ayarları resimde görünen şekilde değiştirin. (Certification Authority Windows Server 2012 R2, Certificate recipent Windows 8.1 / Windows Server 2012 R2. List boxları değiştirirken sorulan sorulara YES diyerek geçiniz.)

19) General sekmesindeki ayarları resimde görünen şekilde değiştirin. (Template display name: TPM Virtual Smart Card Logon veya daha özel bir isim verebilirsiniz.
Valid period 1 year, Renewal period 6 weeks olarak kalabilir. Bu ayar ile 6 haftada bir sertifika yenileme yapılması gerekmektedir.
Publish Certificate in Active Directory seçeneği işaretlenerek kullanıcı sertifikası AD üzerinden yayınlanmaya başlanır.)

20) Repuest Handling sekmesindeki ayarları resimde görünen şekilde değiştirin. (Purpose : Signature and Smart Card Logon.)

21) Cryptograpy sekmesindeki ayarları resimde görünen şekilde değiştirin. (Requests must use on of the following providers radyo butonunu ve Microsoft Base Smart Card Crypto Provider seçeneğini seçin.)

22) Opsiyonel olarak eğer dilerseniz Key Storage Provider (KSP) seçebilirsiniz. Provider Category altından Key Storage Provider seçtikten sonra Requests must use on of the following providers radyo butonunu ve Microsoft Smart Card Key Storage Provider seçeneğini seçin.

23) Security sekmesinde Authenticated User grubuna Enroll yetkisi verin.

Duplicate edilen şablon TPM Virtual Smart Card Logon ismiyle şablon listesinde gözükecektir.

24) Certificete Templates bölümüne geri dönün. Certificate Templates üstünde sağ klik > New > Certificate Template to Issue seçin ve ardından oluşturduğunuz TPM Virtual Smart Card Logon şablonu seçin.

Bu değişikliklerin Forest bazında geçerli olması biraz zaman alacaktır. Sunucuyu restart edebilirsiniz veya CA servislerini restart edebilirsiniz.

Client Tarafında Yapılacak İşlemler:

VM tarafında ilk olarak sanal akıllı kart aygıtı oluşturulur. Bu aygıt Tpmvscmgr.exe aracı kullanılarak oluşturulur ve yönetilir. Daha fazla detay için buraya bakabilirsiniz.

1) Admin hakkı cmd penceresi açarak aşağıdaki komutu kullanın:

tpmvscmgr.exe create /name myVirtualSC /AdminKey random /PIN default /generate

Burada oluşturulan PIN sanal kartı açmak için kullanılır ve default parametresi ile 12345678 olarak belirlenmiştir.
Adminkey random parametresi ile 48 karakterli ve karakterleri gösterilmeyen bir yönetici şifresi belirlenmiştir.
Bu parametreler ile oluşturulan sanal kartlar yönetilemez özelliğe sahiptir. Eğer yönetilemez sanal kart oluşturmak istiyorsanız bu parametreler ile oluşturabilirsiniz.

Yönetilebilen sanal kart oluşturmak için ise default ve random parametreleri yerine PROMPT parametresi kullanmalısınız. Örnek komut dizimi:

tpmvscmgr.exe create /name myVirtualSC /AdminKey PROMPT /PIN PROMPT /generate

2) Sanal akıllı kart için sertifika talep edin. Client üzerinde run > certmgr.msc > personal > certificates bölümüne gidin ve üzerinde sağ klik > All Tasks > Repuest New Certificates seçin.

3) Configured by your Administrator altında gözüken politikayı seçin ve devam edin.

4) TPM Virtual Smart Card Logon seçeneğini işaretleyin ve Enroll üzerine tıklayın, pin sorulduğunda 12345678 girin.

5) Logoff olun ve Windows 10 logon ekranına gelin.

6) Artık akıllı kart seçeneği gözükecektir. Belirlediğiniz PIN ile logon olabilirsiniz.

Kullanıcıya ait sertifikayı AD üzerinde de görebilirsiniz.

TPM modülü ile oluşturulan sanal akıllı kartların gerçeğinden farkı olmaması, hemen her bilgisayarın artık TPM modülü barındırması sebebiyle fiziksel akıllı kartlardan daha uygun fiyatlı olması, harici donanım gerektirmemesi gibi bazı avantajları vardır. Elbette bu tek başına bir logon seçeneği değildir. İlave güvenlik sağlayan bir logon seçeneğidir.

Faydalı olması dileklerimle,

Samet.