PowerShell ile Teams Harici Erişim Etki Alanı Güncellemeleri


Harici Erişim İzin Verilenler Listesiyle Kötü Amaçlı Gelen Sohbeti Engelleyin

Teams verilerini tehlikeye atmaya yönelik GIFShell kavram kanıtlama saldırısıyla ilgili makalemde, saldırganların giriş noktası olabilecek bilinmeyen kiracılardan gelen istenmeyen sohbet mesajlarını durdurmanın kolay bir yolunun, harici erişim için bir izin verilenler listesi oluşturmak olduğunu söylemiştim. İzin verilenler listesi mevcutsa Teams yalnızca izin verilenler listesindeki alanlardan gelen sohbet mesajlarını kabul eder.

Kiracılar genellikle harici erişimi Teams yönetim merkezinin Kullanıcılar bölümü aracılığıyla yönetir. Burada izin verilenler listesine alan eklemek veya alan adlarını kaldırmak kolaydır. Ancak bu, hangi alan adlarını ekleyeceğinizi veya kaldıracağınızı bildiğinizi varsayar. Makaleden ortaya çıkan soru da bu; hangi alan adlarının izin verilenler listesinde olması gerektiğini nasıl anlarsınız?

Benim içgüdüm, kiracıda zaten mevcut olan misafir hesapları kümesini bir rehber olarak kullanmaktır. Sonuçta, başka bir kiracıdan birinin kiracınızda misafir hesabı olmasına izin verdiyseniz, o etki alanından gelen sohbet mesajlarını da kabul etmeye istekli olduğunuzu varsaymak mantıklıdır. Bunu yapmadığınız takdirde konuklar kanal konuşmalarına ve kısıtlama uygulanmadan önce başlayan sohbetlere katılabilir ancak kiracılarından kiracınızdaki kişilerle yeni sohbet başlatamazlar.

Teams Harici Erişim Yapılandırmasını Güncelleme Adımları

Konuk hesaplarının harici erişimi denetlemek için iyi bir temel olduğunu kabul edersek PowerShell'i şunları yapmak için kullanabiliriz:

  • Kiracıdaki tüm konukları bulun.
  • Etki alanını her konuk hesabının e-posta adresinden çıkarın.
  • Konuk hesaplarından çıkarılan alan adlarından bir alan adı listesi oluşturun.
  • Teams için geçerli harici erişim yapılandırmasını getirin.
  • Harici erişim yapılandırmasına henüz dahil olmayan etki alanlarını bulun.
  • Harici erişim yapılandırmasını eksik alan adlarıyla güncelleyin.

Her kiracı, bu işlemin nasıl yapılacağına ilişkin ayrıntıları kendi yöntemiyle ele alacaktır ancak temel komutlar aynı kalır. İşte işi yapmak için oluşturduğum kod. Komut dosyasının en son sürümünü GitHub'dan indirebilirsiniz.

Connect-MgGraph -NoWelcome -Scopes User.Read.All
[array]$Guests = Get-MgUser -All -Filter "usertype eq 'Guest'"
Write-Host ("{0} guest accounts found" -f $Guests.Count)
$GuestList = [System.Collections.Generic.List[Object]]::new()

ForEach ($Guest in $Guests) {
    $Domain = $Guest.Mail.Split("@")[1]
    $ReportLine = [PSCustomObject][Ordered]@{  
      Guest    = $Guest.Mail
      Domain   = $Domain
      Name     = $Guest.DisplayName }
    $GuestList.Add($ReportLine)
}
Write-Host ""
Write-Host "Guest accounts found for the following domains"
Write-Host "----------------------------------------------"
$GuestList | Group-Object Domain | Sort-Object Name | Select-Object Name, Count
$Domains = $GuestList | Sort-Object Domain -Unique | Select-Object -ExpandProperty Domain

Write-Host "Connecting to Microsoft Teams to check current external access configuration"
Connect-MicrosoftTeams

# Get current set of domains configured for Teams extrenal access
$DomainConfiguration  = Get-CsTenantFederationConfiguration  | Select-Object -ExpandProperty AllowedDomains
# Check the set of domains that aren't in the current configuration
[array]$DomainsToAdd = $Domains | Where-Object {$_ -notin $DomainConfiguration.AllowedDomain.Domain}

$Prompt = "Do you want to add the following domains to the list allowed for Teams external access? " + $DomainsToAdd -join ", "
$Choice = Read-Host $Prompt

If (($Choice.ToUpper()) -eq "Y") {
 $i = 0
 ForEach ($Domain in $DomainsToAdd) {
  $i++
  Write-Host ("Adding {0} to the allowed domains list... ({1}/{2})" -f $Domain, $i, $DomainsToAdd.Count)
  Set-CsTenantFederationConfiguration -AllowedDomainsAsAList @{Add=$Domain} -ErrorAction SilentlyContinue
 }
$DomainConfiguration  = Get-CsTenantFederationConfiguration  | Select-Object -ExpandProperty AllowedDomains
Write-Host ("External access for Teams now includes {0} domains" -f $DomainConfiguration.AllowedDomain.Domain.count)
}

Harici erişim alanı beyaz listesi yaklaşık 4.000 girişi barındırabilir.

PowerShell Modülleri Gerekli

Kod basittir ve harici erişim yapılandırmasını alıp güncellemek amacıyla Microsoft Teams PowerShell modülündeki konuk hesapları ve cmdlet'leri bulmak için Microsoft Graph PowerShell SDK'sındaki Get-MgUser cmdlet'ini kullanır. Her iki modül de aktif olarak geliştirilme aşamasındadır ve Microsoft her ay yeni sürümler yayınlamaktadır. Mevcut sürümde düzeltilen sorunlarla karşılaşmadığınızdan emin olmak için en son sürümü kullanmak en iyisidir.

Bunun dışında kullanılan cmdlet'ler yalnızca Group-Object, Sort-Object ve Select-Object gibi temel PowerShell cmdlet'leridir. Başka bir deyişle, kara büyü veya karmaşık kod yok.

Engelleme Listelerinin Dezavantajı

Herhangi bir engelleme listesinin dezavantajı iletişimi durdurmalarıdır. Konuk hesabının geldiği tüm alan adlarına izin verildikten sonra bile kullanıcıların diğer kişilerle iletişim kuramadıklarında hayal kırıklığına uğramaları mümkündür. Belki de kullanıcıların Teams harici erişim yapılandırmasına yeni bir alan adı eklenmesini (kontrol ettikten sonra) talep etmelerine izin verecek bir yönteme ihtiyacınız vardır. Bu tartışmayı size bırakıyorum.

6-7 Aralık'taki Uzmanlar Konferansı 2022'de Tony Redmond ve diğer Microsoft MVP'leriyle tanışın.

%100 Ücretsiz ve Sanal. Yılın Microsoft eğitim etkinliğini kaçırmak istemezsiniz!

İlgili makaleler