যে ইন্টারফেসগুলো আপনি বোঝাচ্ছেন সেগুলোতেই একটি VPN লিসেনার সীমাবদ্ধ করুন
একটি wildcard লিসেনার আর একটি ফায়ারওয়াল নিয়ম ভিন্ন নিয়ন্ত্রণ। ss দিয়ে প্রকৃত সকেটগুলো পড়ুন, তারপর ঠিকানা পরিবার ও ফায়ারওয়াল যাচাই করুন।
একটি VPN সেবা যেখানেই তার সকেট বাঁধা থাকে এবং যেখানে তার ফায়ারওয়াল অনুমতি দেয় সেখান থেকেই পৌঁছানো যায়। এগুলো দুটি আলাদা সিদ্ধান্ত, আর মানুষ সাধারণত এর একটিই নেয়। প্রকৃত লিসেনার পড়তে দশ সেকেন্ড লাগে এবং এমন একটি প্রশ্ন নিষ্পত্তি করে যা অনুমান করতে পারে না। সেখান থেকেই শুরু করুন, তারপর একবারে একটি নিয়ন্ত্রণ বদলান।
নিচের সবকিছু ধরে নেয় যে আপনি হোস্টে root বা sudo দিয়ে কমান্ড চালাতে পারেন।
কিছু বদলানোর আগে সকেটগুলো পড়ুন
Linux-এ ss -lunp UDP লিসেনারগুলোকে তাদের স্থানীয় ঠিকানা, পোর্ট ও প্রসেসসহ তালিকাভুক্ত করে, আর ss -ltnp TCP-এর জন্য একই কাজ করে। VPN-এর পোর্ট খুঁজুন এবং ঠিকানা কলামটি মনোযোগ দিয়ে পড়ুন। 0.0.0.0:51820 এবং [::]:51820 মানে প্রতিটি ইন্টারফেস, আর 10.0.0.5:51820 মানে একটি ইন্টারফেসে একটি ঠিকানা। আউটপুট অপরিচিত হলে ss ম্যানুয়াল কলামগুলো নথিভুক্ত করে। প্রসেসের নাম অনুপস্থিত থাকলে একই কমান্ড sudo দিয়ে চালান, কারণ মালিক কলামের বিশেষাধিকার প্রয়োজন।
ঠিকানাটি লিখে রাখুন। এটিই সেই তথ্য যার উপর এই রানবুকের বাকি অংশ নির্ভর করে।
ইচ্ছার উপর নয়, ঠিকানার উপর বাইন্ড করুন
OpenVPN-এর local নির্দেশ লিসেনারকে একটি নির্দিষ্ট ঠিকানায় বাঁধে, এবং প্রসেস স্তরে এটিকে সীমিত করার সমর্থিত উপায় এটিই। প্রতিটি বাস্তবায়ন সমতুল্য কিছু দেয় না, আর বাইন্ড অপশনবিহীন প্রোটোকল এভাবে সংকীর্ণ করা যায় না। আপনারটিতে যদি কিছু না থাকে, ফায়ারওয়ালই আপনার একমাত্র নিয়ন্ত্রণ, এবং ডিপ্লয়মেন্ট নোটে তা স্পষ্টভাবে বলা উচিত। একাধিক ঠিকানার হোস্টে টানেলের দিকে থাকা ঠিকানায় বাইন্ড করুন; ভাসমান ঠিকানায় বাইন্ড করা সাধারণত ভুল।
যে সেবাকে ঠিকানা পরিবর্তন সহ্য করতে হবে তার পুরনো বাইন্ডিংয়ের জন্য একটি পরিকল্পনা দরকার, কেবল একটি কনফিগারেশন লাইন নয়।
ঠিকানা পরিবারটি আলাদাভাবে যাচাই করুন
IPv4 এবং IPv6 আলাদা সকেট। 0.0.0.0-এ বাঁধা একটি প্রসেস ডুয়াল-স্ট্যাক সকেটের মাধ্যমে IPv6 গ্রহণ করতে পারে, আবার নাও পারে; এটি সকেট অপশন ও প্ল্যাটফর্মের ডিফল্টের উপর নির্ভর করে। শুধু IPv4 লাইন পড়া একাধিক ডিপ্লয়মেন্ট পর্যালোচনাকে বিভ্রান্ত করেছে। লিসেনার সংকীর্ণ বলে সিদ্ধান্তে আসার আগে উভয় পরিবার তালিকাভুক্ত করুন।
IPv6 যদি ডিজাইনের অংশ না হয়, তবে ফায়ারওয়াল তা ঢাকবে বলে আশা করার চেয়ে সকেট স্তরে এটি নিষ্ক্রিয় করা পরিষ্কারতর। এটি একটি নীতি সিদ্ধান্ত, তাই ইন্টারফেস পছন্দগুলোর বাকি অংশের সাথে এটি লিপিবদ্ধ করুন।
বাইন্ডিংয়ের উপরে ফায়ারওয়াল স্তর দিন
সংকীর্ণ বাইন্ড ফায়ারওয়াল নিয়মের বিকল্প নয়, আর ফায়ারওয়াল নিয়ম wildcard বাইন্ডকে সংকীর্ণ করে না। দুটোই ব্যবহার করুন: বাস্তবায়ন যেখানে সমর্থন করে সেখানে বাইন্ড করুন, তারপর পোর্টটি কেবল সেই উৎসগুলো থেকে অনুমোদন করুন যেগুলোর সেখানে পৌঁছানো উচিত। ক্লাউড সিকিউরিটি গ্রুপগুলো হোস্ট ফায়ারওয়ালের সামনে থাকে, তাই পথটি যখন VPC সীমান্ত অতিক্রম করে তখন দুটোই যাচাই করুন। কার্যকর নিয়ম হলো দুটির ছেদ, এবং প্রতিটি স্তর কেবল পৌঁছানোর ক্ষমতা বিয়োগ করতে পারে।
অনুমোদিত উৎস থেকে এবং ইচ্ছাকৃতভাবে বাদ দেওয়া উৎস থেকে পরীক্ষা করুন। localhost থেকে সংযোগ পাবলিক সীমান্ত সম্পর্কে কিছুই প্রমাণ করে না।
আপনি যা বেছে নিয়েছেন তা লিপিবদ্ধ করুন
বাঁধা ঠিকানা, যে ইন্টারফেসের মালিকানায় এটি আছে, ফায়ারওয়াল নিয়ম ও তার উদ্দেশ্য লিখুন। প্রতিস্থাপিত NIC বা পুনঃনির্ধারিত ক্লাউড ঠিকানা কেউ প্রোফাইল সম্পাদনা না করেই এক্সপোজার বদলে দিতে পারে। নোটে তারিখ দিন, কারণ ক্লাউড ঠিকানাগুলো পর্যালোচনার মধ্যে মানুষ যতটা আশা করে তার চেয়ে বেশি নড়াচড়া করে।
এই নোটটিই পরবর্তী পর্যালোচনাকে প্রত্নতত্ত্ব প্রকল্পের বদলে একটি তুলনায় পরিণত করে।