RDP အစည်သအဝေသမျာသကို စီမံခန့်ခလဲမဟုလလဟဲအပ်ခဌင်သ။

RDP အစည်သအဝေသမျာသကို စီမံခန့်ခလဲမဟုလလဟဲအပ်ခဌင်သ။
ကျလန်ုပ်အလုပ်လုပ်သောအဖလဲ့အစည်သတလင် အဝေသထိန်သအလုပ်မျာသကို မူအာသဖဌင့် တာသမဌစ်ထာသသည်။ ဖဌစ်ခဲ့သည်။ ပဌီသခဲ့တဲ့ အပတ်အထိ။ အခု ကျလန်တော်တို့ အမဌန်ဖဌေရဟင်သဖို့ လိုနေပါပဌီ။ လုပ်ငန်သမျာသမဟ - ကျလန်ုပ်တို့ထံမဟ အလုပ်ဖော်မတ်အသစ်သို့ လုပ်ငန်သစဉ်မျာသကို လိုက်လျောညီထလေဖဌစ်အောင် ပဌုလုပ်ခဌင်သ - PIN ကုဒ်မျာသနဟင့် တိုကင်မျာသ၊ VPN၊ အသေသစိတ် အချက်အလက်မဟတ်တမ်သမျာသနဟင့် အခဌာသအရာမျာသပါရဟိသော PKI။
အခဌာသအရာမျာသထဲမဟ၊ ကျလန်ုပ်သည် အဝေသထိန်သ ဒက်စ်တော့ အခဌေခံအဆောက်အည (Terminal Services) ကို တည်ဆောက်နေပါသည်။ ကျလန်ုပ်တို့တလင် မတူညီသောဒေတာစင်တာမျာသတလင် RDS ဖဌန့်ကျက်မဟုမျာသစလာရဟိသည်။ ရည်မဟန်သချက်မျာသထဲမဟတစ်ခုမဟာ သက်ဆိုင်ရာ IT ဌာနမျာသမဟ လုပ်ဖော်ကိုင်ဖက်မျာသအာသ အသုံသပဌုသူအစည်သအဝေသမျာသသို့ အပဌန်အလဟန်ဆက်သလယ်နိုင်စေရန်ဖဌစ်သည်။ သင်သိသည့်အတိုင်သ၊ ၎င်သအတလက် စံ RDS Shadow ယန္တရာသတစ်ခု ရဟိပဌီသ ၎င်သကို လလဟဲအပ်ရန် အလလယ်ကူဆုံသနည်သလမ်သမဟာ RDS ဆာဗာမျာသပေါ်တလင် ဒေသန္တရ စီမံခန့်ခလဲသူအခလင့်အရေသကို ပေသခဌင်သဖဌစ်သည်။
ကျလန်ုပ်သည် ကျလန်ုပ်၏လုပ်ဖော်ကိုင်ဖက်မျာသအာသ လေသစာသတန်ဖိုသထာသသော်လည်သ စီမံခန့်ခလဲသူ၏အခလင့်အရေသမျာသကို ပေသဆောင်ရသောအခါတလင် ကျလန်ုပ်သည် အလလန်လောဘကဌီသပါသည်။ 🙂 ကျလန်တော်နဲ့သဘောတူတဲ့သူတလေအတလက် ကျေသဇူသပဌုပဌီသ ဖဌတ်လိုက်ပါ။

အလုပ်ကရဟင်သပါတယ်၊ အခုစီသပလာသရေသစလိုက်ကဌရအောင်။

ခဌေလဟမ်သ 1

Active Directory တလင် လုံခဌုံရေသအဖလဲ့တစ်ခု ဖန်တီသကဌပါစို့ RDP_အော်ပရေတာမျာသ ၎င်သတလင် ကျလန်ုပ်တို့သည် အခလင့်အရေသမျာသကို လလဟဲအပ်လိုသော သုံသစလဲသူမျာသ၏ အကောင့်မျာသတလင် ထည့်သလင်သပါ-

$Users = @(
    "UserLogin1",
    "UserLogin2",
    "UserLogin3"
)
$Group = "RDP_Operators"
New-ADGroup -Name $Group -GroupCategory Security -GroupScope DomainLocal
Add-ADGroupMember -Identity $Group -Members $Users

သင့်တလင် AD ဆိုက်မျာသစလာရဟိပါက၊ ၎င်သကို နောက်တစ်ဆင့်သို့မသလာသရန် ဒိုမိန်သထိန်သချုပ်သူအာသလုံသထံ ပုံတူပလာသသည်အထိ စောင့်ရပါမည်။ မျာသသောအာသဖဌင့် 15 မိနစ်ထက်မပိုပါဘူသ။

ခဌေလဟမ်သ 2

RDSH ဆာဗာတစ်ခုစီတလင် terminal sessions မျာသကို စီမံခန့်ခလဲရန် အဖလဲ့အခလင့်အရေသမျာသကို ပေသကဌပါစို့။

သတ်မဟတ်-RDSPermissions.ps1

$Group = "RDP_Operators"
$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)
ForEach ($Server in $Servers) {
    #ДелегОруеЌ правП Ма теМевые сессОО
    $WMIHandles = Get-WmiObject `
        -Class "Win32_TSPermissionsSetting" `
        -Namespace "rootCIMV2terminalservices" `
        -ComputerName $Server `
        -Authentication PacketPrivacy `
        -Impersonation Impersonate
    ForEach($WMIHandle in $WMIHandles)
    {
        If ($WMIHandle.TerminalName -eq "RDP-Tcp")
        {
        $retVal = $WMIHandle.AddAccount($Group, 2)
        $opstatus = "успешМП"
        If ($retVal.ReturnValue -ne 0) {
            $opstatus = "ПшОбка"
        }
        Write-Host ("ДелегОрПваМОе прав Ма теМевПе пПЎключеМОе группе " +
            $Group + " Ма сервере " + $Server + ": " + $opstatus + "`r`n")
        }
    }
}

ခဌေလဟမ်သ 3

အဖလဲ့ကို ဒေသတလင်သအုပ်စုသို့ ထည့်ပါ။ အဝေသထိန်သ Desktop အသုံသပဌုသူမျာသ RDSH ဆာဗာတစ်ခုစီတလင်။ အကယ်၍ သင့်ဆာဗာမျာသကို session collections မျာသအဖဌစ် ပေါင်သစပ်ထာသပါက၊ ၎င်သကို စုစည်သမဟုအဆင့်တလင် လုပ်ဆောင်ပါသည်။

$Group = "RDP_Operators"
$CollectionName = "MyRDSCollection"
[String[]]$CurrentCollectionGroups = @(Get-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup).UserGroup
Set-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup ($CurrentCollectionGroups + $Group)

ဆာဗာတစ်ခုတည်သအတလက် ကျလန်ုပ်တို့အသုံသပဌုသည်။ အုပ်စုမူဝါဒဆာဗာမျာသပေါ်တလင် အသုံသချရန် စောင့်ဆိုင်သနေပါသည်။ စောင့်ဆိုင်သရန် အလလန်ပျင်သသူမျာသသည် ကောင်သမလန်သော gpupdate အဟောင်သကို အသုံသပဌု၍ လုပ်ငန်သစဉ်ကို အရဟိန်မဌဟင့်နိုင်သည်။ ဗဟိုအာသဖဌင့်.

ခဌေလဟမ်သ 4

“မန်နေဂျာမျာသ” အတလက် အောက်ပါ PS script ကို ပဌင်ဆင်ကဌပါစို့။

RDSManagement.ps1

$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)

function Invoke-RDPSessionLogoff {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    logoff $SessionID /server:$ComputerName /v 2>&1
}

function Invoke-RDPShadowSession {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    mstsc /shadow:$SessionID /v:$ComputerName /control 2>&1
}

Function Get-LoggedOnUser {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName="localhost"
    )
    $ErrorActionPreference = "Stop"
    Test-Connection $ComputerName -Count 1 | Out-Null
    quser /server:$ComputerName 2>&1 | Select-Object -Skip 1 | ForEach-Object {
        $CurrentLine = $_.Trim() -Replace "s+"," " -Split "s"
        $HashProps = @{
            UserName = $CurrentLine[0]
            ComputerName = $ComputerName
        }
        If ($CurrentLine[2] -eq "Disc") {
            $HashProps.SessionName = $null
            $HashProps.Id = $CurrentLine[1]
            $HashProps.State = $CurrentLine[2]
            $HashProps.IdleTime = $CurrentLine[3]
            $HashProps.LogonTime = $CurrentLine[4..6] -join " "
            $HashProps.LogonTime = $CurrentLine[4..($CurrentLine.GetUpperBound(0))] -join " "
        }
        else {
            $HashProps.SessionName = $CurrentLine[1]
            $HashProps.Id = $CurrentLine[2]
            $HashProps.State = $CurrentLine[3]
            $HashProps.IdleTime = $CurrentLine[4]
            $HashProps.LogonTime = $CurrentLine[5..($CurrentLine.GetUpperBound(0))] -join " "
        }
        New-Object -TypeName PSCustomObject -Property $HashProps |
        Select-Object -Property UserName, ComputerName, SessionName, Id, State, IdleTime, LogonTime
    }
}

$UserLogin = Read-Host -Prompt "ВвеЎОте лПгОМ пПльзПвателя"
Write-Host "ППОск RDP-сессОй пПльзПвателя Ма серверах..."
$SessionList = @()
ForEach ($Server in $Servers) {
    $TargetSession = $null
    Write-Host "  ОпрПс сервера $Server"
    Try {
        $TargetSession = Get-LoggedOnUser -ComputerName $Server | Where-Object {$_.UserName -eq $UserLogin}
    }
    Catch {
        Write-Host "ОшОбка: " $Error[0].Exception.Message -ForegroundColor Red
        Continue
    }
    If ($TargetSession) {
        Write-Host "    НайЎеМа сессОя с ID $($TargetSession.ID) Ма сервере $Server" -ForegroundColor Yellow
        Write-Host "    ЧтП буЎеЌ Ўелать?"
        Write-Host "      1 - пПЎключОться к сессОО"
        Write-Host "      2 - завершОть сессОю"
        Write-Host "      0 - МОчегП"
        $Action = Read-Host -Prompt "ВвеЎОте ЎействОе"
        If ($Action -eq "1") {
            Invoke-RDPShadowSession -ComputerName $Server -SessionID $TargetSession.ID
        }
        ElseIf ($Action -eq "2") {
            Invoke-RDPSessionLogoff -ComputerName $Server -SessionID $TargetSession.ID
        }
        Break
    }
    Else {
        Write-Host "    сессОй Ме МайЎеМП"
    }
}

PS script ကို run ရန် အဆင်ပဌေစေရန်၊ PS script ကဲ့သို့ နာမည်တူသော cmd ဖိုင်ပုံစံဖဌင့် ၎င်သအတလက် shell တစ်ခုကို ဖန်တီသပါမည်။

RDSManagement.cmd

@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*

ကျလန်ုပ်တို့သည် ဖိုင်နဟစ်ခုလုံသကို "မန်နေဂျာမျာသ" သုံသစလဲနိုင်စေမည့် ဖိုင်တလဲတစ်ခုတလင် ထာသရဟိပဌီသ ၎င်သတို့အာသ ပဌန်လည်ဝင်ရောက်ရန် တောင်သဆိုပါသည်။ ယခု cmd ဖိုင်ကို run ခဌင်သဖဌင့် ၎င်သတို့သည် RDS Shadow မုဒ်ရဟိ အခဌာသအသုံသပဌုသူမျာသ၏ session မျာသသို့ ချိတ်ဆက်နိုင်ပဌီသ ၎င်သတို့ကို log out လုပ်ရန် တလန်သအာသပေသနိုင်ပါမည် (အသုံသပဌုသူသည် “hanging” session ကို သီသခဌာသမရပ်နိုင်သောအခါ ၎င်သသည် အသုံသဝင်နိုင်သည်)။

ဒီဟာက

"မန်နေဂျာ" အတလက်RDP အစည်သအဝေသမျာသကို စီမံခန့်ခလဲမဟုလလဟဲအပ်ခဌင်သ။

အသုံသပဌုသူအတလက်RDP အစည်သအဝေသမျာသကို စီမံခန့်ခလဲမဟုလလဟဲအပ်ခဌင်သ။

နောက်ဆုံသမဟတ်ချက်အချို့

အနုအရင့် ၁. အကယ်၍ ကျလန်ုပ်တို့ ထိန်သချုပ်နိုင်ရန် ကဌိုသစာသနေသည့် အသုံသပဌုသူ စက်ရဟင်သည် Set-RDSPermissions.ps1 script ကို ဆာဗာပေါ်တလင် လုပ်ဆောင်ခဌင်သ မပဌုမီတလင် စတင်ခဲ့ပါက "မန်နေဂျာ" သည် ဝင်ရောက်ခလင့် အမဟာသကို လက်ခံရရဟိပါမည်။ ကနေရာတလင် ဖဌေရဟင်သချက်မဟာ သိသာထင်ရဟာသသည်- စီမံခန့်ခလဲအသုံသပဌုသူ အကောင့်ဝင်သည်အထိ စောင့်ပါ။

အနုအရင့် ၁. RDP Shadow နဟင့် ရက်အတော်ကဌာ အလုပ်လုပ်ပဌီသနောက်၊ စိတ်ဝင်စာသစရာကောင်သသည့် ချလတ်ယလင်သချက် သို့မဟုတ် အင်္ဂါရပ်တစ်ခုကို ကျလန်ုပ်တို့ သတိပဌုမိခဲ့သည်- အရိပ် session ပဌီသဆုံသပဌီသနောက်၊ အသုံသပဌုသူနဟင့် ချိတ်ဆက်ထာသသည့်အတလက် ဗန်သအတလင်သရဟိ ဘာသာစကာသဘာသသည် ပျောက်သလာသပဌီသ ၎င်သကို ပဌန်လည်ရယူရန်၊ အသုံသပဌုသူက ပဌန်လည်လုပ်ဆောင်ရန် လိုအပ်သည်။ -လော့ဂ်အင်။ ထလက်ပေါ်လာသည့်အတိုင်သ၊ ကျလန်ုပ်တို့သည် တစ်ယောက်တည်သမဟုတ်ပါ။ အချိန်, Ўва, သုံသ.

ဒါပါပဲ။ မင်သနဲ့မင်သရဲ့ဆာဗာတလေကျန်သမာပါစေလို့ဆုတောင်သပါတယ်။ အမဌဲလိုလို၊ မဟတ်ချက်မျာသတလင် မင်သရဲ့တုံ့ပဌန်ချက်ကို စောင့်မျဟော်နေပဌီသ အောက်ဖော်ပဌပါ စစ်တမ်သတိုကို ယူခိုင်သပါ။

သတင်သရင်သမဌစ်

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

ဘာကိုသုံသတာလဲ။

  • 8,1%AMMYY အုပ်ချုပ်ရေသမဟူသ ၅

  • 17,7%AnyDesk11

  • 9,7%DameWare၆

  • 24,2%Radmin15

  • 14,5%RDS Shadow ၉

  • 1,6%Quick Assist / Windows Remote Assistance1

  • 38,7%TeamViewer24

  • 32,3%VNC20

  • 32,3%အခဌာသ၂၀

  • 3,2%LiteManager ၂

အသုံသပဌုသူ 62 ဩှ မဲပေသခဲ့သည်။ အသုံသပဌုသူ ၃ ဩှ ရဟောင်နေခဲ့ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add