کسی ڈیسک ٹاپ کلائنٹ میں پروفائل درآمد کریں اور پہلی ناکامی اکثر وہ سطر ہوتی ہے جسے کلائنٹ ماننے سے انکار کرتا ہے: کوئی اسکرپٹ ہک جو وہ نہیں چلائے گا، یا script-security کی وہ قدر جسے وہ حد سے زیادہ اجازت دینے والی سمجھتا ہے۔ نمبر بڑھانے سے مکالمہ غائب ہو جاتا ہے۔ لیکن یہ اس پروفائل کو آپ کی مشین پر کیا چلانے کی اجازت ہے، یہ بھی وسیع کر دیتا ہے، جو صرف انتباہ بند کرنے کے لیے دینا عجیب بات ہے۔ درآمد کو ہدایت تک جائیں اور فیصلہ ٹھوس ہو جاتا ہے۔

درآمد مکالمے سے ہدایت تک

پروفائل ہدایات والی ایک متنی فائل ہے، اور کوئی سرنگ بننے سے پہلے کلائنٹ انہیں پڑھتا ہے۔ up، down یا tls-verify جیسی ہدایت ایسے بیرونی پروگرام کا نام دیتی ہے جسے OpenVPN کو مقررہ لمحے پر چلانا ہے۔ OpenVPN اسے چلانے کو تیار ہے یا نہیں، یہ script-security نامی الگ ترتیب ہے، اور پروفائل عام طور پر وہ بھی مقرر کرتا ہے۔

لہٰذا انتباہ خفیہ نگاری یا سرٹیفکیٹ کے بارے میں نہیں۔ یہ ایک کنفیگریشن فائل کے بارے میں ہے جو کلائنٹ سے میزبان پر کچھ چلانے کو کہتی ہے، اور کلائنٹ کے بارے میں جو جانچتا ہے کہ اس کی موجودہ اجازت کی سطح اس درخواست کی اجازت دیتی ہے یا نہیں۔

اس مرحلے پر دو مختلف ناکامیاں ایک جیسی دکھائی دیتی ہیں۔ جو پروفائل ایسی سطح مانگے جو کلائنٹ نہیں دے گا، وہ انکار پیدا کرتا ہے۔ جو پروفائل ایسی سطح مانگے جو کلائنٹ دیتا ہے مگر اسکرپٹ موجود نہ ہو، وہ بجائے اس کے چلانے کے وقت ناکامی پیدا کرتا ہے، اور معاونت کے دھاگوں میں دونوں خلط ملط ہو جاتے ہیں۔ ایک اجازت کا سوال ہے اور دوسرا پیکیجنگ کا سوال۔

ہر درجہ واقعی کیا کھولتا ہے

درجہ 0 بیرونی پروگرام کالوں کو مکمل طور پر منع کرتا ہے، جو ایسے کلائنٹ کے لیے ہم آہنگ ہے جو بغیر مدد کے اپنا انٹرفیس خود ترتیب دیتا ہے اور اس کے لیے ناموافق جو آپریٹنگ سسٹم کو پکارتا ہے۔ درجہ 1، طے شدہ، وہ بلٹ اِن قابلِ عمل فائلیں اجازت دیتا ہے جن کی انٹرفیس اور روٹ ترتیب کو ضرورت ہوتی ہے۔ کوئی درجہ صارف کی فراہم کردہ کوئی چیز نہیں چلاتا۔

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials 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 یا راستہ انضمام ہٹا سکتا ہے جس کی سرنگ کو ضرورت تھی، اور نتیجے میں بننے والا کنکشن مکمل تصدیق کرے گا مگر کچھ حل نہیں کرے گا۔

درج کرنے کے قابل فیصلہ تنگ ہے: کون سا اسکرپٹ، کس راستے پر، کس درجے پر اجازت، کس پروفائل کے لیے۔ پروفائل میں باقی سب غیر متبدل رہتا ہے، اور یہ ایسا جملہ ہے جسے جائزہ لینے والا جانچ سکتا ہے۔

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