IPsec ESP: এটি কী বহন করে এবং তা প্রবাহিত হচ্ছে কীভাবে প্রমাণ করবেন
ESP টানেল মোডে একটি ভিতরের IP প্যাকেট মোড়ায় এবং SPI দিয়ে তার অ্যাসোসিয়েশন শনাক্ত করে। অবস্থা পড়ুন, তারপর একটি প্রবাহকে কাউন্টার সরাতে দেখুন।
ESP একটি IPsec VPN-এ ট্রাফিক বহন করে, আর তার runbook একটি নিয়ম দিয়ে শুরু হয়: নীতি বদলানোর আগে সিকিউরিটি অ্যাসোসিয়েশন পড়ুন। বেশিরভাগ ব্যাখ্যাতীত ESP আচরণ ফিরে যায় এমন একটি সিলেক্টরে যা মেলেনি, এমন একটি মোডে যা পড়ার বদলে ধরে নেওয়া হয়েছিল, বা এমন একটি কাউন্টারে যা একক প্রবাহ পাঠানোর সময় কেউ দেখেনি। নিচের তিনটি ধাপ ঠিক করে কী কী বহন করছে, প্রমাণ করে যে একটি প্রবাহ এটি ব্যবহার করে, এবং এমন একটি রোলব্যাক রেখে যায় যা স্মৃতির উপর নির্ভর করে না। প্রতিটি ধাপ একটি পর্যবেক্ষণ দেয় যা লিখে রাখার যোগ্য।
পড়ার আগে ক্ষেত্রগুলো জেনে নিন
ESP সুরক্ষিত ডেটার সামনে একটি হেডার এবং পেছনে একটি ট্রেলার রাখে। হেডারটি একটি সিকিউরিটি প্যারামিটার ইনডেক্স বহন করে যা নির্ধারণ করে রিসিভার কোন অ্যাসোসিয়েশন ব্যবহার করবে, রিপ্লে শনাক্তকরণের জন্য একটি সিকোয়েন্স নম্বর, এবং ট্রেলারে প্যাডিং যা সাইফারের জন্য পেলোডকে সারিবদ্ধ রাখে। ট্রেলারের পরবর্তী-হেডার ফিল্ড বলে সুরক্ষিত বিষয়বস্তু কী, আর এভাবেই রিসিভার জানে সে কী ডিক্যাপসুলেট করেছে।
মোড বদলে দেয় সেই সুরক্ষার ভিতরে কী থাকে। টানেল মোডে সুরক্ষিত উপাদান একটি সম্পূর্ণ ভিতরের IP প্যাকেট, এবং একটি নতুন বাইরের হেডার এটিকে প্রান্তবিন্দুর মধ্যে বহন করে। ট্রান্সপোর্ট মোডে সুরক্ষা বিদ্যমান প্যাকেটের উপরের স্তরের পেলোড মোড়ায়, তাই খোলার জন্য দ্বিতীয় IP হেডার নেই। কোন মোড ব্যবহৃত হচ্ছে তা কনফিগারেশনের সত্য, ব্যাখ্যার বিষয় নয়। ডায়াগ্রাম থেকে অনুমান না করে অবস্থা এন্ট্রি থেকে এটি পড়ুন।
কোনো মোডই বাইরের অ্যাড্রেসিং লুকায় না যা প্যাকেট পৌঁছাতে হবে। এটি নকশার বৈশিষ্ট্য, ত্রুটি নয়, এবং এজন্যই একটি মধ্যবর্তী পর্যবেক্ষক এখনও দেখতে পারে কোন দুটি ঠিকানা কথা বলছে, যদিও পেলোড অস্বচ্ছ।
ধাপ এক: অবস্থা পড়ুন, তারপর নীতি
অবস্থা এন্ট্রিগুলো কী ও কাউন্টার ধরে রাখে; নীতি এন্ট্রিগুলো সেই সিলেক্টরগুলো ধরে রাখে যা ঠিক করে কী সেগুলো ব্যবহার করতে পারবে। লিনাক্সে দুটোই প্যাকেট ক্যাপচার ছাড়া দেখা যায়, এবং সেই ক্রমে পড়লে দুটি প্রশ্ন আলাদা থাকে।
ip xfrm state
ip xfrm policy
অবস্থা আউটপুটে অ্যাসোসিয়েশনের উৎস ও গন্তব্য, মোড, এবং এনক্যাপসুলেশন UDP পোর্ট দেখায় কি না তা পরীক্ষা করুন। ওই পোর্টগুলো মানে NAT ট্রাভার্সাল ব্যবহৃত হচ্ছে, যা বদলে দেয় একটি মধ্যবর্তী ফায়ারওয়ালকে কী অনুমোদন করতে হবে, কিন্তু প্রান্তবিন্দুতে কোন সিলেক্টর বা কী প্রযোজ্য তা নয়।
তারপর নীতির সিলেক্টরগুলো পড়ুন। যে সিলেক্টর আপনার পরীক্ষার ট্রাফিকের চেয়ে সংকীর্ণ প্রিফিক্স বলে, সেটাই সবচেয়ে সাধারণ কারণ যে একটি কাজ করা টানেল একটি প্রবাহ উপেক্ষা করছে বলে মনে হয়, আর ভুল প্রোটোকলের সিলেক্টর একই নীরবতা দেয়।
| Field | Where it appears | What it decides |
|---|---|---|
| Security parameter index | ESP header, and the receiving state entry | Which association and keys the receiver applies |
| Sequence number | ESP header | Replay detection for that association |
| Next header | ESP trailer | What the decapsulated payload contains |
| Inner IP header | Inside tunnel-mode payload only | The original source and destination the endpoints act on |
| Traffic selectors | Policy, not the packet | Which local traffic is allowed to use the association |
ভেন্ডর টুল একই তথ্য সহজতর আকারে ছাপায়। ipsec statusall strongSwan-এ এটি চাইল্ড অ্যাসোসিয়েশন, তাদের সিলেক্টর ও বাইট কাউন্টার তালিকাবদ্ধ করে, যা কাঁচা xfrm আউটপুট পড়ার চেয়ে প্রায়ই দ্রুত, যখন আপনি আগেই জানেন কোন চাইল্ড দেখবেন।
ধাপ দুই: প্রমাণ করুন একটি প্রবাহ কাউন্টার সরায়
কাউন্টার অর্থবহ হয় কেবল যদি আপনি জানেন কী সেগুলো সরানো উচিত ছিল, তাই এমন উৎস ও গন্তব্য বেছে নিন যা সিলেক্টর নিশ্চিতভাবে ঢাকে এবং একটি নিরীহ অনুরোধ পাঠান। তারপর একই এন্ট্রি আবার পড়ুন এবং তুলনা করুন।
ip -s xfrm state
tcpdump -ni any esp
দুটি পাঠ ভিন্ন কাহিনি বলে। যে প্যাকেট আউটবাউন্ডে বাড়ে কিন্তু ইনবাউন্ডে কখনো বাড়ে না, সেগুলো কী-এর সমস্যা নয় বরং ফরওয়ার্ডিং বা ফেরার পথের সমস্যার দিকে ইশারা করে, কারণ প্যাকেটটি এনক্যাপসুলেট হয়ে চলে গেছে। কোনো কাউন্টার না সরলে বোঝায় ট্রাফিক নীতির সাথে একদমই মেলেনি, এবং সিলেক্টরই সেই জায়গা যেখানে দেখতে হবে।
একই ধাপে ক্যাপচার তারের উপর এনক্যাপসুলেশন নিশ্চিত করে, সহ যে বাইরের প্যাকেটগুলো ESP না UDP-এনক্যাপসুলেটেড ESP। এটি আপনাকে সেই ঠিকানাগুলোও দেখায় যেগুলো সত্যিই প্রবাহটি বহন করেছে, যা মাঝে মাঝে আপনি যে কনফিগারেশন পড়ছিলেন তার থেকে আলাদা।
ধাপ তিন: একটি জিনিস বদলান এবং রোলব্যাক রাখুন
কিছু সম্পাদনার আগে অ্যাসোসিয়েশনের উৎস, গন্তব্য, মোড, সিলেক্টর ও কাউন্টার লিখে রাখুন। যদি কোনো পরিবর্তন পরিস্থিতি খারাপ করে, সেই রেকর্ডই আপনাকে আগের অবস্থা ফিরিয়ে আনতে দেয়, অনুমান থেকে কাজ করা কনফিগারেশন পুনর্নির্মাণের বদলে। সেই রেকর্ড লিখতে এক মিনিট লাগে এবং পরে এক ঘণ্টা বাঁচায়। এটি একমাত্র নিদর্শন যা পরিবর্তনকারী ব্যক্তির পরে টিকে থাকে।
একটি সিলেক্টর বা একটি প্যারামিটার বদলান, পুনরায় লোড করুন, এবং একই প্রবাহে ধাপ দুই পুনরাবৃত্তি করুন। একটি অ্যাসোসিয়েশন মুছে ফেললে তার ব্যবহার করা প্রতিটি প্রবাহ ভেঙে যায়, তাই লক্ষ্যযুক্ত সম্পাদনা ও চাইল্ড পুনরায় লোড করা প্রায় সবসময়ই কী হবে দেখতে অবস্থা ফ্লাশ করার চেয়ে ভালো।
সিলেক্টর সম্পাদনার রোলব্যাক হলো আগের নীতি ফিরিয়ে আনা ও পুনরায় লোড করা, এই সতর্কতা সহ যে সিলেক্টর যদি স্থানীয় না হয়ে আলোচিত হয়, তাহলে সমকক্ষের মিলিত পরিবর্তন লাগতে পারে। সেই নির্ভরতা টাটকা থাকতেই লিখুন, কারণ অর্ধেক পুনরুদ্ধার করা জোড়া যেকোনো প্রান্তিক অবস্থার চেয়ে বিশ্লেষণ করা কঠিন।
শেষে, পরিধি সৎ রাখুন। একটি প্রবাহিত ESP অ্যাসোসিয়েশন প্রমাণ করে দুই গেটওয়ে সেগমেন্টটি সুরক্ষিত করছে ও পৌঁছাচ্ছে, এবং এটি বলে না উপরের অ্যাপ্লিকেশন তার ব্যবহারকারীদের প্রমাণীকরণ করছে কি না বা যা সংরক্ষণ করে তা এনক্রিপ্ট করছে কি না। এগুলো আলাদা প্রমাণসহ আলাদা নিয়ন্ত্রণ, এবং runbook তখনই শেষ যখন পরের ব্যক্তি নোট থেকে এটি পুনরাবৃত্তি করতে পারে।