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 એકલું. જે પગલે ટનલ તૂટે છે તે સીમા દર્શાવે છે, અને તમે એવી જેલ ફરી બનાવવાનું ટાળો છો જે ક્યારેય કારણ નહોતી.
જ્યારે તે ફરી રૂટ કરે, ત્યારે વધુ વિગત સાથે એક ક્લાયન્ટ સત્ર ચલાવો અને જે લાઈન કમાન્ડ કે નિષ્ફળ પરવાનગીનું નામ લે છે તે વાંચો. તે લાઈન ક્લાયન્ટ અંતે જે ટાઈમઆઉટ જણાવે છે તેનાથી વધુ કિંમતી છે.