প্রোফাইলে --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 আলাদাভাবে নথিভুক্ত করে, এবং এটিই গুরুত্বপূর্ণ ইঙ্গিত: স্ক্রিপ্ট ও পরিচয় দুটি সিদ্ধান্ত। সেগুলি আলাদাভাবে পর্যালোচনা করুন এবং দুটিই লিখে রাখুন। তখন লগইন প্রম্পটটি কোড পেস্ট করে সমাধান করার রহস্য থাকা বন্ধ করে।

সম্পর্কিত নিবন্ধ