Microsoft Intune Win32 Software Deployment (FortiClient VPN)
Bir önceki Intune makalemde Line-of-business (LOB) kullanarak MSI uygulaması deployment etmiştik.
Microsoft Intune Google Chrome Deployment – ÇözümPark (cozumpark.com)
Bu yazımızda ise Win32 uygulaması dağıtacağız. Pandemi dönemi ile Homeoffice çalışma modelinde bir artış yaşanmıştı ve kuruluşlar yapılarını homeoffice modeline göre tekrar şekillendirmişti. Bir çok firma çalışanı şirket ortamlarına erişmek için SSLVPN yöntemini kullanarak işlerini yürütüyordu.
Bu yazımızda ise Intune üzerinde Win32 uygulaması dağıtacağız ve bazı yapılandırmaları otomatikleştireceğiz.
Uygulamamız Fortinet’in FortiClient VPN uygulaması olacak ve uygulamayı dağıtırken aynı zamanda yapılandırmalarınıda otomatik olarak yapacağız.
Makale İçeriği;
- Win32 Uygulamaları Nedir?
- Win32 Uygulamaları İçin Ön Koşullar
- ForticlientVPN.msi Uzantısını Elde Etme
- FortiClientVPN MSI Dosyası ve Profilleri Hazırlama
- Intune İçin Win32 Uygulamasını Paketleme
- Intune ile Win32 Uygulaması Dağıtma Adımları
Win32 Uygulamaları Nedir?
Bir önceki Intune makalesinde belirttiğim gibi, Microsoft Intune Win32 uygulamalarını desteklemektedir. Win32 uygulamaları, Windows işletim sistemleri için yazılmış uygulamalar olarak bilinmektedir. Microsoft Intune 32 bit ve 64 bit işletim sistemi mimarisini desteklemektedir.
Win32 uygulamaları ile .msi, .exe, .msix gibi dosya türlerini yönetilmesine olanak tanımaktadır. Microsoft Intune’da Win32 uygulaması Deploy etmeden önce onu ortama göre paketlemeniz gerekmektedir.
Win32 Uygulamaları İçin Ön Koşullar
Microsoft Intune‘da Win32 uygulamalarını deploy etmek ve yönetebilmek için bazı ön koşullar bulunmaktadır.
- Windows 10 ve Üstü İşletim Sistemi
- Azure AD Kaydı
- Cihazların Intune’a kayıtlı olması gerekiyor
- Windows Uygulama boyutunun, 8GB’dan büyük olmaması gerekmektedir.
Not: PowerShell betiği veya Win32 uygulaması kullanıcıya veya bir cihaza hedeflenirse Intune Yönetim Uzantısı (IME) belirtilen cihaza otomatik olarak yüklenmektedir.
ForticlientVPN.msi Uzantısını Elde Etme
Bizim dağıtacağımız ve bazı yapılandırmalarını otomatikleştireceğimiz uygulama FortiClient VPN olacak, FortiClient VPN‘i aşağıdaki linkten indirebilirsiniz.
Product Downloads | Fortinet Product Downloads | Support
Burda belirtmekte fayda var; Fortinet üzerinden indirmiş olduğunuz FortiClientVPNOnlineInstaller.exe dosyası online bir download aracı aslında. Bize Offline yükleme dosyası olan .msi dosyası gerekmektedir. İndirmiş olduğumuz .exe uzantılı yükleyiciyi çalıştırmamız gerekiyor ve Offline yükleme dosyası %temp% içerisinde random bir klasör içerisinde oluşmaktadır.
Elde etmiş olduğumuz FortiClientVPN.msi dosyası ile işlem yapacağız. %temp% içerisinde oluşan .msi uzantılı dosyayı %temp% içerisinden başka bir klasöre kopyalayabilirsiniz.
Ben tüm dosyalarımı masaüstü üzerinde oluşturmuş olduğum “IntuneWin32” klasörü içerisinde depoladım. Şimdi ise elde etmiş olduğumuz .msi dosyasını Win32 deploymentine hazır hale getireceğiz.
FortiClientVPN MSI Dosyası ve Profilleri Hazırlama
FortiClientVPN MSI halini klasörü içerisinde aşağıda paylaşmış olduğum iki scripti .ps1 olarak kaydetmeniz gerekmektedir. Bu scriptleri Intune içerisinde Deploy edeceğiz ve FortiClientVPN yüklemesini gerçekleştirirken VPN Profillerimizide hazırlayacak.
İlk scriptimiz InstallFortiClientVPN.ps1 adındadır; Script içerisinde 33 ve 34. satırları kendi ortamınıza göre güncellemeniz gerekmektedir. Eğer özel bir Port kullanıyorsanız FQDN sonuna “:portnumarası” olarak ekleme yapabilirsiniz
<#
#################################################################################################################
# Cengiz YILMAZ
# MCT
# https://cozumpark.com/author/cengizyilmaz
# https://cengizyilmaz.net
# https://msgurusu.com (Azure Blog and News)
# [email protected]
##################################################################################################################
.NOTES
# TR: 33 ve 34. satırları kendi ortamınıza göre güncellemeniz gerekmektedir. Eğer özel bir Port kullanıyorsanız FQDN sonuna ":portnumarası" olarak ekleme yapabilirsiniz.
# Örnek: "vpn.cozumpark.com:10444 default olarak 443 portu kullanılmaktadır. Script üzerinde bulunan değerler FortiClientVPN tarafından oluşturulan değerlerdir.
##################################################################################################################
.DESCRIPTION
# TR: Bu Script Microsoft Intune'da Win32 uygulama deploy etmek için kullanılmaktadır.
#>
==================================================================================================================
#Islem 64 bit olarak yeniden baslatilacaktir.
If ($ENV:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
Try {
&"$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe" -File $PSCOMMANDPATH
}
Catch {
Throw "Islem Baslatilamadi $PSCOMMANDPATH"
}
Exit
}
# FortiClientVPN Yuklenecek
Start-Process Msiexec.exe -Wait -ArgumentList '/i FortiClientVPN.msi REBOOT=ReallySuppress /qn'
# FortiClientVPN Icin Profil Yuklemesi Gerceklesecek
if((Test-Path -LiteralPath "HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN") -ne $true) { New-Item "HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN" -force -ea SilentlyContinue };
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN' -Name 'Description' -Value 'CozumParkVPN' -PropertyType String -Force -ea SilentlyContinue;
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN' -Name 'Server' -Value 'vpn.cozumpark.com' -PropertyType String -Force -ea SilentlyContinue;
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN' -Name 'promptusername' -Value 1 -PropertyType DWord -Force -ea SilentlyContinue;
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN' -Name 'promptcertificate' -Value 0 -PropertyType DWord -Force -ea SilentlyContinue;
New-ItemProperty -LiteralPath 'HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN' -Name 'ServerCert' -Value '0' -PropertyType String -Force -ea SilentlyContinue;
İkinci Scriptimiz ise Unistall scriptidir;
<#
#################################################################################################################
# Cengiz YILMAZ
# MCT
# https://cozumpark.com/author/cengizyilmaz
# https://cengizyilmaz.net
# https://msgurusu.com (Azure Blog and News)
# [email protected]
##################################################################################################################
#>
#Islem 64 bit olarak yeniden baslatilacaktir
If ($ENV:PROCESSOR_ARCHITEW6432 -eq "AMD64") {
Try {
&"$ENV:WINDIR\SysNative\WindowsPowershell\v1.0\PowerShell.exe" -File $PSCOMMANDPATH
}
Catch {
Throw "Islem Baslatilamadi $PSCOMMANDPATH"
}
Exit
}
# FortiClientVPN Durduruldu
Stop-Process -Name FortiClient -ErrorAction SilentlyContinue
# FortiClientVPN Kaldiriliyor.
Start-Process Msiexec.exe -wait -ArgumentList /'x REBOOT=ReallySuppress /qn'
# FortiClientVPN Profili Siliniyor.
Remove-Item -LiteralPath "HKLM:\SOFTWARE\Fortinet\FortiClient\Sslvpn\Tunnels\CozumParkVPN" -force -ErrorAction SilentlyContinue
Klasörüm şuan aşağıdaki gibi gözükmektedir.
Intune İçin Win32 Uİygulamasını Paketleme
Win32 uygulamalarını Intune’da deploy etmeden önce, Microsoft’un Win32 İçerik Hazırlama Aracı’nı kullanmamız gerekmektedir. Bu araç GitHub’da Microsoft Reposu içerisinde yer almaktadır ve uygulama yükleme dosyalarını .intunewin biçimine dönüştürmektedir. Bu araç Intune için gerekli olan öznitelikleri algılamakta ve düzenlemektedir.
Microsoft Win32 İçerik Hazırlama Aracı, .intunewin dosyasını oluştururken tüm dosyaları ve alt klasörleri sıkıştırır. Microsoft Win32 İçerik Hazırlama Aracı’nı yükleyici dosya ve klasörlerinden ayrı tuttuğunuzdan emin olmalısınız, böylece aracı veya diğer gereksiz dosya ve klasörleri .intunewin dosyanıza dahil etmezsiniz.
Araç için aşağıdaki github linkini kullanabilirsiniz;
Intune Win32 İçerik Hazırlama uygulamasını indirdiğinizde, bir zip dosyası indirirsiniz. Bu zip dosyasının içeriği şu şekilde;
- Microsoft License Terms For Win32 Content Prep Tool.pdf
- IntuneWinAppUtil.exe
- README.md
- SECURITY.md
- ReleaseNotes.txt
Bu uygulama Microsoft tarafında güncellenmektedir ve eski sürümü kullandığınız zaman size eski sürümü kullandığınızı belirten bir uyarı görmektesiniz.
Şimdi indirmiş olduğumuz .zip dosyası içerisinde bulunan IntuneWinAppUtil.exe uygulamasını çalıştırıyoruz ve harmanlayacağımız uygulamanın bulunduğu klasör yolunu giriyoruz
Please Specify the source folder: Klasör yolu girilmesi gerekmektedir.
Please specify the setup file bölümüne ise convert edilmesi gereken dosya ismini girmemiz gerekiyor. Burada önemli nokta .msi uzantılı dosyamızı değil, InstallFortiClientVPN.ps1 dosyamızı girmemiz gerekiyor.
Please specify the output folder bölümüne ise hedef dosya yolunu girmemiz gerekmektedir. Son olarak bizden catalog folder için onay istemektedir, şuan ihtiyacımız olmadığı için “N” harfi ile işlemi bitiriyorum
Harmanlama işlemi başladığında ekran çıktısı aşağıdaki görseldeki gibi olmaktadır.
İki farklı PowerShell dosyası hazırlayarak bu işlemleri Proactive remediations kullanarakta gerçekleştirebilirsiniz.
Microsoft Endpoint Manager Proactive Remediations Nedir? – ÇözümPark (cozumpark.com)
Oluşturmuş olduğumuz .intunewin dosyası ile beraber klasörümün son hali aşağıdaki gibidir;
Intune ile Win32 Uygulaması Dağıtma Adımları
Öncelikle https://endpoint.microsoft.com/ oturum açıyoruz ve Apps – All Apps – Add adımlarını takip ediyoruz. Add type bölümünde “Windows App (Win32)” olarak işaretliyoruz.
oluşturmuş olduğumuz .intunewin dosyasını App Package file üzerinden upload ediyoruz.
Name: InstallFortiClientVPN.ps1
Platform: Windows
Size: 98.62 MiB
MAM Enabled: No
Deploy ettiğimiz .intunewin dosyası için düzenlememiz gereken alan varsa düzenliyoruz ve Next il
2. adım olan Program bölümünde bazı değişiklikler yapmamız gerekmektedir.
Install Command, Unistall Command bölümüne betikler bazen otomatik olarak gelmektedir, gelmediği zamanlarda düzenlemeniz lazım. Ben Install Command bölümünü kendi betiğimle değiştirdim ve aşağıdaki betiği ekliyorum.
powershell.exe -noprofile -windowstyle hidden -executionpolicy bypass -file .\InstallFortiClientVPN.ps1
powershell.exe -noprofile -windowstyle hidden -executionpolicy bypass -file .\uninstallFortiClientVPN.ps1
Device Restart Behavior bölümünde toplamda 4 seçenek bulunmakta;
- Determine behavior based on return codes: Uygulamış olduğunuz betiklere göre davranması için kullanabilirsiniz
- No specific action: MSI tabanlı uygulamaların yüklemesi sırasında cihazın yeniden başlatılmasını engellemek için kullanılır. Uygulama yüklendikten sonra cihazı yeniden başlatmak istemiyorsanı bu tercihi kullanabilirsiniz.
- App install may force a device to restart: Uygulama yüklendikten sonra cihaz yeniden başlatılır.
- Intune will force a mandatory device restart: Intune cihazı yeniden başlatmak için zorlamaktadır.
Ayrıca, yükleme sonrası davranışı belirtmek için dönüş kodları belirtebilirsiniz. Dönüş kodu uygulama oluşturma sırasında varsayılan olarak eklenmektedir. Ancak daha fazla dönüş kodu ekleyebilir veya mevcut kodları değiştirebilirsiniz. Kod türleri:
- Success – Dönüş kodu başarılı şekilde yüklendi anlamına gelmektedir.
- Retry – Dönüş kodu, uygulamaya 3 kez yüklemeye çalışacaktır. Her deneme arasında 5 dakika bekleme işlemi gerçekleştirmektedir.
- Soft reboot – Uygulamanın yeniden başlatılmadan yüklenmesine izin vermektedir. Ancak, uygulama yüklemesini tamamlamak için yeniden başlatma gereklidir.
Bir sonraki adımımız Requirements olarak geçmektedir. Uygulamanın yükleneceği cihaz için Minimum gereksinimleri belirtmemiz gerekmektedir. Burda zorunlu alanlar bulunuyorken, isteğe bağlı alanlarda bulunmaktadır.
- Operating system architecture: 32-bit / 64-bit (Zorunlu)
- Minimum operating system(Zorunlu)
- Disk space required (İsteğe Bağlı)
- Physical memory required (İsteğe Bağlı)
- Minimum number of logical processors required (İsteğe Bağlı)
- Minimum CPU speed required (İsteğe Bağlı)
4.adım Detection Rules burda iki farklı yöntem bulunmaktadır.
Manually configure detection rules:
- MSI: Bu kural, yöneticinin belirli bir MSI ürün kodunu veya hatta belirli bir MSI sürümünü algılaması gereken bir algılama kuralı oluşturmasını sağlamaktadır.
- File rule type: Yöneticinin özel uygulamanın yüklenmesini belirlemek için belirli bir dosya veya klasör, tarih, sürüm veya boyut algılayan bir algılama kuralı oluşturmasını sağlamaktadır. Gereksinimleri;
– Path – Uygulama dosyasını içeren klasörün tam yolun girilmesi gerekmektedir.
– File or folder – Uygulamayı algılamak için kullanılması gereken dosya veya klasörü belirtmeniz gerekiyor.
– Detection method – Uygulamanın yüklenmesini algılamak için kullanılması gereken seçeneği belirtmeniz gerekmektedir. (Dosya veya klasör var, Değiştirilme tarihi, Oluşturulma tarihi, , MB cinsinden Boyut)
- Registry: Bu algılama kuralıyla Intune yöneticisi, değere, dizeye, tamsayıya veya sürüme göre uygulama yüklemesinin algılanmasını sağlamaktadır. Gereksinimleri;
– Key path – Uygulamanın yüklenmesini algılamak için kullanılması gereken değeri içeren kayıt defteri girdisinin tam yolunu tanımlayın. Ör: HKEY_LOCAL_MACHINE\Software\Fortinet
– Value name: Bu özellik boşsa, algılama varsayılan değerde gerçekleşmektedir. Varsayılan değer, algılama yöntemi dosya veya klasör varlığından farklıysa algılama değeri olarak da kullanılılabilir.
– Detection method: 5 adet açıklama yöntemi vardır – Key exists, Key does not exist, String comparison, Version comparison, integer comparison
Manuel configure detection rules seçimini yaptıktan sonra MSI seçimi yaparsam, Product Code gelecektir eğer Code gelmez ise kendiniz manuel yazmalısınız
Use a custom detection script: Bu kural biçimi, Intune yöneticisinin, betiğin doğru çıktıya sahip olduğu sürece, temel olarak komut dosyası oluşturulabilecek her şeyi denetleyebilen algılama kuralları oluşturmasına olanak tanımaktadır. Aşağıda belirtildiği gibi yapılandırma özelliklerini gerektirir:
- Uygulamanın yüklenmesini algılamak için kullanılacak bir PowerShell betiği oluşturmanız gerekmektedir. Komut dosyası çıkış kodu 0 olduğunda ve STDOUT herhangi bir veri içerirse betik çalışacaktır.
- Enforce script signature check: Güvenilir bir yayımcının komut dosyasını imzaladığını doğrulamak için Evet’i seçeneğini kullanabilirsiniz, bu da komut dosyasının hiçbir uyarı veya istem görüntülenmeden çalışmasına izin vermektedir.
Uygulama karşıya yüklendikten sonra, kullanıcı Windows bildirimlerini görebilmektedir ve uygulamalar Şirket Portalı’nda kullanılabilir hale gelecektir.
Biz Manually Configure Detection Rules seçimi yapıyoruz;
Rule Type: File
Path: %ProgramFiles%\Fortinet\FortiClient
File or folder: FortiClient.exe
Detection Method: String (version)
Operator: Greater than or equal to
Value: FortiClient Versiyonu Girilmesi gerekmektedir.
5.adım Dependencies olarak geçmektedir. Dependencies ile uygulamalarınız yüklenmeden önce yüklenmesi gereken uygulamaları seçebilirsiniz.
6.adım Supersedence olarak geçmektedir. Bu özellikle henüz önizleme olarak geçmektedir, bir uygulamanın yerine geçmesini istediğiniz uygulamaları belirtebiliyorsunuz.
7.Adım Assignments olarak geçmektedir. Uygulamanın cihazlara, kullanıcılara veya gruplar aracılığıyla yüklenmesi gerektiğini belirttiğimiz alandır
8.adım Review + Create olarak geçmektedir. Yapmış olduğumuz tüm yapılandırmaları kontrol ettikten sonra Create butonunu kullanabiliriz.
Daha sonra Notifications kısmından takip edebileceğin bir Upload işlemi başlıyor, bu süre uygulama boyutuna göre değişkenlik gösterebiliyor.
Bu işlemi biraz daha hızlı yapmak için İstemciler üzerinden Company Portal üzerinden Sync işlemi başlatabilirsiniz.
Kısa bir süre bekledikten sonra W10 istemcim üzerinden uygulamamın indirildiğini belirten bildirimi görüyorum.
İndirme işlemi tamamlandı ve yükleme işlemi gerçekleştiği zamanda bunu ayrı bir bildirim olarak görmekteyim.
Microsoft Intune portal üzerinde App – Overview sekmesi içerisinde yüklenen istemciler için rapor görebilmekteyiz.
Daha sonra %ProgramFiles% içerisine gidiyorum ve FortiClient klasörünün oluştuğunu görebilmekteyim.
Sonra FortiClientVPN uygulaması üzerinden profilimin yüklenip yüklenmediğini kontrol ediyorum.
Eline sağlık, çok güzel bir makale olmuş.
Teşekkür ederim hocam.