میں جس تنظیم میں کام کرتا ہوں وہاں دور دراز سے کام کرنا اصولی طور پر ممنوع ہے۔ تھا. پچھلے ہفتے تک۔ اب ہمیں فوری طور پر ایک حل پر عمل درآمد کرنا تھا۔ کاروبار سے - عمل کو ایک نئے کام کی شکل میں ڈھالنا، ہماری طرف سے - PIN کوڈز اور ٹوکنز کے ساتھ PKI، VPN، تفصیلی لاگنگ اور بہت کچھ۔
دوسری چیزوں کے علاوہ، میں ریموٹ ڈیسک ٹاپ انفراسٹرکچر عرف ٹرمینل سروسز ترتیب دے رہا تھا۔ ہمارے پاس مختلف ڈیٹا سینٹرز میں کئی RDS تعینات ہیں۔ اہداف میں سے ایک یہ تھا کہ متعلقہ IT محکموں کے ساتھیوں کو صارف کے سیشنز سے انٹرایکٹو طور پر جڑنے کے قابل بنایا جائے۔ جیسا کہ آپ جانتے ہیں، اس کے لیے ایک معیاری RDS شیڈو میکانزم موجود ہے، اور اسے تفویض کرنے کا سب سے آسان طریقہ RDS سرورز پر مقامی منتظم کے حقوق دینا ہے۔
میں اپنے ساتھیوں کا احترام اور قدر کرتا ہوں، لیکن جب منتظم کے حقوق دینے کی بات آتی ہے تو میں بہت لالچی ہوں۔ 🙂 وہ لوگ جو مجھ سے متفق ہیں، براہ کرم کٹ کو فالو کریں۔
ٹھیک ہے، کام واضح ہے، اب کاروبار پر اترتے ہیں.
1 مرحلہ
آئیے ایکٹیو ڈائرکٹری میں سیکیورٹی گروپ بنائیں RDP_Operators اور اس میں ان صارفین کے اکاؤنٹس شامل کریں جنہیں ہم حقوق تفویض کرنا چاہتے ہیں:
اگر آپ کے پاس متعدد AD سائٹیں ہیں، تو آپ کو اگلے مرحلے پر جانے سے پہلے اس وقت تک انتظار کرنا پڑے گا جب تک کہ اسے تمام ڈومین کنٹرولرز پر نقل نہ کر دیا جائے۔ اس میں عام طور پر 15 منٹ سے زیادہ وقت نہیں لگتا ہے۔
2 مرحلہ
آئیے گروپ کو RDSH سرورز میں سے ہر ایک پر ٹرمینل سیشن کا انتظام کرنے کے حقوق دیتے ہیں:
Set-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 مرحلہ
گروپ کو مقامی گروپ میں شامل کریں۔ ریموٹ ڈیسک ٹاپ صارفین RDSH سرورز میں سے ہر ایک پر۔ اگر آپ کے سرورز کو سیشن کے مجموعوں میں ملایا جاتا ہے، تو ہم اسے جمع کرنے کی سطح پر کرتے ہیں:
سنگل سرورز کے لیے ہم استعمال کرتے ہیں۔ اجتماعی پالیسیسرورز پر لاگو ہونے کا انتظار کر رہے ہیں۔ وہ لوگ جو انتظار کرنے میں بہت سست ہیں وہ بہتر پرانے gpupdate کا استعمال کرتے ہوئے عمل کو تیز کر سکتے ہیں۔ مرکزی طور پر.
PS اسکرپٹ کو چلانے کے لیے آسان بنانے کے لیے، ہم اس کے لیے ایک cmd فائل کی شکل میں ایک شیل بنائیں گے جس کا نام PS اسکرپٹ ہے:
RDSManagement.cmd
@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*
ہم دونوں فائلوں کو ایک فولڈر میں رکھتے ہیں جو "منیجرز" کے لیے قابل رسائی ہو گی اور ان سے دوبارہ لاگ ان ہونے کو کہیں۔ اب، cmd فائل کو چلا کر، وہ RDS شیڈو موڈ میں دوسرے صارفین کے سیشنز سے منسلک ہونے کے قابل ہو جائیں گے اور انہیں لاگ آؤٹ کرنے پر مجبور کر سکیں گے (یہ اس وقت مفید ہو سکتا ہے جب صارف آزادانہ طور پر "ہینگ" سیشن کو ختم نہیں کر سکتا)۔
یہ کچھ اس طرح لگتا ہے:
"مینیجر" کے لیے
صارف کے لیے
چند حتمی تبصرے۔
اہمیت 1. اگر صارف کا وہ سیشن جس پر ہم کنٹرول حاصل کرنے کی کوشش کر رہے ہیں، سرور پر Set-RDSPermissions.ps1 اسکرپٹ کے عمل میں آنے سے پہلے شروع کیا گیا تھا، تو "مینیجر" کو رسائی کی غلطی موصول ہوگی۔ یہاں حل واضح ہے: منظم صارف کے لاگ ان ہونے تک انتظار کریں۔
اہمیت 2. RDP شیڈو کے ساتھ کئی دنوں تک کام کرنے کے بعد، ہم نے ایک دلچسپ بگ یا فیچر دیکھا: شیڈو سیشن کے اختتام کے بعد، صارف کے کنیکٹ ہونے کے لیے ٹرے میں لینگویج بار غائب ہو جاتا ہے، اور اسے واپس حاصل کرنے کے لیے، صارف کو دوبارہ کرنے کی ضرورت ہوتی ہے۔ -لاگ ان کریں. جیسا کہ یہ پتہ چلتا ہے، ہم اکیلے نہیں ہیں: وقت, два, تین.
بس۔ میں آپ کی اور آپ کے سرور کی اچھی صحت کی خواہش کرتا ہوں۔ ہمیشہ کی طرح، میں تبصروں میں آپ کے تاثرات کا منتظر ہوں اور آپ سے نیچے مختصر سروے کرنے کو کہتا ہوں۔