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

তিনটি শর্ত এর উত্তর নির্ধারণ করে, আর সেগুলো হলো একটি ইমেজ বহন করতে পারে এমন উপাদানের তিনটি ঝুড়ি। ইমেজ তৈরি হওয়ার আগেই সেগুলো আলাদা করুন, দুইবার স্থাপনার পরে নয়।

প্রথমে নির্ধারণ করুন আপনি কোন কাজটি করছেন

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

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

তাই প্রথম সিদ্ধান্তটি একটি বাক্য, যা ইমেজ বিল্ড হোস্ট ছাড়ার আগেই লিখে রাখতে হবে: এই কপিটি গেটওয়ে A পুনরুদ্ধার করে, অথবা এই কপিটি গেটওয়ে B হয়ে যায়। এর পরে সবকিছু সেই বাক্যের বিপরীতে হিসাব। যদি কেউ তা লিখতে না পারে, কপিটি তৈরি হওয়ার জন্য প্রস্তুত নয়।

পুনর্ব্যবহারযোগ্য ইনপুট, পরিচয় ও ক্ষমতা, স্থাপনার অবস্থা

পুনর্ব্যবহারযোগ্য ঝুড়িটি সহজ: প্যাকেজ, কোনো গোপন তথ্য ছাড়া পর্যালোচিত কনফিগারেশন, সার্ভিস টেমপ্লেট, কঠোরকরণ সেটিংস। ইমেজ সত্যিই এখানেই ভালো, এবং এটি সীমাহীনভাবে পুনরুৎপাদন করা যায়।

পরিচয় ও ক্ষমতার ঝুড়িতেই কপিগুলো ভুল হয়। গেটওয়ের ব্যক্তিগত কী ও সার্টিফিকেট প্রতিটি ক্লায়েন্টের কাছে সেই গেটওয়েকে চিহ্নিত করে। সার্টিফিকেট কর্তৃপক্ষের স্বাক্ষর কী ভিন্ন ক্ষমতাসম্পন্ন ভিন্ন একটি বস্তু: এটি পরিচয় ইস্যু করে। একটি ইস্যুকারীকে বিশ্বাস করার অর্থ এই নয় যে প্রতিটি নতুন গেটওয়ের ইস্যু করার সামর্থ্য দরকার, আর ইমেজের ভেতরে স্বাক্ষর কী পাঠানো সেই সামর্থ্যটি যেকোনো কিছুকে দেয় যা ইমেজ পড়তে পারে।

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

নতুন নোডকে কী দিতে হবে, এবং কে দেবে

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

নেটওয়ার্ক মানগুলোরও একই আচরণ প্রাপ্য। এমন একটি পুল, শ্রবণ-ঠিকানা এবং পুশ করা রুটের সেট বেছে নিন যা বিদ্যমান গেটওয়ের সঙ্গে সংঘর্ষ করে না, এবং সেগুলো ইমেজে নয়, প্রভিশনিং ইনপুটে লিখুন। ইনপুট পর্যালোচনযোগ্য; ইমেজ নয়।

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

openssl x509 -in /etc/openvpn/server/server.crt -noout -subject -issuer -dates
find /etc/openvpn -name '*.key' -o -name '*.pem' | head -20

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

ইমেজের একটি কপি নীরবে কী বহন করে

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

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

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

উৎপাদনের আগে ভর্তি যাচাই

নোডটি ট্রাফিক নেওয়ার আগে চারটি বিষয় নিশ্চিত করুন: এটি যে পরিচয় উপস্থাপন করে, যে ক্লায়েন্টদের গ্রহণ করবে, যে সম্পদে পৌঁছানোর অনুমতি আছে, এবং যে ঠিকানাগুলো দেয় সেগুলোর ফেরার পথ।

systemctl status openvpn-server@lab --no-pager
ss -lunp 'sport = :1194'
ip -4 route show table all | grep -F '10.90.'

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

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

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