Weboldal keresés

Teams külső hozzáférésű tartományfrissítések a PowerShell segítségével


A rosszindulatú bejövő csevegés blokkolása külső hozzáférés engedélyezési listával

A Teams adatainak veszélyeztetését célzó GIFShell proof-of-concept támadásról szóló cikkemben elmondtam, hogy az ismeretlen bérlőktől érkező kéretlen csevegési üzenetek megállításának egyszerű módja, amely a támadók belépési pontja lehet, ha létrehoz egy engedélyezési listát a külső hozzáféréshez. Ha létezik engedélyezési lista, a Teams csak az engedélyezési listán szereplő domainekről fogad bejövő csevegési üzeneteket.

A bérlők általában a Teams felügyeleti központ Felhasználók szakaszán keresztül kezelik a külső hozzáférést. Könnyen hozzáadhat vagy eltávolíthat domaineket az engedélyezési listáról. Ez azonban feltételezi, hogy tudja, mely domaineket kell hozzáadni vagy eltávolítani. És ez a kérdés merült fel a cikkből - hogyan lehet kitalálni, hogy mely domainek legyenek az engedélyezési listán?

Az ösztönöm az, hogy a bérlőben már meglévő vendégfiókokat használom útmutatóként. Végül is, ha megengedte, hogy valaki egy másik bérlőtől vendégfiókká váljon a bérlőjében, akkor ésszerű feltételezni, hogy hajlandó fogadni az adott domainről érkező bejövő csevegőüzeneteket is. Ha nem teszi meg, a vendégek részt vehetnek a korlátozás bevezetése előtt megkezdett csatornabeszélgetésekben és csevegésekben, de nem indíthatnak új csevegést a bérlőjüktől az Ön bérlőjéhez.

A Teams külső hozzáférési konfigurációjának frissítésének lépései

Ha elfogadjuk, hogy a vendégfiókok jó alapot jelentenek a külső hozzáférés szabályozásához, a PowerShell segítségével:

  • Találja meg az összes vendéget a bérlőben.
  • Vonja ki a domaint az egyes vendégfiókok e-mail címéből.
  • Hozzon létre egy listát a domainekről a vendégfiókokból kinyert domainekből.
  • A Teams jelenlegi külső hozzáférési konfigurációjának lekérése.
  • Keresse meg azokat a tartományokat, amelyek még nem szerepelnek a külső hozzáférési konfigurációban.
  • Frissítse a külső hozzáférési konfigurációt a hiányzó tartományokkal.

Minden bérlő a saját módján kezeli a feldolgozás részleteit, de az alapvető parancsok változatlanok maradnak. Itt van a kód, amelyet a feladat elvégzéséhez készítettem. A szkript legújabb verzióját letöltheti a GitHubról.

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)
}

A külső hozzáférési tartományok fehérlistája körülbelül 4000 bejegyzést tartalmazhat.

PowerShell-modulok szükségesek

A kód egyszerű, és a Microsoft Graph PowerShell SDK Get-MgUser parancsmagját használja, hogy megkeresse a Microsoft Teams PowerShell modul vendégfiókjainak és parancsmagjainak készletét a külső hozzáférési konfiguráció lekéréséhez és frissítéséhez. Mindkét modul aktív fejlesztés alatt áll, és a Microsoft havonta újabb verziókat ad ki. A legjobb a legújabb verzió használata annak biztosítására, hogy ne ütközzenek az aktuális kiadásban javított problémákba.

Ezen kívül az egyetlen használt parancsmag az alapvető PowerShell-parancsmag, például a Csoport-Object, Sort-Object és a Select-Object. Más szóval, nincs fekete mágia vagy bonyolult kód.

A blokklisták hátrányai

Bármely tiltólista hátránya, hogy leállítják a kommunikációt. Még azután is, hogy minden domaint engedélyeztek, ahonnan vendégfiókok származnak, előfordulhat, hogy a felhasználók csalódottak lesznek, amikor nem tudnak kommunikálni más névjegyekkel. Talán szüksége van egy módszerre, amely lehetővé teszi a felhasználók számára, hogy kérjék egy új tartomány hozzáadását (ellenőrzés után) a Teams külső hozzáférési konfigurációjához. Ezt a vitát rád bízom.

Ismerje meg Tony Redmondot és a Microsoft többi MVP-jét a The Experts Conference 2022 rendezvényen, december 6-7.

100% ingyenes és virtuális. Ne akard lemaradni az év Microsoft képzési eseményéről!

Kapcsolódó cikkek