UDP VPN পোর্ট স্ক্যানে নীরব? কেন এমন হয়
WireGuard এবং শক্তিশালী OpenVPN প্রমাণীকরণে ব্যর্থ ডেটাগ্রাম উত্তর না দিয়েই বাদ দেয়। স্ক্যানার থেকে নীরবতা প্রত্যাশিত আচরণ, বন্ধ পোর্ট নয়।
আপনি VPN পোর্ট স্ক্যান করেন, কোনো উত্তর পান না এবং সিদ্ধান্ত নেন যে সেবাটি বন্ধ বা ফায়ারওয়াল বন্ধ আছে। WireGuard-এ এবং নিজস্ব প্রমাণীকরণ বহনকারী OpenVPN নিয়ন্ত্রণ চ্যানেলে সেই সিদ্ধান্তটি খাটে না। বৈধ প্রমাণীকরণ উপাদান ছাড়া ডেটাগ্রাম কোনো উত্তর ছাড়াই বাতিল হয়, তাই বাইরে থেকে সুস্থ সেবা এমনই নীরব দেখায়। টানেল ভুল হওয়ার আগেই প্রোবটি ভুল।
নীরবতাই প্রোটোকল, ত্রুটি নয়
UDP-তে সংযোগ স্থাপন নেই, তাই কোনো SYN নেই এবং কোনো স্বীকৃতি নেই যা স্ক্যানারকে খোলা পোর্ট ও ফিল্টার করা পোর্টের পার্থক্য বুঝতে দেবে। প্রোবটি একটি বিচ্ছিন্ন ডেটাগ্রাম হিসেবে আসে এবং সেবাটি যাচাই করে তা প্রত্যাশিত প্রোটোকলের সঙ্গে মেলে কি না। না মিললে প্যাকেটটি বাদ দেওয়া হয়, আর বাদ দেওয়াই নথিভুক্ত আচরণ, ত্রুটি নয়।
WireGuard তার হ্যান্ডশেক বার্তাগুলো ক্রিপ্টোগ্রাফিকভাবে যাচাই করে এবং যা ব্যর্থ হয় তা উপেক্ষা করে। OpenVPN tls-auth বা tls-crypt সহ তার নিয়ন্ত্রণ চ্যানেলের ক্ষেত্রেও একই কাজ করে। দুই ক্ষেত্রেই স্বেচ্ছাচারী পেলোড কখনো ব্যবহারকারীমুখী ধাপে পৌঁছায় না, তাই উত্তর দেওয়ার মতো কিছু নেই এবং ফেরত দেওয়ার মতো কোনো ত্রুটিও নেই।
TCP হলে বন্ধ পোর্ট থেকে আপনি রিসেট পেতেন। UDP আপনাকে অনিশ্চয়তায় রাখে, যা স্ক্যানাররা অনুমান না করে খোলা বা ফিল্টার করা ছাপিয়ে সমাধান করে।
স্ক্যানার কী সিদ্ধান্তে আসতে পারে আর কী পারে না
স্ক্যানের ফল ততটুকুই তথ্যবহুল যতটুকু তথ্যবহুল সে যে পেলোড পাঠিয়েছে। সম্ভাব্য পর্যবেক্ষণগুলোকে প্রত্যেকটি আসলে কী সমর্থন করে তা দিয়ে সাজান:
| Probe | Observed result | What it supports |
|---|---|---|
| Empty datagram | No reply | Nothing beyond the fact that UDP was used |
| Random payload | No reply | Consistent with an authenticated service |
| Valid handshake from a real client | A protocol reply | The service is alive and reachable |
| ICMP port unreachable | Unreachable message | The host answered, usually because nothing listens |
তালিকার একমাত্র ইতিবাচক পরীক্ষা হিসেবে তৃতীয় সারিটি পড়ুন। এর জন্য প্রয়োজন আসল প্রোফাইল, আসল কী এবং সঠিক এন্ডপয়েন্ট, যা সাধারণ স্ক্যানারের কাছে নেই।
পথের দুই প্রান্তই দেখুন
আপনি যে সার্ভার পরিচালনা করেন, তার জন্য কোনো সিদ্ধান্তে আসার আগে ইন্টারফেসে ক্যাপচার করুন, তারপর সেবাটিকে জিজ্ঞাসা করুন সে কী দেখেছে। দুটি কমান্ডেরই গেটওয়েতে root প্রয়োজন:
tcpdump -ni any udp port 51820
tcpdump -ni any udp port 1194
wg show
ইন্টারফেসে কোনো প্যাকেট না দেখা গেলে, সেবাটি কিছু দেখার আগেই পথটি তা বাদ দিয়েছে, আর পরবর্তী গন্তব্য রাউটিং ও ফিল্টারিং। প্যাকেট এলে কিন্তু কোনো হ্যান্ডশেক সম্পূর্ণ না হলে, সেবাটি পৌঁছানো যায় এবং অমিলটি কী, এন্ডপয়েন্ট কনফিগারেশন বা প্রোটোকল সংস্করণে। ওই তুলনাটিই সেই প্রশ্নের উত্তর দেয় যা স্ক্যানার দিতে পারেনি। এটি চালান যখন সত্যিকারের ক্লায়েন্ট সংযোগের চেষ্টা করছে, যখন স্ক্যানার নিজেকে পুনরাবৃত্তি করছে তখন নয়।
পরীক্ষা বদলান, সুরক্ষা নয়
লোভনীয় শর্টকাট হলো নিয়ন্ত্রণ চ্যানেলের সুরক্ষা বন্ধ করা যাতে ডায়াগনস্টিক উত্তর পায়। এটি বাস্তব নিরাপত্তা বৈশিষ্ট্যের বিনিময়ে আরও সুন্দর স্ক্যান ফলাফল দেয় এবং এটি ভুল দিক। এর বদলে অনুমোদিত নেটওয়ার্ক থেকে বৈধ প্রোফাইল ব্যবহার করুন এবং এন্ডপয়েন্ট ও সময় লিখে রাখুন যাতে তুলনাটি পুনরাবৃত্তিযোগ্য হয়।
সবচেয়ে উপকারী পরীক্ষা হল পার্থক্যমূলক: একই প্রোফাইল একটি কাজ করা পথে এবং যে পথটি কাজ করে না সেখানে। কাজ করা পথ হ্যান্ডশেক তৈরি করলে এবং ব্যর্থ পথ ইন্টারফেসে কিছুই না করলে, আপনি কিছুই দুর্বল না করেই ভাঙনের জায়গা খুঁজে পেয়েছেন।
তাই উত্তরহীন UDP প্যাকেট প্রমাণ করে না যে সার্ভার অফলাইন, এবং এটিও প্রমাণ করে না যে এটি নিরাপদ। এটি প্রমাণ করে যে এই প্রোব, এই পথে, এই মুহূর্তে, গ্রহণ করা হয়নি।