could not read Auth username from stdin تصدیق کا مسئلہ لگتا ہے اور نہیں ہے۔ OpenVPN نے معیاری ان پٹ سے صارف نام مانگنے کی کوشش کی، پڑھنے کے قابل کچھ نہ ملا اور سرور سے رابطہ کرنے سے پہلے ہی رک گیا۔ اکاؤنٹ مکمل طور پر درست ہو سکتا ہے؛ عمل کے پاس پوچھنے والا کوئی نہیں ہے۔

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

خرابی کو مقامی ان پٹ کی ناکامی کے طور پر پڑھیں

جب auth-user-pass کسی فائل دلیل کے بغیر آتا ہے تو کلائنٹ پوچھنے کی توقع کرتا ہے۔ انٹرایکٹو شیل میں وہ پرامپٹ کام کرتا ہے کیونکہ عمل کے پاس ٹرمینل ہے۔ systemd، cron کام یا کنٹینر کے تحت معیاری ان پٹ عام طور پر خالی ہوتا ہے، اور پڑھائی فوراً اسی خرابی کے ساتھ واپس آتی ہے جو آپ دیکھ رہے ہیں۔

پیغام ناکام ہونے والا فیلڈ بھی بتاتا ہے، صارف نام یا پاس ورڈ، جو دکھاتا ہے کہ پڑھائی کتنی دور گئی۔ صارف نام نہ ہونے کا مطلب ہے کہ عمل کچھ بھی نہیں پڑھ سکا۔ کامیاب صارف نام کے بعد پاس ورڈ نہ ہونے کا مطلب ہے کہ ان پٹ بہاؤ دونوں پڑھائیوں کے درمیان ختم ہو گیا، جو آدھی لکھی فائل یا بند پائپ کے لیے عام ہے۔

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

سروس کو معاون اسناد کا ذریعہ دیں

بغیر نگرانی چلانے کے لیے معاون ذریعہ ایک اسناد فائل ہے جو دلیل کے طور پر دی جاتی ہے auth-user-pass کو۔ فائل سادہ متن کے طور پر پڑھی جاتی ہے: پہلی سطر صارف نام، دوسری پاس ورڈ۔ اس کی طرف مطلق راستے سے اشارہ کریں، مثلاً /etc/openvpn/client/creds ، تاکہ سروس اکاؤنٹ کی ورکنگ ڈائریکٹری ہدایت کا مطلب نہ بدل سکے۔

اجازتیں راستے جتنی ہی اہم ہیں۔ فائل اس اکاؤنٹ کے لیے پڑھنے کے قابل ہونی چاہیے جو کلائنٹ چلاتا ہے اور باقی سب کے لیے نہیں، اور اس کی ملکیت سروس اکاؤنٹ یا root کی ہونی چاہیے ایسے گروپ کے ساتھ جس میں سروس شامل ہو۔ مواد چھاپے بغیر اس اکاؤنٹ کے طور پر پڑھنے کی صلاحیت جانچیں۔

نسبتی راستہ خاموش ناکامی کا طریقہ ہے۔ پروفائل ایک ڈائریکٹری میں ہو سکتا ہے جبکہ systemd عمل کہیں اور شروع کرتا ہے، اس لیے جو فائل آپ کے شیل میں حل ہوتی ہے وہ سروس کے لیے حل نہیں ہوتی۔ اسناد کو مستقل جگہ پر منتقل کریں اور ان کی طرف مطلق طور پر حوالہ دیں۔ پھر سروس ایک بار شروع کریں اور تصدیق کریں کہ وہی راستہ استعمال ہوتا ہے، بجائے اس کے کہ پروفائل ایڈیٹر کے منظر پر بھروسا کریں۔

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

script-security مدد کیوں نہیں کرے گا

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

اسے اعلیٰ سطح پر لے جانا عام ردعمل ہے کیونکہ پیغام میں Auth کا ذکر ہے، مگر یہ ان پٹ کے ذریعے کے بجائے اسکرپٹ اجازتیں بدلتا ہے اور بڑھاتا ہے کہ کلائنٹ کیا چلا سکتا ہے۔ اگر معاون اسکرپٹ ڈیزائن کا حصہ ہے تو پہلے ان پٹ کا ذریعہ درست کریں اور سیکیورٹی سطح تعیناتی کے لیے درکار کم ترین قدر پر رکھیں۔

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

کلائنٹ کے فائل پڑھنے کے بعد اگلے مرحلے کی تصدیق کریں

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

پورا راستہ اسی طرح جانچیں جیسے سروس اسے چلائے گی: وہی اکاؤنٹ، وہی ورکنگ ڈائریکٹری، وہی unit ماحول۔ جو کنکشن صرف آپ کے شیل سے شروع کرنے پر کام کرے وہ اشارہ ہے کہ ماحول متغیر یا ٹرمینل ابھی بھی بہاؤ کا حصہ ہے۔

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

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

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