chroot ഉപേക്ഷിക്കണോ അതോ iproute2 ജയിലിലേക്ക് പകർത്തണോ?
അപൂർണ്ണമായ ജയിൽ ബൂട്ട് സമയത്തല്ല, ആരംഭിച്ചതിന് ശേഷം പരാജയപ്പെടുന്നു. കാഠിന്യം ലഘൂകരിക്കുന്നതും ബൈനറി ഫയലുകളും ലൈബ്രറികളും പുതിയ റൂട്ടിലേക്ക് പകർത്തുന്നതും തമ്മിൽ തിരഞ്ഞെടുക്കുക.
സേവനം ആരംഭിക്കുന്നു, ഒരു ക്ലയന്റ് ബന്ധിപ്പിക്കുന്നു, സെർവർ വശത്ത് ഒരു റൂട്ടും ഒരിക്കലും പ്രത്യക്ഷപ്പെടുന്നില്ല. അല്ലെങ്കിൽ ഡീമൺ ആരംഭിക്കാൻ വിസമ്മതിക്കുകയും പ്രവർത്തിപ്പിക്കാൻ കഴിയാത്ത ഒരു കമാൻഡ് പേരിടുകയും ചെയ്യുന്നു. രണ്ട് ഫലങ്ങളും ഒരേ മൂന്ന് വരികളെ പിന്തുടരുന്നു, അവ സാധാരണയായി ഒരു കാഠിന്യ മാർഗ്ഗദർശിയിൽ നിന്ന് ഒരുമിച്ച് പകർത്തപ്പെടുന്നു: പ്രത്യേകാവകാശമില്ലാത്ത അക്കൗണ്ടിലേക്ക് മാറുക, ഗ്രൂപ്പ് ഉപേക്ഷിക്കുക, ഫയൽ സിസ്റ്റത്തിന്റെ റൂട്ട് മാറ്റുക. മൂന്നിൽ ഒന്ന് മാത്രം ഫയലുകൾ മറയ്ക്കുന്നു, അവയിൽ ഒന്ന് മാത്രം റൂട്ടിംഗ് പട്ടിക മാറ്റാനുള്ള അവകാശം നീക്കം ചെയ്യുന്നു. അവയെ വേർതിരിക്കുന്നതാണ് നിങ്ങൾക്ക് യഥാർത്ഥത്തിൽ ഏത് വരി വേണമെന്ന് അറിയാനുള്ള വഴി.
ജയിൽ എന്താണ് നീക്കം ചെയ്യുന്നത്, ഡീമണിന് ഇപ്പോഴും ആവശ്യമുള്ളത്
റൂട്ടിന്റെ മാറ്റം ആരംഭിച്ചതിന് ശേഷമാണ് സംഭവിക്കുന്നത്, അതിനാൽ ഡീമൺ ഇതിനകം തുറന്നവയെല്ലാം സൂക്ഷിക്കുകയും പിന്നീട് തുറക്കുമായിരുന്നവയെല്ലാം നഷ്ടപ്പെടുത്തുകയും ചെയ്യുന്നു. ആ ബിന്ദുവിന് ശേഷം കണക്ഷൻ പ്രവർത്തിപ്പിക്കുന്ന ഏത് സഹായിയും പുതിയ റൂട്ടിനുള്ളിൽ ഉണ്ടായിരിക്കണം, അത് ലോഡ് ചെയ്യുന്ന പങ്കിട്ട ലൈബ്രറികളോടൊപ്പം. ഒരു കോൺഫിഗറേഷൻ ഫയലും സർട്ടിഫിക്കറ്റും കൊണ്ട് നിർമ്മിച്ച ജയിലിൽ രണ്ടും ഇല്ല.
പ്രത്യേകാവകാശമില്ലാത്ത അക്കൗണ്ടിലേക്ക് മാറുന്നത് വേറിട്ട നിയന്ത്രണമാണ്. root ഉപേക്ഷിച്ച പ്രക്രിയയ്ക്ക് ബൈനറി കൃത്യമായി അവിടെ ഉണ്ടായിരുന്നാലും റൂട്ടുകൾ മാറ്റാനോ ഇന്റർഫേസ് ഉയർത്താനോ കഴിയണമെന്നില്ല, അതിനാൽ രണ്ട് പരാജയങ്ങളും വെവ്വേറെ നിർണ്ണയിക്കണം.
ഏത് അറ്റകുറ്റപ്പണി വേണമെന്ന് മൂന്ന് വ്യവസ്ഥകൾ തീരുമാനിക്കുന്നു
ആദ്യ വ്യവസ്ഥ നിങ്ങളുടെ ബിൽഡ് റൂട്ടുകൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യുന്നു എന്നതാണ്. പുതിയ OpenVPN പതിപ്പുകൾ ഇന്റർഫേസും റൂട്ടിംഗ് പട്ടികയും പ്രക്രിയയ്ക്കുള്ളിൽ കോൺഫിഗർ ചെയ്യുന്നു, പഴയ പാക്കേജുകളും സ്വന്തം ക്രമീകരണങ്ങളും ബാഹ്യ ഉപകരണങ്ങളെയോ up, down സ്ക്രിപ്റ്റുകളെയോ ആശ്രയിക്കുന്നു. ലോഗ് ഒരു കമാൻഡ് പേരിട്ടാൽ ബാഹ്യ ഉപകരണം ഉൾപ്പെട്ടിട്ടുണ്ട്, ജയിൽ അത് മറയ്ക്കുന്നു. ലോഗ് പകരം അനുമതി പിശക് കാണിച്ചാൽ പ്രശ്നം അക്കൗണ്ടിലാണ്.
രണ്ടാമത്തേത് പരിപാലനമാണ്. പകർത്തിയ ബൈനറികളുള്ള ജയിൽ, അവ നൽകുന്ന പാക്കേജ് അപ്ഗ്രേഡ് ചെയ്യുമ്പോഴെല്ലാം പുതുക്കണം, അല്ലാത്തപക്ഷം ആദ്യ അപ്ഗ്രേഡ് പിന്നിൽ തകർന്ന തുരങ്കം വിട്ടേക്കും. മൂന്നാമത്തേത് ഒരു നിർദ്ദിഷ്ട നിയന്ത്രണത്തിന് യഥാർത്ഥത്തിൽ chroot വേണോ എന്നതാണ്; ആവശ്യകത യഥാർത്ഥത്തിൽ അധികാര വിഭജനത്തെക്കുറിച്ചാണെങ്കിൽ അക്കൗണ്ട് മാറ്റം മാത്രം മതിയായേക്കാം.
| Signal in the log | Other side of the boundary | Repair direction |
|---|---|---|
| Command not found after startup | Binary and its libraries absent inside the new root | Populate the jail, or drop the chroot line |
| Operation not permitted | Account lost the privilege to edit routes | Keep the account privileged, or pre-create routes elsewhere |
| No such device | Jail lacks the tun device node | Create the node inside, or open it before the root change |
പ്രവർത്തിക്കുന്ന ജയിലിൽ എന്ത് ഉണ്ടായിരിക്കണം
കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കുന്ന ജയിലിന് ബൈനറി, അത് ലിങ്ക് ചെയ്യുന്ന ഓരോ ലൈബ്രറിയും, ഡീമൺ വൈകി തുറക്കുന്ന ഏത് ഉപകരണ നോഡും ആവശ്യമാണ്. ഭാഗങ്ങൾ പകർത്തി VPN ഇല്ലാതെ പരിശോധിക്കുക:
ldd /usr/sbin/ip
chroot /etc/openvpn/jail /sbin/ip route show
chroot /etc/openvpn/jail /sbin/ip link set tun0 up
ആദ്യ കമാൻഡ് ആശ്രിതത്വങ്ങൾ ലിസ്റ്റ് ചെയ്യുന്നു, അതാണ് ആളുകൾ ഒഴിവാക്കുന്നത്. ലൈബ്രറി കണ്ടെത്താത്ത പകർത്തിയ ബൈനറി, ഇല്ലാത്ത ബൈനറിയിൽ നിന്ന് വ്യത്യസ്ത സന്ദേശത്തോടെ പരാജയപ്പെടുന്നു, രണ്ടും ക്ലയന്റ് വശത്തുനിന്ന് വായിക്കുമ്പോൾ OpenVPN കുറ്റമായി തോന്നുന്നു. ജയിലിനുള്ളിൽ കമാൻഡ് കൈകൊണ്ട് പ്രവർത്തിപ്പിക്കുന്നത് സേവനം പുനരാരംഭിക്കാതെ കുറ്റം പുനർനിർമ്മിക്കുന്നു.
കോൺഫിഗറേഷൻ, സർട്ടിഫിക്കറ്റുകൾ, ഏതെങ്കിലും CRL എന്നിവയും ജയിലിലേക്ക് പകർത്തുക, കാരണം ഡീമൺ ആരംഭിച്ചതിന് ശേഷം വീണ്ടും വായിക്കാൻ പ്രതീക്ഷിക്കുന്ന ഫയൽ റൂട്ട് മാറിയതിന് ശേഷം കണ്ടെത്തില്ല. എന്താണ് പകർത്തിയതെന്ന് എഴുതിവയ്ക്കുക, കാരണം നെറ്റ്വർക്ക് പാക്കേജിന്റെ അടുത്ത അപ്ഗ്രേഡ് ഒറിജിനലുകൾ മാറ്റി ജയിൽ പഴയ പകർപ്പിൽ വിടും.
പകരം കാഠിന്യം കുറയ്ക്കുക
ഒരു മാർഗ്ഗദർശി അങ്ങനെ പറഞ്ഞതുകൊണ്ട് മാത്രം ജയിൽ ഉണ്ടെങ്കിൽ, അക്കൗണ്ട് നിയന്ത്രണങ്ങൾ നിലനിർത്തി ആ ഒരു വരി നീക്കം ചെയ്യുന്നത് സംരക്ഷിക്കാവുന്ന ഫലമാണ്. ഡീമൺ തന്റെ ഫയൽ സിസ്റ്റം കാഴ്ച സൂക്ഷിക്കുകയും പ്രശ്നം നഷ്ടപ്പെടുകയും ചെയ്യുന്നു, അധികാര കുറവ് ദീർഘകാല പ്രക്രിയയിൽ നിന്ന് root ഇപ്പോഴും നീക്കം ചെയ്യുന്നു.
എന്ത് അവശേഷിക്കുന്നു, എന്തുകൊണ്ട് എന്ന് എഴുതുക. കുറിപ്പില്ലാതെ നിശ്ശബ്ദമായി ഒരു നിയന്ത്രണം നഷ്ടപ്പെട്ട കോൺഫിഗറേഷൻ കാഠിന്യം ഇങ്ങനെയാണ് വ്യതിചലിക്കുന്നത്, അടുത്ത ഓഡിറ്റ് വരി എന്തുകൊണ്ട് അപ്രത്യക്ഷമായി എന്ന് ചോദിക്കും.
തിരഞ്ഞെടുക്കുന്നതിന് മുമ്പ് മൂന്ന് വരികൾ വിഭജിക്കുക
കോൺഫിഗറേഷൻ പകർത്തുക, മൂന്ന് നിർദ്ദേശങ്ങളും പ്രവർത്തനരഹിതമാക്കുക, ക്ലയന്റ് ബന്ധിപ്പിക്കുന്നുവെന്നും പ്രതീക്ഷിച്ച റൂട്ടുകൾ പ്രത്യക്ഷപ്പെടുന്നുവെന്നും സ്ഥിരീകരിക്കുക. പിന്നീട് അക്കൗണ്ട് വരികൾ മാത്രം വീണ്ടും സജീവമാക്കുക, അതിനുശേഷം chroot ഒറ്റയ്ക്ക്. തുരങ്കം പൊട്ടുന്ന ഘട്ടം അതിർത്തി സൂചിപ്പിക്കുന്നു, ഒരിക്കലും കാരണമായിരുന്നില്ലാത്ത ജയിൽ പുനർനിർമ്മിക്കുന്നത് ഒഴിവാക്കുന്നു.
അത് വീണ്ടും റൂട്ട് ചെയ്യുമ്പോൾ, കൂടുതൽ വിശദാംശത്തോടെ ഒരു ക്ലയന്റ് സെഷൻ പ്രവർത്തിപ്പിച്ച് കമാൻഡോ പരാജയപ്പെട്ട അനുമതിയോ പേരിടുന്ന വരി വായിക്കുക. ആ വരി ക്ലയന്റ് അവസാനം റിപ്പോർട്ട് ചെയ്യുന്ന ടൈംഔട്ടിനേക്കാൾ വിലയേറിയതാണ്.