OpenVPN-ൽ LDAP പ്രാമാണീകരണം പ്രവർത്തിക്കുന്നു പക്ഷേ ഗ്രൂപ്പ് പരിശോധന പരാജയപ്പെടുന്നു: എവിടെ നോക്കണം
പ്രാമാണീകരണം കടന്നുപോകാം, എന്നാൽ ഗ്രൂപ്പ് പരിശോധന എല്ലാവരെയും നിരസിക്കുന്നു. Authorization ബ്ലോക്ക്, അംഗത്വ ആട്രിബ്യൂട്ട്, ഡയറക്ടറി എൻഡ്പോയിന്റ് എന്നിവ ഒന്നൊന്നായി പരിശോധിക്കുക.
ക്രെഡൻഷ്യലുകൾ കടന്നുപോകുന്നു, ടണൽ ഉയരാൻ തുടങ്ങുന്നു, പിന്നീട് സെഷൻ പാസ്വേഡിനെക്കുറിച്ചല്ല, ഗ്രൂപ്പിനെക്കുറിച്ചുള്ള സന്ദേശത്തോടെ പരാജയപ്പെടുന്നു. ആ സംയോജനം പരാജയത്തെ LDAP പ്ലഗിന്റെ ജോലിയുടെ രണ്ടാം പകുതിയിൽ നിർത്തുന്നു: ബൈൻഡും പാസ്വേഡ് പരിശോധനയും വിജയിച്ചു, തുടർന്നുള്ള അംഗത്വ തീരുമാനം വിജയിച്ചില്ല. രണ്ട് പകുതികളും ഒരേ കോൺഫിഗറേഷൻ ബ്ലോക്കിൽ നിന്ന് വായിക്കുന്നു, അതിനാൽ ഒരിടത്തെ പരിഹാരം മറ്റതിനെ സ്പർശിക്കാതെ വിടാം. ഘട്ടം പേരിടുന്ന ലോഗ് വരിയിൽ നിന്ന് തുടങ്ങുക, യാദൃച്ഛികമായി പരീക്ഷിക്കുന്ന അക്കൗണ്ടിൽ നിന്നല്ല.
നിരസിക്കലിനെ അനുമതിയുടെ ഉത്തരമായി കാണുക
പ്ലഗിൻ ഒരു സേവന ബൈൻഡ് ചെയ്യുന്നു, അക്കൗണ്ട് തിരയുന്നു, നൽകിയ പാസ്വേഡ് പരിശോധിക്കുന്നു, പിന്നീട് ആ അക്കൗണ്ട് അനുവദിച്ച ഗ്രൂപ്പിൽ ഉൾപ്പെടുന്നുണ്ടോ എന്ന് ചോദിക്കുന്നു. ഇവ നാല് വ്യത്യസ്ത പ്രവർത്തനങ്ങളാണ്, അവസാനത്തേത് മാത്രമാണ് ഗ്രൂപ്പുകളെക്കുറിച്ച്. അതിനാൽ വിജയകരമായ ബൈൻഡിന് ശേഷം വരുന്ന നിരസിക്കൽ പാസ്വേഡിനെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല, ക്ലയന്റ് പൊതുവായ പ്രാമാണീകരണ പിശക് കാണിക്കുമ്പോഴും. കോൺഫിഗറേഷൻ മാറ്റുന്നതിന് മുൻപ് പ്ലഗിന്റെ ലോഗ് നില ഉയർത്തുന്നതാണ് ഔട്ട്പുട്ടിൽ ആ നാലിനെ വേർതിരിക്കുന്നത്.
ഗ്രൂപ്പ് മൂല്യനിർണയം തന്നെ തിരയുക. ഗ്രൂപ്പ് ക്വറി ഒട്ടും പ്രത്യക്ഷപ്പെടുന്നില്ലെങ്കിൽ, അനുമതി ബ്ലോക്കിൽ എത്തുന്നില്ല, സാധാരണയായി ഇതിനർഥം ഒരു നിർദ്ദേശം അതിനുടമയായ ബ്ലോക്കിന് പുറത്താണ് അല്ലെങ്കിൽ നിർബന്ധിത ഓപ്ഷൻ കാണുന്നില്ല. ക്വറി പ്രത്യക്ഷപ്പെട്ട് ഒന്നും തിരികെ നൽകുന്നില്ലെങ്കിൽ, എൻഡ്പോയിന്റ് അല്ലെങ്കിൽ ഫിൽട്ടർ നിങ്ങൾ ഉദ്ദേശിച്ചതിൽ നിന്ന് വ്യത്യസ്തമായ ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു.
അംഗത്വം ഫിൽട്ടറിലാണോ ഗ്രൂപ്പ് ബ്ലോക്കിലാണോ എന്ന് തീരുമാനിക്കുക
രണ്ട് പിന്തുണയുള്ള രൂപങ്ങളുണ്ട്, അവ കൂട്ടിക്കലർത്തുന്നതാണ് പ്രവർത്തിക്കുന്ന കോൺഫിഗറേഷൻ പ്രവർത്തിക്കാതാകുന്ന വഴി. ആദ്യത്തേത് ഉപയോക്തൃ ഒബ്ജക്ടിലെ ആട്രിബ്യൂട്ട് ആവശ്യപ്പെട്ട് അംഗത്വത്തെ ഉപയോക്തൃ തിരയലിലേക്ക് തള്ളുന്നു; രണ്ടാമത്തേത് ഉപയോക്തൃ തിരയൽ അതേപടി വിട്ട് പ്ലഗിനെ പിന്നീട് ഗ്രൂപ്പ് ഒബ്ജക്ട് തിരയാൻ അനുവദിക്കുന്നു. ഓരോ വിന്യാസത്തിനും ഒന്ന് തിരഞ്ഞെടുത്ത് ഏതാണ് തിരഞ്ഞെടുത്തതെന്ന് എഴുതിവയ്ക്കുക.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(&(sAMAccountName=%u)(memberOf=CN=VPN Access,OU=Groups,DC=example,DC=org))"
RequireGroup false
</Authorization>ആ രൂപത്തിൽ എല്ലാം ഫിൽട്ടർ തീരുമാനിക്കുന്നു, അതിനാൽ RequireGroup false ആയിരിക്കണം, അല്ലെങ്കിൽ ഫിൽട്ടർ ഒരിക്കലും പരാമർശിക്കാത്ത ഗ്രൂപ്പ് ഒബ്ജക്ട് തിരയാൻ പ്ലഗിൻ പോകും. ഫിൽട്ടറിലെ ആട്രിബ്യൂട്ട് ഉപയോക്തൃ ഒബ്ജക്ടിൽ ഉണ്ടായിരിക്കണം, നിറച്ചിരിക്കണം, ഗ്രൂപ്പുകൾ നെസ്റ്റ് ചെയ്യുമ്പോൾ ഇത് ഉറപ്പില്ല.
മറ്റേ രൂപം തിരയൽ ലളിതമായി നിർത്തി അതിന് ശേഷം ഗ്രൂപ്പ് തിരയൽ ചേർക്കുന്നു. ഗ്രൂപ്പ് ഒബ്ജക്ട് വ്യക്തമായി പേരിടുന്നു, പ്ലഗിൻ ഉപയോക്താവിനെ ഡയറക്ടറി അതിനായി തിരികെ നൽകുന്ന അംഗങ്ങളുമായി താരതമ്യം ചെയ്യുന്നു. ഉപയോക്തൃ ഫിൽട്ടറിൽ ഒന്നും മാറുന്നില്ല, ഗ്രൂപ്പ് മറ്റൊരു ടീം കൈകാര്യം ചെയ്യുമ്പോൾ ഈ രൂപം പരിശോധിക്കാൻ എളുപ്പമാക്കുന്നു.
<Authorization>
BaseDN "OU=People,DC=example,DC=org"
SearchFilter "(sAMAccountName=%u)"
RequireGroup true
Group "CN=VPN Access,OU=Groups,DC=example,DC=org"
</Authorization>അന്ധമായ സ്ഥലം പൊതുവാണ്: ലളിതമായ അംഗത്വ താരതമ്യം നെസ്റ്റ് ചെയ്ത ഗ്രൂപ്പുകളെ വികസിപ്പിക്കുന്നില്ല, അതിനാൽ പാരന്റ് ഗ്രൂപ്പിലൂടെ പ്രവേശനം വരുന്ന അക്കൗണ്ട് പരാജയപ്പെടുന്നു, കൺസോൾ ഇപ്പോഴും അംഗത്വം കാണിക്കുന്നു. Active Directory ഗ്രൂപ്പിൽ member വെളിപ്പെടുത്തുന്നു, മറ്റ് സ്കീമകൾ uniqueMember ഉപയോഗിക്കുന്നു, തെറ്റായ ആട്രിബ്യൂട്ടിലേക്ക് ചൂണ്ടിയാൽ പിശകിന് പകരം ശൂന്യമായ ഫലം ലഭിക്കുന്നു.
ഗ്രൂപ്പ് ഒബ്ജക്ട് ഉൾക്കൊള്ളുന്ന എൻഡ്പോയിന്റ് തിരഞ്ഞെടുക്കുക
URL പ്ലഗിൻ ഏത് ഡയറക്ടറിയോട് ചോദിക്കുന്നു എന്ന് തീരുമാനിക്കുന്നു, 389 പോർട്ടിലെ ഡൊമെയിൻ കൺട്രോളർ അതിന്റെ സ്വന്തം നാമകരണ സന്ദർഭത്തിന് മാത്രം ഉത്തരം നൽകുന്നു. 3268 പോർട്ടിലെ ആഗോള കാറ്റലോഗ് മുഴുവൻ കാടിനും ഉത്തരം നൽകുന്നു, വായനയ്ക്ക് മാത്രം, ഭാഗിക ആട്രിബ്യൂട്ട് സെറ്റോടെ. അക്കൗണ്ടുകൾ ഒരു ഡൊമെയിനിലും VPN ഗ്രൂപ്പ് മറ്റൊന്നിലും ആണെങ്കിൽ, ഒറ്റ ഡൊമെയിൻ ക്വറിക്ക് ഉപയോക്താവിനെ കണ്ടെത്താനും അംഗത്വം ഒഴിവാക്കാനും കഴിയും. URL കാറ്റലോഗ് പോർട്ടിലേക്ക് മാറ്റുന്നത് നിരസിക്കൽ പരിഹരിക്കുന്ന സന്ദർഭം ഇതാണ്, ആളുകൾ അമിതമായി സാമാന്യവൽക്കരിക്കുന്ന സന്ദർഭവും ഇതാണ്.
ഭാഗിക ആട്രിബ്യൂട്ട് സെറ്റാണ് പരിധി: കാറ്റലോഗിൽ ഇല്ലാത്ത ആട്രിബ്യൂട്ടിൽ ഫിൽട്ടർ ചെയ്യാൻ കഴിയില്ല, അതിനാൽ അതേ മാറ്റം ഒരു വിന്യാസത്തെ പ്രവർത്തിപ്പിക്കുകയും മറ്റൊന്ന് ഒന്നും തിരികെ നൽകാതിരിക്കുകയും ചെയ്യാം. ബ്ലോക്ക് വീണ്ടും എഴുതുന്നതിന് മുൻപ് യഥാർത്ഥ ഉപയോക്താവിനും ഗ്രൂപ്പിനും എൻഡ്പോയിന്റ് യഥാർത്ഥത്തിൽ എന്ത് നൽകുന്നു എന്ന് സ്ഥിരീകരിക്കുക. റെഫറലുകളും TLS ഉം വീണ്ടും വേറിട്ട വിഷയങ്ങളാണ്, റെഫറൽ പിന്തുടരണം, TLS ആവശ്യമുള്ള എൻഡ്പോയിന്റിന് യോജിച്ച ട്രസ്റ്റ് ഫയലുകൾ വേണം.
അക്കൗണ്ട് അവസ്ഥയും തിരയൽ പരിധിയും അവയുടെ സ്വന്തം ഫീൽഡുകളിൽ വയ്ക്കുക
നിഷ്ക്രിയ ഫ്ലാഗ് ഫിൽട്ടറിനാണ്, ഗ്രൂപ്പ് പരിശോധനയ്ക്കല്ല. Active Directory-യിൽ ഇത് userAccountControl-ന്റെ രണ്ടാം ബിറ്റാണ്, ആ വ്യവസ്ഥയില്ലാതെ സാധുവായ പാസ്വേഡുള്ള നിഷ്ക്രിയ അക്കൗണ്ട് പ്രാമാണീകരിച്ച് പിന്നീട് ഗ്രൂപ്പ് ഘട്ടത്തിൽ പരാജയപ്പെടുന്നു, ഇത് അനുമതി പിശകുപോലെ തോന്നുന്നു. തിരയൽ പരിധി അടിസ്ഥാന DN-ൽ ആണ്, കാരണം ഡൊമെയിൻ റൂട്ടിൽ നിന്ന് തുടങ്ങുന്നത് സാവധാനമാണ്, നിങ്ങൾ ഉൾക്കൊള്ളാൻ ഉദ്ദേശിച്ച ഓർഗനൈസേഷണൽ യൂണിറ്റിന് പുറത്തുള്ള ഒബ്ജക്ടുകളുമായി പൊരുത്തപ്പെടാം.
ബൈൻഡ് അക്കൗണ്ടിന്റെ അവകാശങ്ങളും ഇടുങ്ങിയതായി സൂക്ഷിക്കുക. വിശാലമായ ഡയറക്ടറി അവകാശങ്ങൾ തെറ്റായി കോൺഫിഗർ ചെയ്ത ഫിൽട്ടറിനെ വിജയകരമായ ക്വറിയാക്കി മാറ്റുകയും ആരെങ്കിലും അക്കൗണ്ട് ഓഡിറ്റ് ചെയ്യുന്നതുവരെ പിശക് മറയ്ക്കുകയും ചെയ്യുന്നു. അംഗത്വം ഡയറക്ടറിയിൽ തന്നെ മാറ്റുക, ഒരിക്കലും പ്രാദേശിക ഒഴിവാക്കൽ പട്ടികയിൽ അല്ല, അങ്ങനെ പ്രവേശനം നീക്കാൻ അക്കൗണ്ട് നിഷ്ക്രിയമാക്കിയാൽ മതിയാകും. ഗ്രൂപ്പ് മറ്റൊരു ടീം കൈകാര്യം ചെയ്യുന്നുവെങ്കിൽ, അതിൽ ഫിൽട്ടർ എഴുതുന്നതിന് മുൻപ് അവർ നിറയ്ക്കുന്ന ആട്രിബ്യൂട്ടിൽ യോജിക്കുക.
മൂന്ന് അക്കൗണ്ടുകളിലൂടെ ഫലം തെളിയിക്കുക
മൂന്ന് ഐഡന്റിറ്റികൾക്കെതിരെ കോൺഫിഗറേഷൻ പ്രവർത്തിപ്പിക്കുക: അനുവദിച്ച അംഗം, ഗ്രൂപ്പിന് പുറത്തുള്ള സാധുവായ അക്കൗണ്ട്, നിഷ്ക്രിയമാക്കിയ അക്കൗണ്ട്. മൂന്നും നിരസിക്കപ്പെട്ടാൽ ബൈൻഡോ ഗ്രൂപ്പ് ക്വറിയോ തകർന്നിരിക്കുന്നു; മൂന്നും സ്വീകരിക്കപ്പെട്ടാൽ ഒരു ഗ്രൂപ്പ് വ്യവസ്ഥയും ബാധകമല്ല. നിങ്ങൾക്ക് പ്രധാനമായ കേസുകളെ കോൺഫിഗറേഷൻ വേർതിരിക്കുന്നു എന്ന് തെളിയിക്കുന്ന ഏക ഫലം മിശ്രിത ഫലമാണ്.
പ്ലഗിനെ കുറ്റപ്പെടുത്തുന്നതിന് മുൻപ് അതേ മൂന്ന് ഉത്തരങ്ങൾ നേരിട്ട് ഡയറക്ടറിയിൽ നിന്ന് വായിക്കുക. ആദ്യ ക്വറി ഫിൽട്ടർ ആശ്രയിക്കുന്ന ഗ്രൂപ്പ് ആട്രിബ്യൂട്ട് കാണിക്കുന്നു, രണ്ടാമത്തേത് അക്കൗണ്ട് നിയന്ത്രണ മൂല്യം കാണിക്കുന്നു. നിങ്ങളുടെ സ്വന്തം അടിസ്ഥാന DN, അക്കൗണ്ട്, എൻഡ്പോയിന്റ് എന്നിവ പകരം വയ്ക്കുക:
ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=alice)" memberOf
ldapsearch -H ldap://dc01.example.org:3268 -x -D "[email protected]" -W -b "DC=example,DC=org" "(sAMAccountName=bob)" userAccountControlmemberOf ശൂന്യമായി തിരികെ വരുന്ന ഉപയോക്താവ് ഡയറക്ടറിയുടെ വസ്തുതയാണ്, പ്ലഗിൻ പിശകല്ല, നിഷ്ക്രിയമാക്കിയ ശേഷവും പ്രാമാണീകരിക്കുന്ന അക്കൗണ്ട് എന്നാൽ ഫിൽട്ടറിൽ അക്കൗണ്ട് നിയന്ത്രണ വ്യവസ്ഥ ഇല്ല എന്നാണ്. ആദ്യം ആ തെളിവ് ശരിയാക്കുക, പിന്നീട് മൂന്ന് അക്കൗണ്ട് പരീക്ഷണം വീണ്ടും പ്രവർത്തിപ്പിക്കുക. പരാജയപ്പെട്ട ഘട്ടം പേരിട്ട ലോഗ് വരി കോൺഫിഗറേഷൻ മാറ്റത്തിന് അരികിൽ സൂക്ഷിക്കുക, അടുത്ത വ്യക്തിക്ക് തിരയൽ ആവർത്തിക്കാതെ അനുമതിയെ പ്രാമാണീകരണത്തിൽ നിന്ന് വേർതിരിക്കാം.