پروفائل میں --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 کو الگ الگ دستاویز کرتا ہے، اور یہی اہم اشارہ ہے: اسکرپٹ اور شناخت دو فیصلے ہیں۔ ان کا الگ الگ جائزہ لیں اور دونوں لکھیں۔ پھر لاگ اِن کا پیغام وہ معمہ نہیں رہتا جسے آپ کوڈ چسپاں کر کے حل کرتے ہیں۔

متعلقہ مضامین