SID (নিরাপত্তা শনাক্তকারী ) হল একটি অনন্য শনাক্তকারী যা ব্যবহারকারী, গোষ্ঠী, কম্পিউটার বা অন্যান্য নিরাপত্তা বস্তুর জন্য নির্ধারিত হয় যখন সেগুলি Windows বা Active Directory ডোমেনে তৈরি করা হয়। Windows SID ব্যবহার করে, কিন্তু ব্যবহারকারীর নাম নয়, বিভিন্ন সংস্থানগুলিতে অ্যাক্সেস নিয়ন্ত্রণ করতে:নেটওয়ার্ক ভাগ করা ফোল্ডার, রেজিস্ট্রি কী, ফাইল সিস্টেম অবজেক্ট (NTFS অনুমতি), প্রিন্টার ইত্যাদি। এই নিবন্ধে, আমরা আপনাকে খুঁজে বের করার কিছু সহজ উপায় দেখাব। ব্যবহারকারী, গোষ্ঠী বা কম্পিউটারের এসআইডি এবং বিপরীত পদ্ধতি - কীভাবে একটি পরিচিত এসআইডি দ্বারা একটি বস্তুর নাম পেতে হয়।
SID (Windows Security Identifier) কি?
আমরা যেমন বলেছি, SID (নিরাপত্তা শনাক্তকারী) আপনাকে একটি নির্দিষ্ট সুযোগের (ডোমেন বা স্থানীয় কম্পিউটার) মধ্যে একটি ব্যবহারকারী, গোষ্ঠী বা কম্পিউটারকে অনন্যভাবে সনাক্ত করতে দেয়। SID হল ফর্মের একটি স্ট্রিং:
S-1-5-21–489056535-1467421822-2524099697–1231
- 489056535-1467421822-2524099697– এটি সেই ডোমেনের অনন্য শনাক্তকারী যা SID জারি করেছে (এই অংশটি একই ডোমেনের সমস্ত বস্তুর জন্য একই হবে):
- 1231 – বস্তুর আপেক্ষিক নিরাপত্তা শনাক্তকারী (RID)। এটি 1000 থেকে শুরু হয় এবং প্রতিটি নতুন বস্তুর জন্য 1 দ্বারা বৃদ্ধি পায়। FSMO ভূমিকা RID Master সহ একটি ডোমেন কন্ট্রোলার দ্বারা ইস্যু করা হয়েছে৷ ৷
অ্যাক্টিভ ডিরেক্টরি অবজেক্টের এসআইডি ntds.dit
-এ সংরক্ষিত থাকে HKEY_LOCAL_MACHINE\SAM\SAM
-এ স্থানীয় উইন্ডোজ সিকিউরিটি অ্যাকাউন্ট ম্যানেজার (SAM) ডাটাবেসের ডাটাবেস, এবং স্থানীয় ব্যবহারকারী এবং গোষ্ঠীর SID রেজিস্ট্রি কী।
তথাকথিত সুপরিচিত SID আছে উইন্ডোজে। এগুলি যেকোন উইন্ডোজ কম্পিউটারে অন্তর্নির্মিত ব্যবহারকারী এবং গোষ্ঠীগুলির জন্য SID। যেমনঃ
S-1-5-32-544
- অন্তর্নির্মিত প্রশাসক গোষ্ঠীS-1-5-32-545
- স্থানীয় ব্যবহারকারীরাS-1-5-32-555
– দূরবর্তী ডেস্কটপ ব্যবহারকারীদের গোষ্ঠী যাকে RDP এর মাধ্যমে লগ ইন করার অনুমতি দেওয়া হয়S-1-5-domainID-500
– বিল্ট-ইন উইন্ডোজ অ্যাডমিনিস্ট্রেটর অ্যাকাউন্ট- ইত্যাদি
উইন্ডোজে, আপনি SID -> নাম এবং ব্যবহারকারীর নাম -> SID:whoami টুল, wmic, WMI ক্লাস, PowerShell, বা তৃতীয় পক্ষের ইউটিলিটিগুলি রূপান্তর করতে বিভিন্ন সরঞ্জাম ব্যবহার করতে পারেন৷
কিভাবে একটি স্থানীয় ব্যবহারকারী নিরাপত্তা শনাক্তকারী (SID) খুঁজে পাবেন?
স্থানীয় ব্যবহারকারী অ্যাকাউন্টের SID পেতে, আপনি wmic ব্যবহার করতে পারেন টুল, যা আপনাকে কম্পিউটারের WMI নামস্থান অনুসন্ধান করতে দেয়। স্থানীয় ব্যবহারকারী test_user-এর SID পেতে, আপনি WMIC কমান্ড ব্যবহার করতে পারেন:
wmic useraccount where name='test_user' get sid
WMI সংগ্রহস্থল ক্ষতিগ্রস্ত হলে এই কমান্ড একটি ত্রুটি ফেরত দিতে পারে। WMI সংগ্রহস্থল মেরামত করতে এই নির্দেশিকা ব্যবহার করুন.
উপরের কমান্ডটি নির্দিষ্ট স্থানীয় ব্যবহারকারীর SID ফেরত দিয়েছে। এই উদাহরণে - S-1-5-21-1175659216-1321616944-201305354-1005
.
সমস্ত স্থানীয় উইন্ডোজ ব্যবহারকারীদের SID তালিকাভুক্ত করার জন্য, চালান:
wmic useraccount get name,sid
আপনি যদি বর্তমান ব্যবহারকারীর SID পেতে চান, তাহলে নিম্নলিখিত কমান্ডটি চালান:
wmic useraccount where name='%username%' get sid
আপনি পাওয়ারশেল থেকে সরাসরি WMI জিজ্ঞাসা করতে পারেন:
(Get-WmiObject -Class win32_userAccount -Filter "name='test_user' and domain='$env:computername'").SID
Get-CimInstance
ব্যবহার করতে হবে পরিবর্তে Get-WmiObject
cmdlet।
কিন্তু স্থানীয় ব্যবহারকারী এবং গোষ্ঠীগুলি পরিচালনা করার জন্য অন্তর্নির্মিত PowerShell মডিউল ব্যবহার করে স্থানীয় ব্যবহারকারীর SID পাওয়া আরও সহজ (Microsoft.PowerShell.LocalAccounts
)।
Get-LocalUser -Name 'test_user' | Select-Object Name, SID
নির্বাচন করুন
একইভাবে, আপনি স্থানীয় কম্পিউটারের একটি গ্রুপের SID পেতে পারেন:
Get-LocalGroup -Name tstGroup1 | Select-Object Name, SID
নির্বাচন করুন
আপনি .NET ক্লাসগুলিও ব্যবহার করতে পারেন System.Security.Principal.SecurityIdentifier এবং System.Security.Principal.NTAccount PowerShell এর মাধ্যমে ব্যবহারকারীর SID পেতে:
$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
কিভাবে সক্রিয় ডিরেক্টরিতে ব্যবহারকারী/গ্রুপ SID পেতে হয়?
বর্তমান ডোমেন অ্যাকাউন্টের একটি SID পেতে নিম্নলিখিত কমান্ডটি ব্যবহার করা যেতে পারে:
whoami /user
আপনি WMIC
ব্যবহার করে একটি সক্রিয় ডিরেক্টরি ডোমেন ব্যবহারকারীর SID খুঁজে পেতে পারেন টুল. আপনাকে অবশ্যই নিম্নলিখিত কমান্ডে আপনার ডোমেন নাম উল্লেখ করতে হবে:
wmic useraccount where (name='jjsmith' and domain=′corp.woshub.com′) get sid
একটি AD ডোমেন ব্যবহারকারীর SID খুঁজে পেতে, আপনি Get-ADUser cmdlet ব্যবহার করতে পারেন যা Windows PowerShell-এর জন্য সক্রিয় ডিরেক্টরি মডিউলের একটি অংশ৷ চলুন জব্রামস-এর জন্য SID পাই ডোমেন ব্যবহারকারী অ্যাকাউন্ট:
Get-ADUser -Identity 'jabrams' | select SID
নির্বাচন করুন
আপনি Get-ADGroup cmdlet:
ব্যবহার করে একটি AD গ্রুপের SID পেতে পারেন
Get-ADGroup -Filter {Name -like "fr-sales-*"} | Select SID
নির্বাচন করুন
আপনার কম্পিউটারে PowerShell AD মডিউল ইনস্টল না থাকলে, আপনি আগে উল্লেখ করা .Net ক্লাসগুলি ব্যবহার করে AD ডোমেন থেকে ব্যবহারকারীর SID পেতে পারেন:
$objUser = New-Object System.Security.Principal.NTAccount("corp.woshub.com","jabrams")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
একই PowerShell ওয়ান-লাইনার কমান্ড:
(new-object security.principal.ntaccount “jabrams").translate([security.principal.securityidentifier])
একটি কম্পিউটারের ডোমেন এবং স্থানীয় মেশিন SID চেক করা
যদি একটি উইন্ডোজ কম্পিউটার একটি অ্যাক্টিভ ডিরেক্টরি ডোমেনে যুক্ত হয়, তাহলে এর দুটি ভিন্ন SID থাকবে। প্রথম SID হল স্থানীয় কম্পিউটার শনাক্তকারী (মেশিন SID), এবং দ্বিতীয়টি হল AD-তে অনন্য কম্পিউটার অবজেক্ট শনাক্তকারী৷
আপনি কমান্ডটি ব্যবহার করে সক্রিয় ডিরেক্টরি ডোমেনে একটি কম্পিউটারের SID পেতে পারেন:
Get-ADComputer mun-rds1 -properties sid|select name,sid
স্থানীয় কম্পিউটারের SID (মেশিন SID) PsGet ব্যবহার করে প্রাপ্ত করা যেতে পারে SID টুল (https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid)। কিন্তু আপনাকে প্রতিটি কম্পিউটারে ম্যানুয়ালি টুলটি ডাউনলোড এবং ইনস্টল করতে হবে।
.\PsGetsid64.exe
অথবা কোনো স্থানীয় ব্যবহারকারীর SID থেকে শেষ 4টি অক্ষর (RID) ছাঁটাই করে:
$user=(Get-LocalUser Administrator).sid
$user -replace ".{4}$"
এটি গুরুত্বপূর্ণ যে ডোমেনের প্রতিটি কম্পিউটারের একটি অনন্য স্থানীয় (মেশিন) SID রয়েছে৷ আপনি যদি কম্পিউটার বা ভার্চুয়াল মেশিন ক্লোনিং করেন বা একটি টেমপ্লেট থেকে তৈরি করেন, তাহলে আপনাকে অবশ্যই
sysprep
চালাতে হবে ডোমেনে তাদের যোগদানের আগে ইউটিলিটি। এই টুল স্থানীয় মেশিন SID রিসেট. এটি আপনাকে সাধারণ বিশ্বাস সম্পর্কের ত্রুটি থেকে রক্ষা করবে। কিভাবে একটি SID কে ব্যবহারকারী বা গোষ্ঠীর নামে রূপান্তর করবেন?
SID (একটি বিপরীত পদ্ধতি) দ্বারা ব্যবহারকারীর অ্যাকাউন্টের নাম খুঁজে বের করতে, আপনি নিম্নলিখিত কমান্ডগুলির মধ্যে একটি ব্যবহার করতে পারেন:
wmic useraccount where sid='S-1-3-12-12451234567-1234567890-1234567-1434' get name
আপনি RSAT-AD-PowerShell মডিউল ব্যবহার করে SID দ্বারা ডোমেন ব্যবহারকারীর নাম পেতে পারেন:
Get-ADUser -Identity S-1-3-12-12451234567-1234567890-1234567-1434
একটি পরিচিত SID দ্বারা ডোমেন গ্রুপের নাম খুঁজতে, কমান্ডটি ব্যবহার করুন:
Get-ADGroup -Identity S-1-5-21-247647651-3965464288-2949987117-23145222
এছাড়াও আপনি অন্তর্নির্মিত PowerShell ক্লাস (অতিরিক্ত মডিউল ব্যবহার না করে) SID দ্বারা গ্রুপ বা ব্যবহারকারীর নাম খুঁজে পেতে পারেন:
$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S S-1-3-12-12451234567-1234567890-1234567-1434")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value
SID দ্বারা PowerShell ব্যবহার করে সক্রিয় ডিরেক্টরি অনুসন্ধান করা হচ্ছে
আপনি যদি না জানেন যে একটি নির্দিষ্ট SID কোন ধরনের AD অবজেক্টের অন্তর্গত এবং এটি খুঁজতে আপনাকে সঠিক কোন PowerShell cmdlet ব্যবহার করতে হবে (Get-AdUser, Get-ADComputer, বা Get-ADGroup), আপনি সর্বজনীন পদ্ধতি ব্যবহার করতে পারেন Get-ADObject ব্যবহার করে একটি SID দ্বারা সক্রিয় ডিরেক্টরি ডোমেনে বস্তু অনুসন্ধান করা cmdlet।
$sid = ‘S-1-5-21-2412346651-123456789-123456789-12345678’
নির্বাচন করুন
Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass
IncludeDeletedObjects
প্যারামিটার আপনাকে সক্রিয় ডিরেক্টরি রিসাইকেল বিনে মুছে ফেলা বস্তুগুলি অনুসন্ধান করতে দেয়।
আমাদের ক্ষেত্রে, নির্দিষ্ট SID সহ AD অবজেক্ট হল একটি ডোমেন কম্পিউটার (অবজেক্টক্লাস অ্যাট্রিবিউট দেখুন)।