VPN থেকে VLAN অ্যাক্সেস: নিয়মের আগে ম্যাট্রিক্স তৈরি করুন
এক দিকে ভূমিকা, অন্য দিকে সেবা। পাঁচটি যাচাই অস্পষ্ট VPN থেকে VLAN ডিজাইনকে এমন একটি সারণিতে বদলে দেয় যা ফায়ারওয়াল মালিক বাস্তবায়ন করতে পারেন।
ফায়ারওয়াল সিনট্যাক্স নয়, ম্যাট্রিক্স দিয়ে শুরু করুন। যে সারণিতে এক দিকে ভূমিকা আর অন্য দিকে সেবা থাকে, তা একটি অ্যাপ্লিকেশন মালিক পর্যালোচনা করতে পারেন, নিরাপত্তা মালিক বিতর্ক করতে পারেন এবং গেটওয়ে যার হাতে আছে সে বাস্তবায়ন করতে পারে। কেউ না-রাজি হওয়া নিয়ম ডিবাগ করার চেয়ে সেই পর্যালোচনা সস্তা।
এক ঘণ্টার লেখা পরে এক সপ্তাহের নিয়ম-প্রত্নতত্ত্ব বাঁচায়। ডিজাইন বলে কে কোন সেবায় পৌঁছায়, আর পুনঃসংখ্যাকরণের পর টিকে থাকে ঠিক সেই অংশটাই।
ধাপ 1: নেটওয়ার্কের আগে ভূমিকাগুলোর নাম দিন
সুইচ নয়, মানুষ দিয়ে শুরু করুন। দূর থেকে সংযুক্ত প্রতিটি দল এবং সেই দল কী করে তা বর্ণনা করা একক বাক্য লিখুন, যেমন মজুতের মাত্রা পড়া গুদামকর্মী বা একটি ইন্টিগ্রেশন রক্ষণাবেক্ষণকারী ঠিকাদার। দুই দল একই অ্যাক্সেস পেলে এই উদ্দেশ্যে তারা একই ভূমিকা।
কোনো ভূমিকা কেবল সংগঠন-চার্টের কারণে থাকলে এখানেই থামুন। আলাদা সেবার প্রয়োজন নেই এমন ভূমিকা একই রকম কক্ষের সারিতে পরিণত হয়, আর একই সারি পরে সুবিধার জন্য পুরো একটি সাবনেট দেওয়ার প্রলোভন দেয়। মানুষ কী করে সেই অনুযায়ী ভাগ করুন, তাদের খরচ কে স্বাক্ষর করে তা নয়। ছোট অফিসের জন্য ছয়টি ভূমিকা সাধারণত বেশি, আর তিনটিই প্রায়ই ঠিক।
ধাপ 2: প্রতিটি কক্ষকে সেবা-বিবৃতিতে বদলান
যে কক্ষে লেখা “অ্যাপ্লিকেশন”, তা যাচাইযোগ্য নয়। যে কক্ষে লেখা “স্টাফ পুল থেকে 443 পোর্টে ERP হোস্টে HTTPS”, তা যাচাইযোগ্য। প্রতিটি নেটওয়ার্কের নামের বদলে গন্তব্য, প্রোটোকল ও পোর্ট লিখুন, তারপর যে নির্ভরতা ছাড়া সেবা চলে না তা যোগ করুন, যেমন অভ্যন্তরীণ রিজলভার বা পরিচয় প্রদানকারী।
| Check | Passes when | Stop if |
|---|---|---|
| Destination named | Host and port appear in the cell | Cell names a VLAN or a subnet |
| Direction stated | Initiator and responder are both clear | Cell implies two-way access |
| Dependency listed | DNS or identity path is explicit | Whole infrastructure range is granted |
| Negative case written | At least one denied pair is recorded | Only allow rules exist |
দিক কলামটি সবচেয়ে ব্যয়বহুল ভুল ধরে। কর্মীদের একটি অ্যাপ্লিকেশন খোলার অনুমতি মানে অ্যাপ্লিকেশন সার্ভারগুলো কর্মীদের ল্যাপটপে ফিরতি সংযোগ খুলতে পারবে এমন অনুমতি নয়, আর প্রথম দিক অনুমোদন করা স্টেটফুল নিয়ম প্রায়ই দ্বিতীয়টির অনুমতি হিসেবে পড়া হয়।
ধাপ 3: পরিচয় কোথায় নীতিতে পরিণত হয় তা ঠিক করুন
কাউকে একটি প্রমাণিত সেশনকে গেটওয়ে যে ভূমিকা প্রয়োগ করতে পারে তাতে রূপান্তর করতে হবে। সমর্থিত বিকল্পের মধ্যে আছে প্রমাণীকরণ ব্যাকএন্ডের দেওয়া গ্রুপ নীতি, বিশ্বস্ত সেশন বৈশিষ্ট্য, বা প্রতি ভূমিকার আলাদা ঠিকানা পুল। তিনটিই কাজ করে; ক্লায়েন্টের পাঠানো লেবেল কাজ করে না। আপনার গেটওয়ে যে পদ্ধতি নথিভুক্ত করে সেটিই বাছুন, কোনো ফোরাম পোস্ট যেটি বর্ণনা করে তা নয়।
শুধু VLAN-এর মনে হয় এমন ঠিকানা বরাদ্দ করা ভিন্ন পোশাকে একই অধরা উত্তর। OpenVPN ফায়ারওয়াল নিয়ম নিয়ে Netgate-এর নির্দেশিকা এই পার্থক্য স্পষ্ট করে: টানেল উঠতে দেওয়া আর তার মধ্য দিয়ে ট্রাফিক যেতে দেওয়া আলাদা সিদ্ধান্ত।
আপনি কোন পদ্ধতি বেছেছেন এবং তা কোথায় কনফিগার করা আছে লিখে রাখুন। কোনো ভূমিকা বদলালে সেই টীকাই এক সম্পাদনা আর তিন ইন্টারফেসে খোঁজার মধ্যে পার্থক্য। নিরীক্ষককে এটাও বলে দেয় প্রথমে কোথায় তাকাতে হবে।
ধাপ 4: গন্তব্য যে উৎস ঠিকানা দেখে তা লক্ষ্য করুন
সীমান্তে ফরওয়ার্ডিং নীতিকে প্রকৃত উৎসের সঙ্গে মিলতে হবে। গেটওয়ে যদি VPN ক্লায়েন্টদের নিজের ঠিকানায় অনুবাদ করে, তবে নিচের প্রতিটি ফায়ারওয়াল একটিই উৎস দেখে এবং ভূমিকা অনুযায়ী সিদ্ধান্ত নেওয়ার ক্ষমতা হারায়। যদি ক্লায়েন্টের ঠিকানা সংরক্ষণ করে, তবে সেই পুলের জন্য ফিরতি পথ থাকতে হবে।
চূড়ান্ত নিয়ম লেখার আগে দুই দিকই পরীক্ষা করুন, তারপর প্রতিটি কক্ষের পাশে পর্যবেক্ষিত উৎস লিখুন। একই যাচাই দুই ভিন্ন ভূমিকা থেকে চালিয়ে ফলাফল মেলান। দুটিই গেটওয়ের ঠিকানা দেখালে ভূমিকার পার্থক্য ইতিমধ্যেই হারিয়ে গেছে। যে ম্যাট্রিক্স সংরক্ষিত ঠিকানা ধরে নেয় অথচ গেটওয়ে উৎস অনুবাদ করে, তা প্রথম নিচের ACL-এই ব্যর্থ হয়।
ধাপ 5: প্রকাশের আগে প্রতিটি কক্ষ পরীক্ষা করুন
প্রতিটি অনুমোদিত কক্ষকে একটি প্রতিনিধি কার্যক্রমে এবং প্রতিটি নিষিদ্ধ কক্ষকে একটি নঞর্থক ঘটনায় বদলান। দুটিই প্রকৃত ভূমিকার একটি ক্লায়েন্ট থেকে চালান, গেটওয়ে কনসোল থেকে নয়, কারণ কনসোল আপনি যে পথ পরীক্ষা করছেন তা এড়িয়ে যায়।
# allowed: staff role reaches the ERP endpoint
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://erp.internal.example/health
# denied: the same role must not reach a management host
nc -vz -w 3 10.30.5.11 22
# observed source address at the destination
sudo tcpdump -ni any 'tcp port 443 and host 10.30.20.15'
সংযুক্ত হয় এমন নঞর্থক ঘটনা একটি অনুসন্ধান, কাকতালীয় নয়, আর নিয়ম ঠিক না হওয়া পর্যন্ত তা ম্যাট্রিক্সে ব্যর্থ কক্ষ হিসেবে থাকা উচিত। পরীক্ষার কমান্ডগুলো সারণির পাশে রাখুন যাতে পরবর্তী পর্যালোচক যুক্তিটা নতুন করে গড়ার বদলে সেগুলো আবার চালান।
সম্পূর্ণ সারণিটি যে গেটওয়ের জন্য লেখা তার চেয়ে বেশি দিন টেকে। নিয়ম ফার্মওয়্যার ও বিক্রেতার সঙ্গে বদলায়, কিন্তু যে সারি বলে ঠিকাদার একটি প্রকল্প সেবায় পৌঁছায়, তা সেই কাজ না বদলা পর্যন্ত সত্য থাকে।