ค้นหาเว็บไซต์

การอัปเดตโดเมนการเข้าถึงภายนอกของทีมด้วย PowerShell


บล็อกการแชทขาเข้าที่เป็นอันตรายด้วยรายการอนุญาตการเข้าถึงจากภายนอก

ในบทความของฉันเกี่ยวกับการโจมตีแบบพิสูจน์แนวคิด GIFShell เพื่อประนีประนอมข้อมูล Teams ฉันกล่าวว่าวิธีง่ายๆ ในการหยุดข้อความแชทที่ไม่พึงประสงค์ที่ส่งมาจากผู้เช่าที่ไม่รู้จักซึ่งอาจเป็นจุดเริ่มต้นสำหรับผู้โจมตีคือการสร้างรายการอนุญาตสำหรับการเข้าถึงจากภายนอก หากมีรายการที่อนุญาต Teams จะยอมรับเฉพาะข้อความแชทขาเข้าจากโดเมนในรายการที่อนุญาตเท่านั้น

โดยทั่วไป ผู้เช่าจะจัดการการเข้าถึงภายนอกผ่านส่วนผู้ใช้ของศูนย์การจัดการ Teams การเพิ่มหรือลบโดเมนออกจากรายการที่อนุญาตนั้นทำได้ง่าย อย่างไรก็ตาม นั่นถือว่าคุณทราบว่าควรเพิ่มหรือลบโดเมนใด และนั่นคือคำถามที่เกิดขึ้นจากบทความ - คุณจะทราบได้อย่างไรว่าโดเมนใดควรอยู่ในรายการที่อนุญาต

สัญชาตญาณของฉันคือใช้ชุดบัญชีแขกที่มีอยู่แล้วในผู้เช่าเพื่อเป็นแนวทาง ท้ายที่สุด หากคุณอนุญาตให้บุคคลจากผู้เช่ารายอื่นเป็นบัญชีผู้เยี่ยมชมในผู้เช่าของคุณ ก็สมเหตุสมผลที่จะถือว่าคุณยินดีที่จะยอมรับข้อความแชทขาเข้าจากโดเมนนั้นด้วย ถ้าคุณไม่ทำ แขกสามารถเข้าร่วมในการสนทนาทางแชนเนลและการแชทที่เริ่มต้นก่อนที่จะมีการกำหนดข้อจำกัด แต่พวกเขาไม่สามารถเริ่มการสนทนาใหม่จากผู้เช่าไปยังบุคคลในผู้เช่าของคุณได้

ขั้นตอนในการอัปเดตการกำหนดค่าการเข้าถึงภายนอกของทีม

หากเรายอมรับว่าบัญชีผู้เยี่ยมชมเป็นพื้นฐานที่ดีในการควบคุมการเข้าถึงจากภายนอก เราสามารถใช้ PowerShell เพื่อ:

  • ค้นหาแขกทั้งหมดในผู้เช่า
  • แยกโดเมนออกจากที่อยู่อีเมลสำหรับบัญชีผู้เยี่ยมชมแต่ละบัญชี
  • สร้างรายชื่อโดเมนจากโดเมนที่ดึงมาจากบัญชีเกสต์
  • ดึงข้อมูลการกำหนดค่าการเข้าถึงภายนอกปัจจุบันสำหรับ Teams
  • ค้นหาโดเมนที่ไม่ได้รวมอยู่ในการกำหนดค่าการเข้าถึงภายนอก
  • อัปเดตการกำหนดค่าการเข้าถึงภายนอกด้วยโดเมนที่ขาดหายไป

ผู้เช่าทุกคนจะจัดการรายละเอียดเกี่ยวกับวิธีการประมวลผลนี้ในแบบของตนเอง แต่คำสั่งพื้นฐานยังคงเหมือนเดิม นี่คือโค้ดที่ฉันสร้างขึ้นเพื่อทำงาน คุณสามารถดาวน์โหลดสคริปต์เวอร์ชันล่าสุดได้จาก GitHub

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

รายการโดเมนการเข้าถึงภายนอกสามารถรองรับรายการได้ประมาณ 4,000 รายการ

จำเป็นต้องมีโมดูล PowerShell

โค้ดนี้ตรงไปตรงมาและใช้ Get-MgUser cmdlet จาก Microsoft Graph PowerShell SDK เพื่อค้นหาชุดบัญชีผู้เยี่ยมชมและ cmdlets จากโมดูล Microsoft Teams PowerShell เพื่อดึงข้อมูลและอัปเดตการกำหนดค่าการเข้าถึงภายนอก โมดูลทั้งสองอยู่ระหว่างการพัฒนาและ Microsoft จะออกเวอร์ชันใหม่ทุก ๆ เดือน วิธีที่ดีที่สุดคือใช้เวอร์ชันล่าสุดเพื่อให้แน่ใจว่าคุณจะไม่ประสบปัญหาที่ได้รับการแก้ไขในเวอร์ชันปัจจุบัน

นอกจากนั้น cmdlet เดียวที่ใช้คือ PowerShell cmdlets พื้นฐาน เช่น Group-Object, Sort-Object และ Select-Object กล่าวอีกนัยหนึ่ง ไม่มีมนต์ดำหรือโค้ดที่ซับซ้อน

ข้อเสียของรายการที่ถูกบล็อก

ข้อเสียของรายการบล็อกคือหยุดการสื่อสาร แม้ว่าหลังจากอนุญาตทุกโดเมนที่มาจากบัญชีผู้เยี่ยมชมแล้ว ก็เป็นไปได้ที่ผู้ใช้จะหงุดหงิดเมื่อไม่สามารถสื่อสารกับผู้ติดต่อรายอื่นได้ บางทีคุณอาจต้องการวิธีการอนุญาตให้ผู้ใช้สามารถขอเพิ่มโดเมนใหม่ (หลังจากตรวจสอบ) ไปยังการกำหนดค่าการเข้าถึงภายนอกของ Teams ฉันจะปล่อยให้การอภิปรายนั้นอยู่กับคุณ

พบกับ Tony Redmond และ Microsoft MVP คนอื่นๆ ในงาน Experts Conference 2022 วันที่ 6-7 ธันวาคม

ฟรีและเสมือนจริง 100% ไม่อยากพลาดกิจกรรมฝึกอบรม Microsoft แห่งปี!

บทความที่เกี่ยวข้อง