પ્રોફાઇલમાં --csd-wrapper ઉમેરવાથી સ્થાનિક સ્ક્રિપ્ટ એ ડીમનને મળે છે જે તેને લોગિન દરમિયાન ચલાવે છે, તેથી તમારી સામેનો નિર્ણય કોડ સમીક્ષા છે, પસંદગીનો ટૉગલ નહીં. આ વિકલ્પ એટલા માટે છે કે ગેટવેના હોસ્ટ-ચેક ઘટકને બદલી શકાય, અને તે તમે આપેલી સ્ક્રિપ્ટનો પાથ લે છે. નીચેનું બધું ધારે છે કે ડિપ્લોયમેન્ટ માલિક પહેલેથી જ કહી દીધું છે કે કઈ પોસ્ચર ચેક જરૂરી છે; જો એ ભાગ હજી ખુલ્લો હોય, તો પહેલાં તેને પતાવો. રનબુકમાં ચાર પગલાં છે: નિષ્ફળ ગયેલું તબક્કું શોધો, સ્ક્રિપ્ટ વાંચો, તે જે ઓળખ હેઠળ ચાલે છે તે પસંદ કરો અને પરિણામ સાબિત કરો.

પગલું 1: નિષ્ફળ ગયેલું તબક્કું શોધો

ક્લાયન્ટનો છેલ્લો સંદેશ સામાન્ય રીતે કૂકી વિશે હોય છે, જે સાંકળનો અંત છે, શરૂઆત નહીં. HTTPS લોગિન, સર્વર સર્ટિફિકેટ ચેક, પ્રમાણીકરણ વિનિમય અને પોસ્ચર ઘટક — બધા તે સંદેશ પહેલાં બેસે છે.

વપરાતી આવૃત્તિ અને લોગિન સરનામું નોંધો, પછી વિગતવાર આઉટપુટ તમારા પોતાના ટર્મિનલમાં રાખીને પ્રયાસ પુનરાવર્તિત કરો. પુનઃપ્રયાસ ન હોય તેવી પહેલી ભૂલ વાંચો, ટ્રાન્સક્રિપ્ટની છેલ્લી લાઇન નહીં. જો લોગ કોઈ મૂલ્યાંકન ઘટકનું નામ આવ્યા પહેલાં જ અટકી જાય, તો રેપર હજી તમારી સમસ્યા નથી. તે સમયે તેને ઉમેરવાથી ફક્ત એ સપાટી પહોળી થાય છે જેને તમારે પછી બચાવવી પડશે.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

ટ્રાન્સક્રિપ્ટ સ્થાનિક રાખો, કારણ કે કૂકીઝ અને પ્રમાણીકરણ પ્રતિસાદ એક્સેસ સામગ્રી છે. ચેટ થ્રેડમાં પેસ્ટ કરેલો ટ્રેસ ક્રેડેન્શિયલ લીક છે, પછી ભલે મૂલ્યાંકન પગલું હાનિકારક લાગે. ભૂલનો ટેક્સ્ટ અને ફ્લોમાં જ્યાં તે દેખાયો તે બિંદુ શેર કરો, પેલોડ ક્યારેય નહીં.

પગલું 2: સ્ક્રિપ્ટ પ્રોફાઇલમાં પ્રવેશે તે પહેલાં વાંચો

રેપર એટલો જ વિશ્વસનીય છે જેટલી તમે સમીક્ષા કરેલી આવૃત્તિ, તેથી તે આવૃત્તિને પિન કરો અને તેનો હેશ મંજૂરી નોંધની બાજુમાં રાખો. નીચેની બે કમાન્ડ એક પણ લાઇન વાંચ્યા પહેલાં તમને ફિંગરપ્રિન્ટ અને સસ્તું સિન્ટેક્સ ચેક આપે છે. તેઓ આગલી વ્યક્તિને સ્થિર સંદર્ભ પણ આપે છે, જે ત્યારે મહત્વનું છે જ્યારે ફાઇલ પેકેજ મેનેજમેન્ટની બહાર રહે છે. કોઈ પણ કમાન્ડ કહેતું નથી કે સ્ક્રિપ્ટ શું કરે છે, તેથી તેમને ચલાવો અને વાંચવાનું ચાલુ રાખો.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

આખી ફાઇલ ચાર પ્રશ્નો ધ્યાનમાં રાખીને વાંચો: શું તે બહાર જતા HTTP કૉલ કરે છે, શું તે ક્રેડેન્શિયલ ફાઇલો કે એન્વાયર્નમેન્ટ વેરિયેબલ વાંચે છે, શું તે ટેમ્પ ડિરેક્ટરીની બહાર લખે છે, અને શું કોઈ શાખા કંઈપણ માપ્યા વિના પાસિંગ પોસ્ચરનો રિપોર્ટ કરે છે. એ છેલ્લી પેટર્ન એ લોગ લાઇન જોડાયેલી નીતિ-બાયપાસ છે. કોપી કરેલા રેપર સામાન્ય રીતે તેને વિશ્વસનીય દેખાતા ચેક પાછળ છુપાવે છે. જો સ્ક્રિપ્ટ ઉપકરણને જોવા પહેલાં જ નક્કી કરે કે ઉપકરણ ઠીક છે, તો ત્યાં જ અટકો.

પેક કરેલા પેલોડ પણ તપાસો, કારણ કે વાંચી શકાય તેવું હેડર ફાઇલના બાકીના ભાગ વિશે કંઈ સાબિત કરતું નથી. ફોરમ થ્રેડમાંથી સ્ક્રિપ્ટ ડાઉનલોડ કરવાથી તે વિશ્વસનીય બનતી નથી, ફક્ત તેનું નામ વાસ્તવિક હોસ્ટ-ચેક ઘટક જેવું લાગે છે એટલા માટે. કોણે તેને ઇન્સ્ટોલ કર્યું, તે ક્યાંથી આવ્યું અને તે કેવી રીતે અપડેટ થશે તે નોંધો.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

પગલું 3: રેપર જે ઓળખ હેઠળ ચાલે છે તે પસંદ કરો

--csd-user CSD, TNCC અથવા HIP પ્રોગ્રામ ચાલે ત્યારે વિશેષાધિકારો ઘટાડે છે. તે ખાતું સ્થાનિક એક્ઝિક્યુશન ગોઠવણીનો ભાગ છે, ગેટવેને સબમિટ કરેલું વપરાશકર્તાનામ નહીં.

રેપરને સમર્પિત ખાતું આપો જેમાં કોઈ ઇન્ટરેક્ટિવ શેલ નથી, sudo અધિકારો નથી અને તેને જરૂરી ન હોય તેવી જૂથ સભ્યપદ નથી. સ્ક્રિપ્ટ અને તે જે ચોક્કસ ફાઇલોની તપાસ કરે છે તેના પર વાંચન પ્રવેશ આપો, પછી VPN પ્રોફાઇલને સ્પર્શ કરતા પહેલાં ડ્રોપનું પરીક્ષણ કરો. અહીં સમસ્યા શોધવી ક્લાયન્ટની અંદર શોધવા કરતાં સસ્તી છે.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

વિશેષાધિકારો ઘટાડવાથી ખરાબ સ્ક્રિપ્ટ જે નુકસાન કરી શકે તે મર્યાદિત થાય છે. તે કોડની સમીક્ષા કરતું નથી, રિપોર્ટને સાચો બનાવતું નથી, કે ગેટવે સંચાલક આ અમલીકરણને ઉપકરણ નીતિ પૂરી કરતું માને છે તે સ્થાપિત કરતું નથી.

પગલું 4: ફેરફારને ઉલટાવી શકાય તેવો રાખો

સંપાદિત કરતા પહેલાં પ્રોફાઇલનો બેકઅપ લો, અને રેપરને વર્ઝન કંટ્રોલમાં રાખો જેથી રોલબેક જાણીતો હેશ પુનઃસ્થાપિત કરે, કોપી શોધવાને બદલે. સ્ક્રિપ્ટનો પાથ, હેશ, એક્ઝિક્યુશન વપરાશકર્તા અને મંજૂરી આપનાર એક જ જગ્યાએ લખો.

રોલબેક કરવા માટે વિકલ્પ દૂર કરો, ક્લાયન્ટ ફરી શરૂ કરો અને ખાતરી કરો કે મૂળ ભૂલ પાછી આવે છે. જો રોલબેક પછી પણ ગેટવે લોગિન નકારે, તો બીજું કંઈક પણ બદલાયું છે, અને તે તફાવત શોધવો રેપર ફરી અજમાવવા પહેલાં આવે છે. ચેન્જ વિન્ડો આખી દરમિયાન અગાઉની કોપી રાખો, જે મોટાભાગની ટીમો માટે અર્થ એ છે કે આગલી મેન્ટેનન્સ સ્લોટ પસાર થાય ત્યાં સુધી.

સફળ રોલઆઉટ પછી એક નહીં, બે વસ્તુઓ ચકાસો: ટનલ ઉપર આવે છે, અને જે ઉપકરણ પોસ્ચર ચેકમાં નિષ્ફળ થવું જોઈએ તે હજી નકારાય છે. દરેક માટે કામ કરતું કનેક્શન એ પુરાવો નથી કે મૂલ્યાંકન તમારા ફેરફારમાંથી બચી ગયું.

બીજી સમસ્યા ઊભી કરતા શોર્ટકટ

જરૂરી ચેક ચલાવ્યા વિના હેલ્પરને અનુરૂપ સ્થિતિનો રિપોર્ટ કરવા દો નહીં, અને બીજી ઓપરેટિંગ સિસ્ટમ સાથે મેળ ખાવા માટે પ્લેટફોર્મ ઓળખને ઓવરરાઇડ કરો નહીં. અલગ પ્લેટફોર્મનો દાવો એ પુરાવો નથી કે વાસ્તવિક ઉપકરણ નીતિ પૂરી કરે છે. તે તમને એવા ક્લાયન્ટ સાથે છોડે છે જે દરેક ભાવિ લોગિનમાં જૂઠું બોલે છે.

સર્વર ચકાસણી બંધ કરવી, જૂની કૂકી ફરી ચલાવવી અને સમીક્ષા ન કરેલી સ્ક્રિપ્ટોનો ઢગલો કરવો — આ બધું દૃશ્ય નિષ્ફળતાને અદૃશ્ય નિષ્ફળતા સાથે બદલે છે. જો ઇન્સ્ટોલ કરેલો ક્લાયન્ટ સમર્થિત ફ્લો પૂરો કરી શકતો ન હોય, તો તમારી પાસેની ફ્લોને વાળવાને બદલે મંજૂર વિકલ્પ માંગો.

OpenConnect મેન્યુઅલ --csd-wrapper અને --csd-user અલગ રીતે દસ્તાવેજ કરે છે, અને આ જ મહત્વપૂર્ણ સંકેત છે: સ્ક્રિપ્ટ અને ઓળખ બે નિર્ણયો છે. તેમની અલગ સમીક્ષા કરો અને બંને લખો. પછી લોગિન પ્રોમ્પ્ટ એ કોયડો રહેતું નથી જેને તમે કોડ પેસ્ટ કરીને ઉકેલો છો.

સંબંધિત લેખો