Blog

RDS – Terminal Server Oturum Erişimleri – Shadow Remote Control

Terminal Server ortamlarında sistem yöneticileri kullanıcılarına destek vermek için uzak erişim talebinde bulunabilir. Bunu uzun yıllardır bilinen bir yönetim alışkanlığıdır. Tabiki son kullanıcı bilgisayarlarına benzer şekilde yardım masasındaki çalışanların erişimi için SCCM veya 3 parti programlarda kullanılarak bağlanılabilir. Ancak Terminal server ortamları bu özelliği yıllardır ücretsiz bir şekilde sunduğu için (Shadow) genelde çok sık kullanılan bir özelliktir.

Peki bu özelliği bir terminal server ortamında nasıl kullanıyoruz?

Öncelikle Terminal Server kurulumunun tamamlandığını düşünüyorum, bu konuda da bir ihtiyaç var ise ÇözümPark Bilişim Portalı üzerinde bu konuda pek çok makale bulunmaktadır. Kurulum sonrasında ilk yapmanız gereken yerel GPO veya çok fazla RDS sunucusu olacak ise merkezi bir GPO ile aşağıdaki ayarları yapılandırmanız gereklidir;

Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Set Rules for Remote Control of Remote Desktop user Session

Burada 4 seçeneğiniz var

1 – Kullanıcıdan izin almak koşulu ile tam erişim.

2 – Kullanıcıdan izin almadan tam erişim.

3 – Kullanıcıdan izin almak koşulu ile sadece izleme

4 – Kullanıcıdan izin almadan sadece izleme.

Bu ayarları yapmazsanız tabiki yine yetkiniz var ise bu erişimleri gerçekleştirebilirsiniz. Ancak bu GPO temel olarak ilgili RDS için bir ilkedir. Yani bir nevi güvenlik politikası gibi düşünebilirsiniz. Bu sayede yerel admin veya domain admin olmayan kişilere shadow izni verirken bunları ayrı ayrı yetkilendirebileceğiniz gibi buradan bir kere ilkeyi belirledikten sonra izin ne olursa olsun bu ayarların geçerli olmasını sağlayabilirsiniz.

Peki bu ilgili GPO ayarını güncellediniz veya hiç ellemediniz, bu karar sizin. Daha sonra Server Manager ekranını açıp aşağıdaki yolu izliyoruz

Server Manager – Remote Desktop Services bu bölümde ilgili collection üzerine tıklıyoruz;

Bu durumda yukarıdaki gibi bir ekran karşılayacaktır bizleri. Sağ bölümde o anda bir veya collection içerisinde kaç sunucu var ise o sunuculardaki aktif veya pasif bağlantıları göreceksiniz. Eğer varsayılan olarak yönetici hesabıyla bağlandıysanız aşağıdaki gibi istediğiniz bağlantıyı yapabilirsiniz;

Uzak bağlantı yapmak istediğiniz kullanıcıya sağ tıklayıp Shadow bölümüne tıklıyoruz;

Daha sonra görüntüleme mi yoksa kontrol yetkisi mi seçeneğinden istediğimiz seçiyoruz. Alt bölümde ise kullanıcıya bunun için bir bilgilendirme yapıp yapmayacağımızı, daha doğrusu onun onayına sunup sunmayacağımızı seçiyoruz. Tabiki burada GPO önemli. Eğer makalemin ilk bölümündeki GPO mutlaka kullanıcı izni istemek üzere yönlendirilmiş ise bu durumda siz “Prompt for user consent” kutucuğunu işaretlemezseniz bağlantı kuramazsınız. Yani GPO her zaman baskındır. Eğer GPO ayarlamadıysanız ve admin yetkisine sahip iseniz sorunsuz bir şekilde bağlanabilirsiniz.

Peki gelelim işin en önemli kısmına. Bu yetkiyi kullanıcı destek ekiplerine veya Domain Admins ya da terminal sunucularında local admin olmayan bir grup, kullanıcıya vermek istediğiniz zaman ne yapmanız gerekiyor?

Bunun için en kolay yöntem tabiki PowerShell, aşağıdaki powershell’ i kullanabilirsiniz

Not: Bu tür değişikliklerden önce mutlaka sisteminizin yedeğini alın. En kötü aşağıdaki kayıt defteri yedeğini de almanız size yardımcı olur;

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations

Çünkü izinler bu bölümde tutulur;

Bu bir powershell olup not defterine kopyalayıp uzantısını ps1 olarak değiştirdikten sonra çalıştırabilirsiniz.

param(

[string]$RDServers

)

$RDSArray = $RDServers -split ‘,’

$AccountToAdd = Read-Host(“Please enter the user name or group name who needs permission to shadow users” + “`r`n” + “(Format:  DOMAIN\User or DOMAIN\Group)”)

foreach ($RDS in $RDSArray)

{

    $TempRDS = $RDS.replace(“`””,””)

    if($TempRDS)

    {

        $WMIHandles = Get-WmiObject -Class “Win32_TSPermissionsSetting” -Namespace “root\CIMV2\terminalservices” -ComputerName $TempRDS -Authentication PacketPrivacy -Impersonation Impersonate

        foreach($WMIHandle in $WMIHandles)

        {

            if($WMIHandle.TerminalName -eq “RDP-Tcp”)

            {

                $retVal = $WMIHandle.AddAccount($AccountToAdd, 2)

                $opstatus = “succeeded”

                if($retVal.ReturnValue -eq 0)

                {

                    $opstatus = “succeeded”

                }

                else

                {

                    $opstatus = “failed”

                }

                Write-Host(“The operation to grant shadowing permissions to ” + $AccountToAdd + ” on ” + $TempRDS + ” ” + $opstatus + “`r`n”)

            }

        }

    }

}

İkinci bir yöntem ise aşağıdaki gibi yetki vermek;

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName =”RDP-Tcp”) CALL AddAccount “domain\group”,2

Burada unutmayın ki varsayılan kurulum ile gelen RDP-Tcp ismi değişik ise eğer güncellemeniz gerekli. Nasıl derseniz? Örneğin aynı RDS için hem mobil aygıtlar hem de kullanıcıları farklı session time out veya özelliklerde kabul etmek istiyorsanız birden çok TCP listener tanımlayabilirsiniz. Bu durumda hangisine izin vereceğiniz önemli. Son bölüm klasik cozumpark\RDSAdmins gibi grup ismini yazıyorsunuz, sondaki 2 ise yetki. Yani full yetki vermek için kullanılıyor. Yetki tipleri de aşağıdaki gibidir;

0 = WINSTATION_GUEST_ACCESS

1 = WINSTATION_USER_ACCESS

2 = WINSTATION_ALL_ACCESS

Umarım faydalı bir paylaşım olmuştur.

Kaynaklar

https://support.microsoft.com/en-us/help/290720/how-to-add-a-user-to-terminal-services-rdp-permissions-by-using-wmi

http://purerds.org/remote-desktop-scripts/granting-shadowing-permissions-non-admins-windows-server-2012-r2/

Hakan Uzuner

2002 yılından beri aktif olarak bilişim sektöründe çalışmaktayım. Bu süreç içerisinde özellikle profesyonel olarak Microsoft teknolojileri üzerinde çalıştım. Profesyonel kariyerim içerisinde eğitmenlik, danışmanlık ve yöneticilik yaptım. Özellikle danışmanlık ve eğitmenlik tecrübelerimden kaynaklı pek çok farklı firmanın alt yapısının kurulum, yönetimi ve bakımında bulundum. Aynı zamanda ÇözümPark Bilişim Portalı nın Kurucusu olarak portal üzerinde aktif olarak rol almaktayım. Profesyonel kariyerime ITSTACK Bilgi Sistemlerinde Profesyonel Hizmetler Direktörü olarak devam etmekteyim.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu