ব্যক্তিগত VPN নাম কাজ করছে না? সন্দেহভাজন DNS রিবাইন্ড সুরক্ষা
যে রিজলভার ব্যক্তিগত ঠিকানার উত্তর প্রত্যাখ্যান করে, সে অভ্যন্তরীণ নাম ভাঙে, টানেল নয়। উত্তরটি পড়ুন, ব্যতিক্রমের পরিধি ঠিক করুন, সুরক্ষা অন্য জায়গায় রাখুন।
অফিসের লোকাল নেটওয়ার্কে অভ্যন্তরীণ নামটি সঙ্গে সঙ্গে উত্তর দেয়। VPN চালু হওয়ার সঙ্গে সঙ্গে সেটি কাজ করা বন্ধ করে, অ্যাপ্লিকেশন টাইমআউট জানায়, আর টানেল নিজে কোনো অভিযোগ ছাড়াই ট্রাফিক পার করাতে থাকে। যা বদলেছে তা হলো রিজলভার, আর সেই রিজলভারের ব্যক্তিগত ঠিকানা নিয়ে নিজস্ব মত আছে।
রিবাইন্ড সুরক্ষা তৈরি হয়েছে একটি নির্দিষ্ট কৌশল থামানোর জন্য। ইচ্ছাকৃতভাবে প্রকাশ করা একটি ব্যক্তিগত নাম যথেষ্ট মিলেমিশে যায়, ফলে প্রতিরক্ষাটি সক্রিয় হয়।
নীতি পড়ার আগে উত্তরটি পড়ুন
VPN যে রিজলভার সত্যিই পাঠায় তার কাছে নামটি জিজ্ঞেস করুন, বাড়িতে আপনার ল্যাপটপ যে রিজলভার ব্যবহার করে তার কাছে নয়। উত্তরটি আপনার প্রত্যাশিত রেকর্ডের সঙ্গে তুলনা করুন, এবং দেখুন উত্তরটি খালি, প্রত্যাখ্যাত, নাকি কেউ পরিকল্পনা করেনি এমন পাবলিক ঠিকানায় ভরা।
উপসর্গগুলো একে অপরকে ঢেকে দেয়, তাই উত্তরটির আকৃতিই রোগনির্ণয় ঠিক করে। NXDOMAIN মানে অনুপস্থিত রেকর্ড, REFUSED মানে প্রবেশের নিয়ম, অভ্যন্তরীণ নামের জন্য পাবলিক ঠিকানা মানে নীতি বা বিভক্ত DNS-এর ভুল, আর ক্লায়েন্ট ব্যবহার করতে পারে না এমন সঠিক ব্যক্তিগত ঠিকানা সম্পূর্ণ আলাদা সমস্যা। প্রত্যাখ্যাত সংযোগ বা আটকে থাকা অনুরোধ নিজে নিজে কিছুই প্রমাণ করে না, তাই এই টিকিটগুলোর যেকোনোটিতে প্রথম কমান্ডটি রিস্টার্ট নয়, একটি লুকআপ হওয়া উচিত। কিছু বদলানোর আগে উত্তরটি লিখে রাখুন।
প্রতিরক্ষাটি আসলে কী থামায়
DNS রিবাইন্ডিং কাজ করে এইভাবে যে ক্লায়েন্ট ইতিমধ্যে একটি নামকে বিশ্বাস করার পরেও সেটি কোথায় রিজলভ হয় তা বদলে দেওয়া হয়। আক্রমণকারীর নিয়ন্ত্রিত নাম থেকে একটি পাতা লোড হয়, উত্তরটি ব্যক্তিগত ঠিকানায় বদলে যায়, আর ব্রাউজারকে লোকাল নেটওয়ার্কের এমন কিছুর সঙ্গে কথা বলতে প্রতারিত করা হয়, যার সঙ্গে সে সরাসরি সংযোগ কখনোই গ্রহণ করত না। প্রতিরক্ষা হলো এমন উত্তর প্রত্যাখ্যান করা যা ব্যক্তিগত পরিসরের দিকে ইঙ্গিত করে, যখন রিজলভারকে কখনোই ব্যক্তিগত নামস্থান পরিবেশন করতে বলা হয়নি। পুরো আক্রমণটাই এই অসমত্ব।
dnsmasq ঠিক এই আচরণই নথিভুক্ত করে, প্রতিটি ডোমেইনের জন্য ব্যতিক্রমসহ। এর ম্যানুয়াল পাতা rebind-domain-ok-কে এমন ডোমেইনের নাম দেওয়ার উপায় হিসেবে বর্ণনা করে, যারা বৈধভাবে এমন ঠিকানা ফেরত দিতে পারে। এটি এমন সংকেত হিসেবে পড়ুন যে অভীষ্ট সমাধান একটি সীমিত অনুমতি, কোনো বিশ্বব্যাপী সুইচ নয়।
ব্যতিক্রমটিকে নামস্থানে সীমাবদ্ধ করুন
আগে নামস্থান ঠিক করুন, পরে ব্যতিক্রম। নিশ্চিত করুন যে ব্যর্থ নামটি সংগঠনের নিয়ন্ত্রিত কোনো ডোমেইনের অন্তর্গত এবং রেকর্ডটি ইচ্ছাকৃতভাবে রক্ষণাবেক্ষণ করা হয়। কোনো অপ্রত্যাশিত ঠিকানা যদি শুধু পরিচিত লোকাল নেটওয়ার্ক পরিসরের মতো দেখায়, তা সন্দেহের যোগ্য, ব্যতিক্রমের নয়, তাই কোনো অনুমতি লেখার আগে জোনের মালিককে যাচাই করুন।
# ask the resolver the VPN pushed, and show the full answer
dig +noall +answer db.corp.example @10.40.0.1
dig +short db.corp.example @10.40.0.1
# dnsmasq: what does the running configuration already allow?
grep -R 'rebind' /etc/dnsmasq.d /etc/dnsmasq.conf
তারপর অভীষ্ট নামগুলো ঢাকে এমন সংকীর্ণতম অনুমতি যোগ করুন: VPN ক্লায়েন্টরা যে রিজলভারকে জিজ্ঞেস করে তার কনফিগারেশনে একটি ডোমেইন, অথবা একটি অর্পিত সাবডোমেইন। ওই রিজলভারের প্রতিটি নামের জন্য সুরক্ষা বন্ধ করলে একসঙ্গেই সবার সুরক্ষা চলে যায়, সেই নামগুলোসহ যাদের কখনোই এটি দরকার ছিল না।
বিভক্ত DNS একই সিদ্ধান্তের অংশ। যদি ব্যক্তিগত নামস্থানের উত্তর কেবল অভ্যন্তরীণ রিজলভারেই দেওয়া উচিত, তবে সেটি সেখানেই প্রকাশ করুন এবং পাবলিক রিজলভারে তা ফাঁস করা বন্ধ করুন, যাতে ব্যতিক্রমটি প্রতিটি পথের বদলে একটি পথ ঢাকে।
সম্পদ ও প্রতিরক্ষা আবার পরীক্ষা করুন
আবার জিজ্ঞেস করুন, তারপর সেবার সঙ্গে সংযোগ করে দেখুন ক্লায়েন্ট কী দেখে। সঠিক ব্যক্তিগত উত্তর আর কাজ করা সেশন মানে ব্যতিক্রমটি কার্যকর হয়েছে। সঠিক উত্তর কিন্তু আটকে থাকা সেশন মানে পরবর্তী সন্দেহভাজন রুট বা সেবার পরিচয়।
# the internal name and the public control should behave differently
dig +short db.corp.example @10.40.0.1
dig +short www.example.com @10.40.0.1
# and the service itself, with the certificate it presents
curl -sS -o /dev/null -w '%{http_code}\n' https://db.corp.example/health
একই রিজলভার দিয়ে একটি পাবলিক নামও পরীক্ষা করুন। ব্যতিক্রমের বাইরের নামগুলোর ক্ষেত্রে সুরক্ষা আগের মতোই কাজ করা উচিত, আর সেই পরীক্ষা ব্যর্থ হলে বোঝা যায় পরিবর্তনটি উদ্দেশ্যের চেয়ে বেশি বিস্তৃত হয়েছে। সনদের যাচাই সব সময় অক্ষত রাখুন, কারণ সঠিকভাবে রিজলভ হওয়া একটি নামকেও সেবার উপস্থাপিত সনদের সঙ্গে মিলতে হয়।
টিকিটে প্রত্যাখ্যাত উত্তর, ডোমেইন, রিজলভার এবং নীতির মালিক কে তা লিখে রাখুন। এই রেকর্ডটিই এক রহস্যময় অভ্যন্তরীণ বিচ্ছিন্নতাকে এমন কনফিগারেশন পরিবর্তনে বদলে দেয় যা কেউ পর্যালোচনা করতে পারে।