امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

4 روش فعال کردن ریموت دسکتاپ ویندوز 10

سلام خدمت دوستان و کاربران عزیز وب سایت توسینسو . در این مطلب به شما عزیزان روش های مختلف فعال سازی Remote Desktop بصورت ریموت که شامل Group Policy ، PowerShell ، WMI و ... می شود را آموزش میدهیم. خبره ترین و به اصطلاح Geek ترین افراد در حوزه سیستم عامل ویندوز هم گاهی اوقات نیاز پیدا می کنند تا به سیستم Remote Desktop بزنند و مدیریتش کنند. قطعا به عنوان کسی که به صورت حرفه ای با سیستم عامل ویندوز کار می کند میدانید که از طریق System Properties میتوانید Remote Desktop را در ویندوز فعال کنید. در واقع راحت ترین و در دسترس ترین راه همین است. اما اگر بخواهید به یک سیستم ریموت در شبکه Remote Desktop بزنید بایستی ابتدا Remote Desktop در آن سیستم فعال کنید زیرا به دلایل امنیتی بصورت پیش فرض این قابلیت در ویندوز ها غیر فعال است.


دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

فعال سازی Remote Desktop از طریق Group Policy Object یا GPO

برای انجام این کار کنسول مدیریتی Group Policy را باز کنید و به مسیر زیر بروید :

Computer Configuration > Administrative Templates > Windows Components >Remote Desktop Services > Remote Desktop Session Host > Connections

روی پالسی Allow users to connect remotely using Remote Desktop Services دابل کلیک کنید و آنرا Enable کنید. حالا باید رنج آدرس IP یا آدرس های IP ای که میتوانند به سیستم ریموت Remote Desktop بزنند را باید در پالسی زیر مشخص کنید. ابتدا به مسیر زیر بروید :

Computer Configuration > Policies > Administrative Templates > Network > Network Connections > Windows Firewall > Domain Profile

روی پالسی Windows Firewall: Allow inbound Remote Desktop exceptions دابل کلیک کنید و آنرا Enable کنید و در کادر رنج IP یا آدرس های IP مورد نظر را وارد کنید.


فعال سازی Remote Desktop از طریق PowerShell

فعال سازی Remote Desktop از طریق PowerShell کمی سخت است و ابتدا PowerShell Remoting باید روی سیستم مقصد فعال شده باشد تا بتوان توسط PowerShell سیستم های کلاینت و سرور را مدیریت کرد. ما فرض را بر این میگیریم که PowerShell Remoting روی سیستم مقصد فعال است . حالا با اجرای دستور زیر میتوانید Remote Desktop را روی سیستم مقصد فعال کنید :

Invoke-Command -Computername  -ScriptBlock {Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" –Value 0 }

به جای باید اسم کامپیوتر مقصد را وارد کنید. ما از دستور Invoke-Command برای استفاده از دستور Set-ItemProperty استفاده کردیم. که مقدار کلید رجیستری fDenyTSConnections را به صفر تغییر می دهد. به احتمال زیاد فایروال ویندوز ترافیک RDP را Block می کند که شما باید با استفاده از دستور زیر بایستی اجازه ورود ترافیک RDP را به سیستم مقصد بدهید :

Invoke-Command -Computername  -ScriptBlock {Enable-NetFirewallRule -DisplayGroup "Remote Desktop"}



فعال سازی Remote Desktop از طریق WMI

اگر PowerShell Remoting در سیستم مقصد فعال نباشد شما همچنان میتوانید از PowerShell بوسیله WMI استفاده کنید. این روش زمانی که بخواهید RDP را روی تعداد زیادی کلاینت ها فعال کنید میتواند مفید واقع شود. با استفاده از Script زیر میتوانید بدون فعال سازی PowerShell Remoting روی سیستم های مقصد آنها را مدیریت کنید.

[cmdletbinding()]
param(
    [parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
    [string[]]$ComputerName = $env:computername,
    [ValidateScript({Test-Path $_})]
    [string]$OutFolder = "c:\"
)
 
begin {
$SuccessComps = Join-Path $OutFolder "Successcomps.txt"
$FailedComps = Join-Path $OutFolder "FailedComps.txt"
}
 
process {
    foreach($Computer in $ComputerName) {
 
        try {
            $RDP = Get-WmiObject -Class Win32_TerminalServiceSetting `
                                -Namespace root\CIMV2\TerminalServices `
                                -Computer $Computer `
                                -Authentication 6 `
                                -ErrorAction Stop
                                
        } catch {
            Write-Host "$Computer : WMIQueryFailed"
            "$Computer : WMIQueryFailed" | Out-File -FilePath $FailedComps -Append
            continue
        }
        
        if($RDP.AllowTSConnections -eq 1) {
            Write-Host "$Computer : RDP Already Enabled"
            "$Computer : RDP Already Enabled" | Out-File -FilePath $SuccessComps -Append
            continue
        } else {
            try {
                $result = $RDP.SetAllowTsConnections(1,1)
                if($result.ReturnValue -eq 0) {
                    Write-Host "$Computer : Enabled RDP Successfully"
                    "$Computer : RDP Enabled Successfully" | Out-File -FilePath $SuccessComps -Append
                } else {
                    Write-Host "$Computer : Failed to enabled RDP"
                    "$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append
 
                }
            
            } catch {
                Write-Host "$computer : Failed to enabled RDP"
                "$Computer : Failed to enable RDP" | Out-File -FilePath $FailedComps -Append
            }
        }
    }
 
}
 
end {}

این Script را درون یک فایل با پسوند ps1 ذخیره کنید. برای مثال ما اسم این فایل را Enable-RDPAccess.ps1 میگذاریم. حالا دستور زیر را اجرا کنید :

.\Enable-RDPAccess.ps1 -ComputerName 

به جای باید اسم کامپیوتر مقصد را وارد کنید. اگر خواستید RDP را روی تعداد زیادی سیستم های کلاینت فعال کنید Computer name های سیستم ها را درون یک فایل متنی ذخیره کنید و دستور زیر را اجرا کنید :

Get-Content  | Enable-RDPAccess.ps1

با اجرای دستور زیر نیز میتوانید اجازه ورود ترافیک RDP به سیستم مقصد را بدهید :

wmic /node: process call create "cmd.exe /c netsh firewall set service RemoteDesktop enable"

همچنین با استفاده از ابزار wmic میتوانید Remote Desktop را روی کلاینت ها فعال کنید :

wmic /node: process call create 'cmd.exe /c reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'

توجه کنید که در تنظیمات فایروال سیستم ریموت باید اجازه ورود ترافیک WMI را بدهید. با استفاده از Group Policy میتوانید این کار را انجام دهید. برای انجام این کار در Group Policy به مسیر زیر بروید :

Computer Configuration > Policies > Windows Settings > Security Settings > Windows Firewall with Advanced Security

روی Inbound Rules راست کلیک کنید و گزینه Predefined را انتخاب کنید و Windows Management Instrumentation یا WMI را از Drop-Down menu انتخاب کنید.


فعال سازی Remote Desktop از طریق PsExec

گزینه دیگری که میتوان برای فعال سازی Remote Desktop روی سیستم های کلاینت بکار برد استفاده از ابزار رایگان PsExec است. استفاده از این ابزار نیازی به فعال کردن PowerShell Remoting روی سیستم های ریموت ندارد. تنها عیبی که این ابزار دارد این است که به اندازه دستور Invoke-Command در PowerShell برای استفاده کردن سر راست و آسان نیست. برای استفاده از PsExec بایستی File and Printer sharing در سیستم ریموت به سمت Inbound باز باشد. که به احتمال زیاد امکان باز بودن آن زیاد است نسبت به پورت های WMI یا فعال کردن PowerShell Remoting. چنانچه فعال نبود از مسیر زیر در Group Policy میتوانید آنرا فعال کنید :

Computer Configuration > Policies > Administrative Templates > Network > Network Connections > Windows Firewall > Domain Profile > Windows Firewall: Allow inbound file and printer sharing exception

حالا وارد پوشه ای شوید که ابزار psexec.exe در آن قرار دارد و سپس دستور زیر را در Command Prompt اجرا کنید :

psexec.exe \\ reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

طبق معمول با استفاده از دستور زیر بایستی اجازه ورود ترافیک RDP را به سیستم مقصد بدهید :

psexec.exe \\ netsh firewall set service RemoteDesktop enable

امیدوارم مورد توجه شما قرار گرفته باشد.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات