ഒരു OpenVPN ക്ലയന്റ് പുറത്താക്കൽ: kill, deny അതോ സർട്ടിഫിക്കറ്റ് റദ്ദാക്കലോ?
OpenVPN-ന്റെ മൂന്ന് പ്രവർത്തനങ്ങൾ ക്ലയന്റിനെ നീക്കുന്നു, പക്ഷേ ഓരോന്നും വ്യത്യസ്തമായ ഒന്ന് അവസാനിപ്പിക്കുന്നു: സജീവ സെഷൻ, ഒരു ലോഗിൻ ശ്രമം, അല്ലെങ്കിൽ വീണ്ടും ബന്ധിപ്പിക്കാനുള്ള അവകാശം. ഐഡന്റിറ്റി അനുസരിച്ച് തിരഞ്ഞെടുക്കുക.
നിങ്ങളുടെ കുറിപ്പുകളിൽ ഒരു common name-ഉം ഒരു വിലാസവുമുണ്ട്, കൂടാതെ എല്ലാം ക്ലയന്റിനെ നീക്കുന്നതായി തോന്നുന്ന മൂന്ന് കമാൻഡുകളും. നിങ്ങൾക്ക് വേണ്ടത് ഒരെണ്ണം മാത്രം ചെയ്യുന്നു, തിരഞ്ഞെടുപ്പ് ഇപ്പോൾ പ്രവർത്തിക്കുന്ന സെഷൻ അവസാനിപ്പിക്കണോ, അടുത്ത ലോഗിൻ നിരസിക്കണോ, അതോ ബന്ധിപ്പിക്കാനുള്ള അവകാശം പൂർണ്ണമായി എടുക്കണോ എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. എന്തെങ്കിലും തൊടുന്നതിന് മുമ്പ് നിങ്ങൾക്ക് യഥാർത്ഥത്തിൽ ഉള്ള ഐഡന്റിറ്റി വായിക്കുക, കാരണം OpenVPN കുളം പിന്നീട് അതേ ടണൽ വിലാസം മറ്റൊരു സെഷന് നൽകുന്നു.
യഥാർത്ഥത്തിൽ നിങ്ങൾക്ക് ഏത് ഐഡന്റിറ്റി ഉണ്ട്
പതിപ്പ് 3-ന്റെ സ്റ്റാറ്റസ് ഫയലാണ് സാധാരണ തുടക്കം. CLIENT_LIST വിഭാഗത്തിൽ common name, യഥാർത്ഥ വിലാസം, ബൈറ്റ് കൗണ്ടർ, ബന്ധിപ്പിച്ച സമയം എന്നിവയുണ്ട്; ROUTING TABLE വിഭാഗം ഒരു വെർച്വൽ വിലാസത്തെ common name-മായി അവസാന റഫറൻസിന്റെ ടൈംസ്റ്റാമ്പോടെ ബന്ധിപ്പിക്കുന്നു. common name ആണ് സ്ഥിരമായ ഐഡന്റിറ്റി. വെർച്വൽ വിലാസം ഒരു അനുവദനമാണ്, NAT-ന് പിന്നിലെ യഥാർത്ഥ വിലാസം സെഷനുകൾക്കിടയിൽ മാറാം, സെർവറിൽ ഒന്നും മാറാതെ.
മാനേജ്മെന്റ് ഇന്റർഫേസ് അതിന്റെ status കമാൻഡിലൂടെ സമാനമായ കാഴ്ച കാണിക്കുന്നു, ഓരോ സെഷനും ഒരു ക്ലയന്റ് ID ചേർക്കുന്നു. client-kill കൃത്യമായി ആ ID പ്രതീക്ഷിക്കുന്നു, അത് ടണൽ വിലാസമല്ല. ബന്ധിപ്പിക്കുമ്പോൾ ഏത് common name-ന് ഏത് വിലാസം ലഭിച്ചു എന്ന് അറിയേണ്ടതുണ്ടെങ്കിൽ, client-connect സ്ക്രിപ്റ്റിന്റെ പരിസ്ഥിതിയിൽ രണ്ടും വിശ്വസനീയമായ ബാഹ്യ വിലാസത്തോടൊപ്പമുണ്ട്, പക്ഷേ ആ സ്ക്രിപ്റ്റ് OpenVPN ഉപയോക്താവായി പ്രവർത്തിക്കുന്നു, എഴുതാവുന്ന ലോഗ് പാത്ത് വേണം.
| What you hold | Where it came from | What it can act on |
|---|---|---|
| Common name | CLIENT_LIST, or the auth hook | kill, and credential revocation |
| Client ID | status on the management socket | client-kill, that one session |
| Tunnel address | ROUTING TABLE, client-connect environment | Nothing durable, the address is recycled |
ഇപ്പോൾ കൊല്ലുക, ലോഗിനിൽ നിരസിക്കുക, എന്നെന്നേക്കുമായി റദ്ദാക്കുക
മാനേജ്മെന്റ് ഇന്റർഫേസിലെ രണ്ട് നീക്കംചെയ്യൽ കമാൻഡുകളും സെഷൻ പ്രവർത്തനങ്ങളാണ്. kill ഒരു common name അല്ലെങ്കിൽ യഥാർത്ഥ വിലാസവും പോർട്ടും എടുക്കുന്നു; client-kill ക്ലയന്റ് ID എടുത്ത് ആ ഇൻസ്റ്റൻസ് ഉടൻ അവസാനിപ്പിക്കുന്നു. രണ്ടും തടസ്സമല്ല: സാധുവായ സർട്ടിഫിക്കറ്റും പാസ്വേഡും ഉള്ള പുറത്താക്കിയ ക്ലയന്റ് കുറച്ച് സെക്കൻഡുകൾക്കുള്ളിൽ വീണ്ടും ബന്ധിപ്പിക്കുന്നു, ഇത് പരീക്ഷണ peer വീണ്ടും ഉപയോഗിക്കുമ്പോൾ നല്ലതും ലാപ്ടോപ്പ് മോഷ്ടിക്കപ്പെട്ടാൽ ഉപയോഗശൂന്യവുമാണ്.
client-deny മറ്റൊരു തരം തീരുമാനമാണ്. സാധാരണയായി ഇത് authentication അല്ലെങ്കിൽ client-connect ഹൂക്കിൽ നിന്ന് പുറപ്പെടുവിക്കുകയും കാരണത്തോടെ സെഷൻ നിരസിക്കുകയും ചെയ്യുന്നു, അതിനാൽ ഇത് ലോഗിൻ നിരസിക്കുന്ന നയത്തിന് യോജിക്കും, ബന്ധം തകർക്കുന്ന നയത്തിനല്ല. ഡോക്യുമെന്റേഷൻ മുന്നറിയിപ്പ് നൽകുന്നത് TLS പുനർചർച്ചയ്ക്കിടയിൽ പുറപ്പെടുവിക്കുന്ന നിരസിക്കൽ പുനർനിർണ്ണയിച്ച കീ അസാധുവാക്കുന്നു എന്നും, നിലവിലുള്ള സെഷൻ പരിവർത്തന ജാലകം അടയുന്നതുവരെ തുടരാം എന്നുമാണ്. ക്ലയന്റ് ഇപ്പോൾ പോയിരിക്കണം എന്നതാണ് ആവശ്യമെങ്കിൽ, രേഖപ്പെടുത്തിയ ഉത്തരം client-kill ആണ്.
ശാശ്വത നീക്കം ഇവയെല്ലാത്തിനും താഴെയാണ്. സർട്ടിഫിക്കറ്റ് റദ്ദാക്കുകയും സെർവർ യഥാർത്ഥത്തിൽ വീണ്ടും ലോഡ് ചെയ്യുന്ന പട്ടികയിലേക്ക് crl-verify ചൂണ്ടുന്നുവെന്ന് ഉറപ്പാക്കുകയും ചെയ്യുക, ccd ഡയറക്ടറിയിലെ ക്ലയന്റ്-നിർദ്ദിഷ്ട കോൺഫിഗറേഷൻ ഫയൽ പ്രവർത്തനരഹിതമാക്കുക, അല്ലെങ്കിൽ authentication ഹൂക്ക് ചോദിക്കുന്ന backend-ൽ അക്കൗണ്ട് പ്രവർത്തനരഹിതമാക്കുക. റദ്ദാക്കലും തൽക്ഷണമല്ല: ഡിഫോൾട്ട് reneg-sec ക്രമീകരണങ്ങളോടെ സ്ഥാപിതമായ സെഷൻ പുനർചർച്ച വരെ തുടരാം, അതിനാൽ സെഷൻ പ്രവർത്തനവും ക്രെഡൻഷ്യൽ പ്രവർത്തനവും പരസ്പരം പൂരകമാണ്, പകരമല്ല.
മാനേജ്മെന്റ് സോക്കറ്റ് ഒഴിഞ്ഞതാണോ?
മാനേജ്മെന്റ് ഇന്റർഫേസ് ഒരു സമയത്ത് ഒരു ക്ലയന്റിന് സേവനം നൽകുന്നു. ഒരു GUI അല്ലെങ്കിൽ നിരീക്ഷണ ഡീമൺ ഇതിനകം ബന്ധം പിടിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ സ്ക്രിപ്റ്റിന് അതിനടുത്ത് ചേരാനാവില്ല, ക്ലയന്റ് അനുസരിച്ച് വൃത്തിയായി പരാജയപ്പെടുന്നതിന് പകരം നിലവിലുള്ളത് പുറത്താക്കാം. അതിന്റെ പാസ്വേഡ് ആ സോക്കറ്റിൽ വ്യക്തമായ എഴുത്തായി സഞ്ചരിക്കുന്നു, അതിനാൽ അതിന്റെ സ്ഥാനം പ്രാദേശിക വിലാസമോ unix സോക്കറ്റോ ആണ്, ഒരിക്കലും പൊതു ഇന്റർഫേസല്ല.
സോക്കറ്റ് എടുക്കാനാവാത്തപ്പോൾ, ഇപ്പോഴും ഓപ്ഷനുകളുണ്ട്, എല്ലാം മന്ദഗതിയിലാണ്. നിയന്ത്രണമുണ്ടെങ്കിൽ ആദ്യം GUI സെഷൻ വിടുക, അല്ലെങ്കിൽ ക്രെഡൻഷ്യൽ പാളിയുടെ വഴി സ്വീകരിച്ച് അടുത്ത പുനർചർച്ച കാത്തിരിക്കുക. ചെയ്യരുതാത്തത് ഒരു ക്ലയന്റിനെ ഒഴിവാക്കാൻ സേവനം പുനരാരംഭിക്കലാണ്, കാരണം അത് മറ്റെല്ലാ സെഷനുകളും അവസാനിപ്പിക്കുകയും ഈ സെഷന്റെ സ്റ്റാറ്റസ് ഫയൽ തെളിവുകൾ നശിപ്പിക്കുകയും ചെയ്യുന്നു.
ലൈവ് സെർവറിൽ ഞാൻ പ്രവർത്തിപ്പിക്കുന്ന ക്രമം
ബന്ധിപ്പിക്കുക, നിലവിലെ അവസ്ഥ വായിക്കുക, ഇപ്പോൾ വായിച്ച ID-യിൽ പ്രവർത്തിക്കുക, പിന്നെ അത് വീണ്ടും വായിക്കുക. ഡോക്യുമെന്റിൽ നിന്ന് പകർത്തിയ മൂല്യങ്ങളാണ് തെറ്റായ വ്യക്തിയെ കൊല്ലാനുള്ള ഏറ്റവും സാധാരണ വഴി.
status # note the client ID and common name
client-kill 3 # end that session now
kill Test-Client # alternative: by common name
status # confirm the session is goneമുകളിലെ പേരും നമ്പറും പ്ലേസ്ഹോൾഡറുകളാണ്, ID-കൾ മറ്റ് ക്ലയന്റുകൾ വിച്ഛേദിക്കപ്പെട്ടതിന് ശേഷം വീണ്ടും ഉപയോഗിക്കുന്നു. എന്തെങ്കിലും പൂർത്തിയായി എഴുതുന്നതിന് മുമ്പ് വരി ഇല്ലെന്ന് ഉറപ്പാക്കുക, ബന്ധിപ്പിച്ച ക്ലയന്റുകളുടെ എണ്ണം ഒന്ന് മാറിയോ പലതല്ലേ എന്ന് പരിശോധിക്കുക.
അത് പുറത്തുതന്നെ നിന്നുവെന്ന് ഉറപ്പാക്കുക
common name, ടണൽ വിലാസം, ബാഹ്യ വിലാസം, നീക്കംചെയ്ത മിനിറ്റ് എന്നിവ രേഖപ്പെടുത്തുക. അതേ common name ഒരു മിനിറ്റ് കഴിഞ്ഞ് വീണ്ടും പ്രത്യക്ഷപ്പെട്ടാൽ, സെഷൻ പ്രവർത്തനം ഫലിച്ചു, ക്രെഡൻഷ്യൽ പാളി ഫലിച്ചില്ല, ഇത് ഒരിക്കലും നിലവിൽ വരാത്ത കമാൻഡിന്റെ അറ്റകുറ്റപ്പണിയിൽ നിന്ന് തികച്ചും വ്യത്യസ്തമാണ്.
പിന്നെ ക്ലയന്റ് ഭാഗത്തുനിന്ന് പരിശോധിക്കുക. റദ്ദാക്കിയ സർട്ടിഫിക്കറ്റ് അടുത്ത ഹാൻഡ്ഷേക്കിൽ പരാജയപ്പെടണം; അത് ഇപ്പോഴും ബന്ധിപ്പിക്കുന്നെങ്കിൽ, CRL ഒട്ടും വായിക്കുന്നില്ല, അതാണ് റിപ്പോർട്ട് ചെയ്യാൻ യോഗ്യമായ കണ്ടെത്തൽ. എന്ത് അവസാനിപ്പിക്കണം എന്നതിന്റെ അടിസ്ഥാനത്തിൽ പ്രവർത്തനം തിരഞ്ഞെടുക്കുക, രണ്ടാമത്തെ status ഉപയോഗിച്ച് ഉറപ്പാക്കുക, ഉത്തരം സെഷനെക്കാൾ നീണ്ടുനിൽക്കണമെങ്കിൽ ക്രെഡൻഷ്യൽ പാളി ശരിയാക്കുക.