আপনার .ovpn ফাইল কোড চালাতে পারে, শুধু ট্রাফিক রুট করে না
up বা down সহায়কের নাম দেওয়া প্রোফাইল আপনার বিশেষাধিকার দিয়ে কোড চালায়। পথ, মালিকানা, পরিষ্কার আর script-security সেটিং দেখুন।
বেশিরভাগ মানুষ .ovpn ফাইল পড়ে যেমন রাউটারের সেটিংস পাতা পড়ে: ঠিকানা, রুট, সাইফারের তালিকা। কোড চালানো অংশটি নিচের দিকে বসে, নদীর মতো দেখতে নির্দেশাবলির পাশে, এবং ক্লায়েন্টের যে বিশেষাধিকার আগে থেকেই আছে তা দিয়েই চলে। এটাই সেই ফাঁক যা একটি অসতর্ক বা ক্ষতিকর প্রোফাইল কাজে লাগায়, এবং এটাই সেই ফাঁক যা একটি উপকারী DNS সহায়ককে তিন সপ্তাহ পরে সাপোর্ট সমস্যায় বদলে দেয়। ইভেন্ট নির্দেশ, নিরাপত্তা স্তর আর ফাইলের মালিকানা ঠিক করে কী ঘটতে পারে; স্ক্রিপ্টের বিষয়বস্তু ঠিক করে আসলে কী ঘটে। সংযোগের আগে চারটিই পড়ুন।
সহায়ক চালানো প্রোফাইল একটি প্রোগ্রাম, সেটিংস ফাইল নয়
route আর dhcp-option-এর মতো নির্দেশ ক্লায়েন্টের প্রতিষ্ঠা করা উচিত অবস্থা বর্ণনা করে, আর ক্লায়েন্ট সেগুলোকে ডেটা হিসেবেই দেখে। up স্ক্রিপ্ট আলাদা: ক্লায়েন্ট এটিকে প্রসেস হিসেবে চালু করে এবং সংযোগের বিস্তারিত ভরা একটি পরিবেশ দেয়, তাই এর লেখক যা লিখেছেন তা আপনার অ্যাকাউন্টের অধিকার নিয়ে চলে। যে ল্যাপটপে ব্যবহারকারী প্রশাসক, সেখানে অ্যাটাচমেন্ট বা ফোরাম থ্রেড থেকে পেস্ট করা ফাইলের জন্য এটি প্রশস্ত দরজা। পার্থক্যটি রুচিগত নয়, এটি কনফিগারেশন আর কোডের পার্থক্য।
যে কিংবদন্তিটি বাদ দেওয়া উচিত তা হলো, প্রোফাইল কেবল ট্রাফিক রুট করতে পারে। ip route add চালানো সহায়ক আর দূরবর্তী হোস্টের বিরুদ্ধে curl চালানো সহায়ক একই ব্যবস্থা, এবং বাইরে থেকে প্রোফাইল দেখতে অভিন্ন। ফাইলের চেহারায় কিছুই বলে না আপনার কোনটি আছে, তাই পর্যালোচনাকে স্ক্রিপ্ট পর্যন্ত পৌঁছাতেই হবে।
আসলে কী নির্বাহ নিয়ন্ত্রণ করে, আর অনুমোদনকারী লাইনগুলো কেমন দেখায়
তিনটি জিনিস সহায়ককে নিয়ন্ত্রণ করে: যে ইভেন্ট নির্দেশ এটির নাম দেয়, যে script-security স্তর এটির অনুমতি দেয়, আর ক্লায়েন্ট প্ল্যাটফর্মের নিজের বাস্তবায়ন। প্রোফাইল একটি হুক চাইতে পারে আর তবু কিছু ঘটতে না দেখতে পারে, কারণ মোবাইল ক্লায়েন্ট বা সংকুচিত ডেস্কটপ বিল্ড ওই ইভেন্টটি একেবারেই বাস্তবায়ন না করতে পারে। একইভাবে, নিজের কাজের প্রয়োজনের চেয়ে বেশি অনুমতি চাওয়া প্রোফাইল তার উৎস সম্পর্কে কিছু বলে। অনুমতির স্তর একটি সামর্থ্য, অনুমোদন নয়। অনুমোদনকারী লাইনগুলো এমন দেখায়, পথটি আপনার পথের জায়গা নেয়।
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shস্তর 0 বাইরের প্রোগ্রাম প্রত্যাখ্যান করে আর স্তর 1, যা ডিফল্ট, কেবল ক্লায়েন্টের অন্তর্নির্মিত এক্সিকিউটেবল অনুমোদন করে, তাই হুকের জন্য 2 বা তার বেশি দরকার; স্তর 3 মূলত পুরনো পাসওয়ার্ড হস্তান্তরের জন্য আছে এবং এড়িয়ে চলাই ভালো। হুকসহ পাঠানো প্রোফাইলের নির্দেশ আর ওই স্তর দুটোই দরকার, তাই ফাইলের নিচের দিকের একটি লাইন সার্টিফিকেট ব্লকের মতোই একই যত্ন দাবি করে। OpenVPN ম্যানুয়াল অনুমতির স্তরগুলো তালিকাভুক্ত করে, এবং এর ভাষা প্রোফাইল আসলে যা চায় তার পাশে পড়ার মতো।
মালিকানা, পথ এবং সহায়ককে কী খাওয়ানো হয়
আপনার আস্থার একটি প্রোফাইল যদি এমন স্ক্রিপ্টের দিকে দেখায় যা অন্য অ্যাকাউন্ট আবার লিখতে পারে, তবে তা নির্ভরযোগ্য ব্যবস্থা নয়, কারণ গতকালের পর্যালোচনা আজ কী চলে তা আর বর্ণনা করে না। সহায়কের মালিক ও মোড দেখুন, এবং নিশ্চিত করুন যে কনফিগার করা পথ আপনার পরীক্ষিত ফাইলেই গিয়ে পৌঁছায়, এমন নামে নয় যা অন্য কিছু ছায়া দিতে পারে। আর্গুমেন্ট আর পরিবেশও একই দৃষ্টি দাবি করে: ক্লায়েন্ট হুককে সংযোগের বিস্তারিত দেয়, আর যে সহায়ক তার পুরো পরিবেশ লগ করে সে সাপোর্ট টিকিটে ক্রেডেনশিয়াল লিখে ফেলতে পারে। অপারেটর বা প্ল্যাটফর্মের নথিভুক্ত ইন্টিগ্রেশনকে অসম্পর্কিত পোস্ট থেকে কপি করা DNS স্ক্রিপ্টের চেয়ে অগ্রাধিকার দিন, কারণ একই ফাইল নিয়ে লড়া দুটি রিজলভার ম্যানেজার ভাঙা VPN-এর মতো দেখতে ব্যর্থতা তৈরি করে।
ব্যর্থ হুকের কথা জানানোর সময়, কোথাও পেস্ট করার আগে পরিবেশটি সম্পাদনা করুন। যে ডাম্প আপনাকে ডিবাগ করতে সাহায্য করে সেটি আপনার প্রমাণকারী টোকেনও বহন করতে পারে।
পরিষ্কার ব্যর্থতা সুড়ঙ্গ চলে যাওয়ার পরে দেখা যায়
up সহায়ক রুট আর রিজলভার সেটিংস যোগ করে, আর down সহায়কের কথা সেগুলো আবার সরিয়ে নেওয়া। যখন down হুক অনুপস্থিত, নিঃশব্দে ব্যর্থ, বা ক্লায়েন্ট মেরে ফেলার কারণে কখনো চলে না, তখন অবশিষ্টাংশ সেশনকে ছাড়িয়ে যায়। তখন ট্রাফিক এমন পথ নেয় যা কেউ পরিকল্পনা করেনি আর নামগুলো এমন রিজলভারের মধ্য দিয়ে সমাধান হয় যা সরানো উচিত ছিল, অথচ সুড়ঙ্গ নিজে সুস্থ দেখায়। এই উপসর্গগুলো সংযোগ বিচ্ছিন্নের পরে আসে, তাই দোষ প্রোফাইলের নয়, নেটওয়ার্কের।
ভাঙাকে আলাদা ধাপ হিসেবে পরীক্ষা করুন: সুড়ঙ্গ তুলুন, রুট আর রিজলভার লিখে নিন, নামিয়ে দিন, তারপর নিশ্চিত করুন দুটোই গেছে। পরিষ্কারভাবে সংযোগ করা প্রোফাইলও পিছনে অবস্থা রেখে যেতে পারে, আর সহায়কের শূন্য এক্সিট কোড প্রমাণ করে না রিজলভার আপনার ভাবা জায়গায় পৌঁছেছে।
সহায়ক পর্যালোচনা আর বেরোনোর পথ রাখা
স্ক্রিপ্টটি শুরু থেকে শেষ পড়ুন তিনটি জিনিস খুঁজে: বিশেষাধিকার দরকার এমন কমান্ড, এমন হার্ডকোড করা পথ যা আপনার সিস্টেমে নাও থাকতে পারে, আর এটি যে কোনো নেটওয়ার্ক কল করে। তারপর দেখুন এটি কীভাবে ব্যর্থ হয়, কারণ ত্রুটি গিলে ফেলা সহায়ক কনফিগারেশনের ভুলকে রহস্যে বদলে দেয়। যদি এক বাক্যে বলতে না পারেন স্ক্রিপ্ট কী করে আর কে এটি বদলাতে পারে, তবে এটি চালু করার জন্য আপনি প্রস্তুত নন। ওই বাক্যের প্রয়োজনের চেয়ে বেশি বিশেষাধিকার চাওয়া প্রোফাইল থামার সংকেত।
শেষ কাজ করা প্রোফাইল আর এটি যে সহায়কের কথা বলেছিল তা সুরক্ষিত সঞ্চয়ে রাখুন, দুটো সংস্করণই লিখে রাখুন, যাতে রোলব্যাক সবচেয়ে খারাপ মুহূর্তে পুনর্নির্মাণ নয়, কপি হয়। সহায়ক যদি কেবল এমন ডিস্ট্রিবিউশন বা ক্লায়েন্ট সংস্করণের জন্য থাকে যার আর এটি দরকার নেই, তবে ত্রুটি না থামা পর্যন্ত বিশেষাধিকার বাড়ানোর বদলে যে কনফিগারেশন সেটিংটির মালিক সেখানেই তাকে অবসরে পাঠান। ওটাই বেরোনোর পথ: কম চলমান অংশ, বেশি অনুমতি নয়।