OpenVPN ના script-security સ્તર 0 થી 3, અને દરેક શું ખોલે છે
દરેક script-security સ્તર પ્રોફાઇલ શું ચલાવી શકે તે વિસ્તારે છે: પહેલા એડમિન સહાયકો, પછી વપરાશકર્તા સ્ક્રિપ્ટો, પછી પર્યાવરણમાં પાસવર્ડ. સૂચનાઓ વાંચો.
ડેસ્કટોપ ક્લાયન્ટમાં પ્રોફાઇલ આયાત કરો અને પ્રથમ નિષ્ફળતા ઘણી વાર એવી લાઇન હોય છે જેને ક્લાયન્ટ માનવાનો ઇનકાર કરે છે: એક સ્ક્રિપ્ટ હૂક જે તે ચલાવશે નહીં, અથવા script-security મૂલ્ય જે તેને વધુ પડતું પરવાનગીયુક્ત લાગે છે. સંખ્યા વધારવાથી સંવાદ બંધ થાય છે. તે એ પણ વિસ્તારે છે કે તે પ્રોફાઇલ તમારા મશીન પર શું ચલાવી શકે, જે ફક્ત ચેતવણી બંધ કરવા માટે આપવી વિચિત્ર વાત છે. આયાતને સૂચના સુધી અનુસરો અને નિર્ણય મૂર્ત બને છે.
આયાત સંવાદથી સૂચના સુધી
પ્રોફાઇલ સૂચનાઓ ધરાવતી ટેક્સ્ટ ફાઇલ છે, અને કોઈ ટનલ અસ્તિત્વમાં આવે તે પહેલાં ક્લાયન્ટ તેમને વાંચે છે. up, down અથવા tls-verify જેવી સૂચના બાહ્ય પ્રોગ્રામનું નામ આપે છે જે OpenVPN ચોક્કસ ક્ષણે ચલાવે. OpenVPN તેને ચલાવવા તૈયાર છે કે નહીં તે script-security નામનું અલગ સેટિંગ છે, અને પ્રોફાઇલ સામાન્ય રીતે તે પણ સેટ કરે છે.
તેથી ચેતવણી ક્રિપ્ટોગ્રાફી કે પ્રમાણપત્રો વિશે નથી. તે કન્ફિગરેશન ફાઇલ વિશે છે જે ક્લાયન્ટને હોસ્ટ પર કંઈક ચલાવવા કહે છે, અને ક્લાયન્ટ તેની વર્તમાન પરવાનગી સ્તર તે વિનંતીને મંજૂરી આપે છે કે નહીં તે તપાસે છે.
આ તબક્કે બે અલગ નિષ્ફળતાઓ સમાન દેખાય છે. જે પ્રોફાઇલ એવું સ્તર માંગે છે જે ક્લાયન્ટ આપશે નહીં તે ઇનકાર ઉત્પન્ન કરે છે. જે પ્રોફાઇલ એવું સ્તર માંગે છે જે ક્લાયન્ટ આપે છે પણ સ્ક્રિપ્ટ ગુમ છે તે તેના બદલે ચલાવવાના સમયે નિષ્ફળતા ઉત્પન્ન કરે છે, અને સપોર્ટ થ્રેડમાં બંને ભેગા થઈ જાય છે. એક પરવાનગીનો પ્રશ્ન છે અને બીજો પેકેજિંગનો પ્રશ્ન છે.
દરેક સ્તર ખરેખર શું ખોલે છે
સ્તર 0 બાહ્ય પ્રોગ્રામ કૉલ સંપૂર્ણપણે પ્રતિબંધિત કરે છે, જે એવા ક્લાયન્ટ માટે સુસંગત છે જે મદદ વિના પોતાનું ઇન્ટરફેસ ગોઠવે છે અને જે ઓપરેટિંગ સિસ્ટમને બોલાવે છે તેના માટે અસંગત છે. સ્તર 1, ડિફોલ્ટ, ઇન્ટરફેસ અને રૂટ ગોઠવણીને જરૂરી બિલ્ટ-ઇન એક્ઝિક્યુટેબલ્સની મંજૂરી આપે છે. બંનેમાંથી કોઈ સ્તર વપરાશકર્તાએ પ્રદાન કરેલું કંઈપણ ચલાવતું નથી.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
સ્તર 2 રસપ્રદ સીમા છે, કારણ કે તે વપરાશકર્તા-વ્યાખ્યાયિત સ્ક્રિપ્ટો સ્વીકારે છે. તે બિંદુથી ક્લાયન્ટના વિશેષાધિકારો એવા કોડ પર લાગુ થાય છે જે તમે કદાચ ક્યારેય વાંચ્યો ન હોય, તમે પસંદ ન કરેલી ક્ષણોમાં બોલાવવામાં આવે છે, એવા પર્યાવરણ સાથે જેમાં જોડાણની વિગતો હોય છે. સ્તર 3 આગળ વધે છે અને પર્યાવરણ ચલો દ્વારા પાસવર્ડ પસાર કરવાની મંજૂરી આપે છે, તેથી માર્ગદર્શિકા તેને સંભવિત અસુરક્ષિત ગણાવે છે.
આમાંની કોઈ સંખ્યા શક્તિનું સેટિંગ નથી. સ્તર 3 પરની પ્રોફાઇલમાં સ્તર 1 કરતાં સારું એન્ક્રિપ્શન નથી; તેમાં ફક્ત મોટી એક્ઝિક્યુશન સપાટી છે, અને ટનલ સમાન છે.
પ્રોફાઇલ શું લાયક છે તે નક્કી કરો
સ્ક્રિપ્ટને કયું સ્તર જોઈએ તે પૂછતાં પહેલાં તે શેના માટે છે તે પૂછો. DNS સેટિંગ્સ ધકેલતો કે જોડાણ પછી રૂટ સુધારતો હૂક કંઈક ચલાવવાનું વૈધ કારણ છે. અસ્થાયી ફોલ્ડરમાં અજાણ્યું બાઇનરી બોલાવતો હૂક અટકવાનું કારણ છે.
સ્ક્રિપ્ટનો પાથ સ્ક્રિપ્ટ જેટલો જ મહત્વપૂર્ણ છે. સાપેક્ષ પાથ ક્લાયન્ટ જે ફોલ્ડર વાપરે તેની સાપેક્ષે ઉકેલાય છે, અને લખી શકાય તેવું ફોલ્ડર એકવારની આયાતને કાયમી એક્ઝિક્યુશન સ્લોટમાં ફેરવે છે. વપરાશકર્તા બદલી ન શકે તેવા ફોલ્ડરમાં સંપૂર્ણ પાથ પસંદ કરવા યોગ્ય સ્વરૂપ છે.
સ્ક્રિપ્ટો ક્લાયન્ટનું પર્યાવરણ પણ વારસામાં લે છે, જ્યાં ઓળખપત્રો અને જોડાણ મેટાડેટા રહે છે. એ જ વારસો સ્તર 3 ને ખતરનાક બનાવે છે જ્યારે સ્ક્રિપ્ટ પોતાનું પર્યાવરણ લોગ કરે, અને તેથી જ સ્ક્રિપ્ટ સક્ષમ ક્લાયન્ટનો ડાયગ્નોસ્ટિક ડંપ ટિકિટમાં પેસ્ટ કરતાં પહેલાં બીજી નજર લાયક છે. શેર કરતાં પહેલાં પર્યાવરણ દૂર કરો.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnએક વસ્તુ બદલો, પછી તોડી પાડવાનું પણ જુઓ
જો પ્રોફાઇલને ખરેખર સ્ક્રિપ્ટની જરૂર હોય, તો ફક્ત સ્તર બદલો અને ફક્ત તે પ્રોફાઇલ માટે. ક્લાયન્ટને ફોરગ્રાઉન્ડમાં વિગતવાર આઉટપુટ સાથે ચલાવો જેથી સ્ક્રિપ્ટની પોતાની ભૂલો દેખાય, સેવા મેનેજર તેમને ગળી ન જાય.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
આખું જીવનચક્ર પરીક્ષણ કરો, ફક્ત જોડાણ નહીં. નિષ્ફળ જતો ડાઉન હૂક રૂટને મૃત ટનલ તરફ રાખે છે, જે એવી મશીન બનાવે છે જે જોડાયેલી દેખાય છે અને ક્યાંય પહોંચતી નથી. ફેરફાર પૂર્ણ જાહેર કરતાં પહેલાં એક વાર ફરી જોડાઓ અને એક વાર અલગ થાઓ, અને દરેક પછી રૂટિંગ ટેબલ તપાસો.
મૂળ પ્રોફાઇલની નકલ રાખો. જો પ્લેટફોર્મ ક્લાયન્ટ સમાન સ્ક્રિપ્ટિંગ મોડેલ લાગુ કરતું ન હોય, તો આયાત સફળ થાય ત્યાં સુધી સૂચનાઓ ડિલીટ કરવાથી ટનલને જરૂરી હતી તે DNS કે રૂટ એકીકરણ દૂર થઈ શકે છે, અને પરિણામી જોડાણ સંપૂર્ણપણે પ્રમાણીકરણ કરશે જ્યારે કંઈપણ ઉકેલશે નહીં.
નોંધવા લાયક નિર્ણય સાંકડો છે: કઈ સ્ક્રિપ્ટ, કયા પાથ પર, કયા સ્તરે મંજૂર, કઈ પ્રોફાઇલ માટે. પ્રોફાઇલમાં બાકીનું બધું અપરિવર્તિત રહે છે, અને તે એક વાક્ય છે જે સમીક્ષક ચકાસી શકે છે.