--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-ს, და ეს არის ის მინიშნება, რომელიც მნიშვნელოვანია: სკრიპტი და იდენტობა ორი გადაწყვეტილებაა. განიხილეთ ისინი ცალ-ცალკე და ჩაწერეთ ორივე. შემდეგ შესვლის მოთხოვნა წყვეტს იმის თავსატეხად ყოფნას, რომელსაც კოდის ჩასმით ხსნით.

დაკავშირებული სტატიები