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

বাইরের বাহক দিয়ে শুরু করুন

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

এই বিন্দুর পরের সবকিছু রাউট করা নয়, বহন করা হয়। ভেতরের বিনিময় ব্যর্থ হলেও বাহক কাজ করতে থাকে।

এনক্যাপসুলেশন অনুসরণ করে ভেতরে যান

সুরক্ষিত চ্যানেলের ভেতরে থাকে একটি SSTP নিয়ন্ত্রণ বিনিময়, তারপর একটি PPP সেশন, তারপর সেই নেটওয়ার্ক প্যাকেট যা ক্লায়েন্ট পৌঁছাতে চায়। প্রতিটি স্তরের নিজস্ব আলোচনা, নিজস্ব ত্রুটি বার্তা এবং নিজস্ব অবস্থা মেশিন আছে। তাই একটি ত্রুটি এক দৃষ্টিকোণ থেকে TLS ত্রুটি মনে হতে পারে, অন্য দিক থেকে PPP ত্রুটি। স্তরগুলো ক্রম অনুসারে পড়লে বোঝা যায় কোন অবস্থা মেশিন থেমেছে।

একটি ক্যাপচার খুব কমই পুরো স্ট্যাক দেখায়। বাইরের হেডার কেবল এন্ডপয়েন্টের বাইরে দেখা যায়, আর ভেতরের হেডার কেবল ডিক্যাপসুলেশনের পরে। এই অসামঞ্জস্য আসে আপনি কোথায় দাঁড়িয়ে আছেন তা থেকে, প্রোটোকল থেকে নয়।

নিচের চিত্রটি স্তরগুলোকে দলবদ্ধ করে যাতে সেগুলো নিয়ে আদৌ কথা বলা যায়। এটি বাইট বিন্যাস নয়, প্রতি প্যাকেটে একটি রেকর্ডের প্রতিশ্রুতি দেয় না, এবং কোনো বাস্তবায়ন কতগুলো ক্রিপ্টোগ্রাফিক ক্রিয়া চালায় সে সম্পর্কে কিছুই বলে না।

outer IP header
  TCP to port 443
    TLS record layer
      SSTP control and data packets
        PPP frames
          inner IP packet
            application transport and payload

ক্যাপচার পড়ার আগে পর্যবেক্ষককে চিহ্নিত করুন

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

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

যে যাচাই চিত্রটি প্রমাণ করতে পারে না তা ধরে রাখুন

স্তরের ক্রম প্রমাণ করে না যে কোনো স্থাপনা সার্ভার সার্টিফিকেট যাচাই করে, সমর্থিত TLS সংস্করণে আলোচনা করে বা অ্যাকাউন্টকে অনুমোদন দেয়। এগুলোর প্রতিটি একটি কনফিগারেশন সিদ্ধান্ত যা এনক্যাপসুলেশন থেকে স্বতন্ত্রভাবে ব্যর্থ হয়।

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

openssl s_client -connect vpn.corp.internal:443 -servername vpn.corp.internal
tshark -r sstp.pcap -Y "tls.handshake.type == 1"

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