একটি VPN ক্লায়েন্ট ডাউনলোড করা এককালীন সিদ্ধান্ত; তার APT রিপোজিটরি যোগ করা তা নয়। দ্বিতীয়টি প্যাকেজ ম্যানেজারকে জানায় ভবিষ্যতে সফটওয়্যার কোথা থেকে আসতে পারে, যা ডাউনলোড নয় বরং কর্তৃত্বের স্থায়ী হস্তান্তর। বিক্রেতা যথাযথভাবে রিপোজিটরি রক্ষণাবেক্ষণ করলে এটি সঠিক ব্যবস্থা হতে পারে। তবুও এটি একটি সচেতন সিদ্ধান্তের দাবি রাখে, এবং অধিকাংশ ইনস্টল নির্দেশিকা এটি এড়িয়ে যায়।

স্বাক্ষর একটি আর্কাইভ প্রমাণ করে, তার কোড নয়

APT স্বাক্ষরিত রিপোজিটরি মেটাডেটা যাচাই করে, তারপর যে প্যাকেজগুলো এটি আনে সেগুলোর জন্য সেই মেটাডেটার ভেতরের চেকসামের উপর ভরসা করে। এটি প্রমাণ করে আর্কাইভটি কী ধারকের প্রকাশের সঙ্গে মেলে, ভেতরের কোড সম্পর্কে কিছুই নয়। সঠিকভাবে স্বাক্ষরিত প্যাকেজেও অনিরাপদ রক্ষণাবেক্ষণ স্ক্রিপ্ট থাকতে পারে, এবং প্যাকেজ ইনস্টলের সময় সেই স্ক্রিপ্টগুলো root হিসেবে চলে। apt-secure নির্দেশিকা আর্কাইভ প্রমাণীকরণ ও সফটওয়্যার পর্যালোচনার মধ্যে ঠিক এই সীমারেখাটিই টানে।

তাই কার্যকর প্রশ্নটি হলো স্বাক্ষর বৈধ কি না তা নয়, কারণ ভাঙা স্বাক্ষর যেকোনোভাবেই ইনস্টল থামিয়ে দেয়। প্রশ্নটি হলো এরপর আপনি কার স্বাক্ষরে ভরসা করতে বেছে নিচ্ছেন। চুরি যাওয়া স্বাক্ষর কী চুরি যাওয়া প্যাকেজের চেয়ে খারাপ, কারণ আক্রমণকারী প্রথম খারাপ প্রকাশের অনেক পরেও বৈধ মেটাডেটা তৈরি করতে থাকে। ঘূর্ণনই একমাত্র মেরামত, এবং তা নির্ভর করে বিক্রেতা এমন একটি চ্যানেলে নতুন কী প্রকাশ করছে কি না যা আপনি স্বাধীনভাবে যাচাই করতে পারেন।

এই কারণেই কী-এর পরিচয় রিপোজিটরি URL-এর মতোই মনোযোগ দাবি করে। পুরোনো ফোরাম উত্তরের একটি ঠিকানা থেকে নেওয়া কী প্রকাশক সম্পর্কে কিছুই প্রতিষ্ঠা করে না, অন্যদিকে HTTPS ফোনে যিনি উত্তর দিয়েছেন তাঁর পর্যন্ত পরিবহন রক্ষা করে। পরিবহন নিরাপত্তা ও প্রকাশক পরিচয় আলাদা প্রশ্ন, এবং শুধু প্রথমটিই সার্টিফিকেট দিয়ে সমাধান হয়।

কীটিকে সিস্টেমে নয়, উৎসে সীমাবদ্ধ করুন

আধুনিক APT উৎস-নির্দিষ্ট Signed-By রেফারেন্স গ্রহণ করে। অপারেটর-নিয়ন্ত্রিত কী /etc/apt/keyrings/-এর অধীনে থাকতে পারে, এবং উৎস এন্ট্রি সেই কী-এর নাম দেয় যা ওই আর্কাইভ প্রমাণীকৃত করতে পারে। এটি একই কী-কে বিশ্বব্যাপী বিশ্বস্ত সেটে ফেলার চেয়ে সংকীর্ণ, যেখানে এটি এমন উৎসের জামিন দিতে পারে যা আপনি কখনো অনুমোদন করতে চাননি। বিভিন্ন প্রজন্মের নির্দেশিকার টুকরো মিশ্রিত না করে ইনস্টল করা APT সংস্করণ ও বিক্রেতার বর্তমান নির্দেশনা অনুসরণ করুন।

curl -fsSL https://repo.example.com/vpn-key.gpg -o /etc/apt/keyrings/vpn.gpg
echo "deb [signed-by=/etc/apt/keyrings/vpn.gpg] https://repo.example.com/debian stable main" > /etc/apt/sources.list.d/vpn.list

যাচাই বন্ধ করে বা অজানা আর্কাইভকে বিশ্বস্ত চিহ্নিত করে কখনো স্বাক্ষর ব্যর্থতা মেরামত করবেন না। এটি দৃশ্যমান ত্রুটির বদলে অদৃশ্য ত্রুটি নেয়, আর অদৃশ্যটি কেউ উৎস তালিকা নিরীক্ষা না করা পর্যন্ত টিকে থাকে। কী না মিললে সঠিক সমাধান হলো সঠিক কী খুঁজে বের করা, যাচাই সরিয়ে ফেলা নয়।

রিপোজিটরির বিবরণ ও কী-এর পরিচয় প্রকল্প বা একজন পরিচালিত প্রশাসকের কাছ থেকে নিন। ব্লগ পোস্ট থেকে কপি করা কী লেখকত্বের দাবি, তার প্রমাণ নয়। বিক্রেতা ঘূর্ণন চ্যানেল প্রকাশ করলে কী-এর সঙ্গে সেটিও লিখে রাখুন, কারণ সেই চ্যানেলই পরবর্তী ঘূর্ণন সম্ভব করে।

উৎস পিনিং প্যাকেজ অনুমোদন-তালিকা নয়

একটি কী-কে এক উৎসে সীমাবদ্ধ করা সীমিত করে এটি কোন আর্কাইভ প্রমাণীকৃত করতে পারে, ওই আর্কাইভ কোন প্যাকেজ প্রকাশ করতে পারে তা নয়। রিপোজিটরি আপনার চাওয়া VPN ক্লায়েন্টের চেয়ে অনেক বেশি পাঠাতে পারে, এবং APT-এর প্রার্থী নির্বাচন ও অগ্রাধিকারই ঠিক করে কোন যোগ্য সংস্করণ জিতবে। নিশ্চিত করার আগে প্রস্তাবিত লেনদেন পর্যালোচনা করুন, নির্ভরতার তালিকাসহ, কারণ নির্ভরতাগুলো একই আর্কাইভ থেকে আসে। কী-এর পরিধি ’শুধু এই প্যাকেজ’ প্রকাশ করতে পারে না।

আরও দৃঢ় নিয়ন্ত্রণ দরকার হলে তা প্যাকেজের নাম বা সংস্করণের নীতিমালা হিসেবে প্রকাশ করুন এবং সেই নীতিমালা কনফিগারেশন ব্যবস্থাপনার অধীনে রাখুন। লেনদেন পড়তে এক মিনিট লাগে; ছয় মাস পরে অপ্রত্যাশিত প্যাকেজ আবিষ্কার করতে একটি পর্যালোচনা লাগে।

অপ্রত্যাশিত প্যাকেজ হলো এগিয়ে যাওয়ার নয়, থামার মুহূর্ত, এবং আর্কাইভ মালিকের কাছে প্রশ্ন হলো এগুলো কেন দরকার। একটি ক্লায়েন্টের চারপাশে ডজনখানেক প্যাকেজ প্রকাশ করা ডেস্কটপ স্যুট পাঠানো বিক্রেতার জন্য স্বাভাবিক। এটি ইনস্টল নির্দেশিকা যতটা ইঙ্গিত করেছিল তার চেয়ে বড় পৃষ্ঠও, এবং এই অংশটিই লিপিবদ্ধ করার যোগ্য। কোনোটিই স্বাক্ষরে অবিশ্বাসের কারণ নয়; দুটোই আপনি কী গ্রহণ করেছেন তা লিখে রাখার কারণ।

কর্তৃত্ব ও তা অপসারণের উপায় লিপিবদ্ধ করুন

আর্কাইভ মালিক, সমর্থিত অপারেটিং সিস্টেম সংস্করণ, কী ঘূর্ণন চ্যানেল এবং অপসারণ পদ্ধতি লিখুন। এই চারটি তথ্যই উত্তরসূরির প্রয়োজন যখন ক্লায়েন্ট অবসরে যায় বা বিক্রেতা তার কী ঘোরায়। এগুলো ছাড়া পরবর্তী ব্যক্তি কোনো কাহিনি ছাড়া একটি উৎস লাইন ও একটি কী ফাইল উত্তরাধিকার পান।

অপসারণই সেই ধাপ যা এড়িয়ে যাওয়া হয়, তাই ইনস্টলের সময়ই তা লিখুন। উৎস এন্ট্রি ও তার নিবেদিত কী একসঙ্গে মুছুন, এবং ফাইলটি সরানোর আগে দেখুন সেই কী অন্য কোথাও উল্লেখ আছে কি না। এই যাচাই ছাড়া মুছে ফেলা একটি ভাগ করা কী পরিষ্কারকে একটি অসম্পর্কিত বিভ্রাটে পরিণত করে, যা রুটিন পরিবর্তনের জন্য সবচেয়ে খারাপ ফল। তারপর নিশ্চিত করুন এন্ট্রি চলে যাওয়ার পরেও সাধারণ হালনাগাদ স্বাভাবিকভাবে সমাধান হয়।

রিপোজিটরি সরানোর পর একটি জিনিস থেকে যায়: ইতিমধ্যে এটি থেকে ইনস্টল করা যেকোনো প্যাকেজ কিছু একটা তা প্রতিস্থাপন না করা পর্যন্ত চলতে থাকে। সৎ প্রশ্নটি হলো আপনি কোন কর্তৃত্ব যোগ করেছেন, এবং তার ভূমিকা কত সংকীর্ণভাবে প্রকাশ করা হয়েছিল।

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