nftables: ড্রপ হ্যান্ডেলের আগে VPN অনুমোদনের নিয়ম বসান
nftables-এ insert আর add একটি হ্যান্ডেলের বিপরীত দিকে নিয়ম বসায়। ড্রপটি খুঁজুন, দিকটি বেছে নিন, তারপর রুলসেট বদলানোর আগে ফাইলটি যাচাই করুন।
অনুমোদনের নিয়ম ভুল জায়গায় বসালে তা কোনো নিয়ম না থাকার মতোই আচরণ করে। nftables-এ insert আর add-এর মধ্যে বেছে নেওয়াই ঠিক করে নতুন বিবৃতিটি রেফারেন্স করা নিয়মের কোন দিকে পড়বে, আর একটি হ্যান্ডেল লাইভ রুলসেটে নিয়মটির নাম দেয়, তার সারি নম্বর নয়। বসানো ভুল হলে প্যাকেট আগে ড্রপে পৌঁছে যায়।
নিচের তুলনাটি একটি নির্দিষ্ট পিয়ার আর একটি বহিঃস্থ লিসেনার বিনিময় ব্যবহার করে। এটি ইচ্ছাকৃতভাবে সংকীর্ণ; পুরো চেইন বদলানো ভিন্ন ঝুঁকিপ্রোফাইলের ভিন্ন পরিবর্তন।
দুটি অবস্থান, দুটি ভিন্ন ফলাফল
insert রেফারেন্স করা নিয়মের আগে একটি নিয়ম বসায়। add এটি পরে বসায়। রেফারেন্স করা নিয়মটি যদি প্রবাহের চূড়ান্ত ড্রপ হয়, তবে নিয়মের লেখা অভিন্ন হলেও এই দুটি কমান্ড পরস্পরবিরোধী ফল দেয়।
অবস্থান বাদ দেওয়ার নিজস্ব ডিফল্ট আচরণ আছে, যা ফোরাম থেকে কমান্ড কপি না করার আরেকটি কারণ—সেটি কীসের সাথে অ্যাঙ্কর করা তা না পড়ে। অ্যাঙ্করটাই পুরো সিদ্ধান্ত। কমান্ড লেখার আগে উদ্দিষ্ট দিকটি লিখে রাখুন। ফাইলে insert আর add এক শব্দের ব্যবধানে।
অবস্থানটি নির্দিষ্ট একটি চেইনের নিয়মের সাপেক্ষে। একই বিবৃতি অন্য চেইনে বা অন্য hook অগ্রাধিকারে সরালে এটি কোন প্যাকেট দেখে তা বদলে যায়, এমনকি নিয়মের সিনট্যাক্স সঠিক দেখালেও।
হ্যান্ডেল একটি নিয়ম চিহ্নিত করে, লাইন নম্বর নয়
42-এর মতো হ্যান্ডেল বর্তমান রুলসেট অবস্থার একটি শনাক্তকারী। এটি বিয়াল্লিশতম নিয়ম নয়, এবং হোস্ট, পুনর্নির্মাণ বা কনফিগারেশন পুনরায় লোড করা ম্যানেজারের মধ্যে এটি স্থির নয়।
অ্যাঙ্কর বেছে নেওয়ার আগে চেইনটি আর প্রকৃত চূড়ান্ত ড্রপটি খুঁজুন। তারপর ড্রপ দেখানো একই তালিকায় ওই নিয়মের হ্যান্ডেল নিশ্চিত করুন, যাতে নম্বর আর নিয়ম একসাথে পড়া যায়। পুরোনো তালিকা থেকে পড়া হ্যান্ডেল ইতিমধ্যে অন্য নিয়মের হতে পারে। যে সেশনে পরিবর্তন প্রয়োগ হবে সেই সেশনেই এটি আবার পড়ুন।
iptables --version
nft -a list ruleset
iptables সংস্করণ জানায় কোন ব্যাকএন্ড ব্যবহৃত হচ্ছে। একটি iptables-nft রুলসেট আর স্বতন্ত্রভাবে পরিচালিত নেটিভ টেবিল একসাথে থাকতে পারে, তাই এক ফ্রন্টএন্ডের তালিকা স্বয়ংক্রিয়ভাবে সম্পূর্ণ ফিল্টারিং চিত্র নয়। চেইন বেছে নেওয়ার আগে দুই দৃশ্যই যাচাই করুন।
যে চেইন আর নিয়ম সত্যিই ড্রপ করে তা খুঁজুন
input hook, চেইনের অগ্রাধিকার আর এই লিসেনার প্রবাহ প্রত্যাখ্যান করা নিয়মটি পড়ুন। একটি inet টেবিল দুই ঠিকানা পরিবারই বহন করতে পারে, তবে আলাদা নিয়ম এখনও কেবল IPv4-এর সাথে মিলতে পারে।
একটি অনুমোদিত পিয়ার নিন, উদাহরণ হিসেবে ডকুমেন্টেশন পরিসরের 198.51.100.25 ব্যবহার করে। একটি পর্যালোচিত নেটিভ ফাইল হ্যান্ডেল 42-এর আগে বহিঃস্থ অনুমোদন বসাতে পারে:
insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept
পরিদর্শনের পরে পরিবার, টেবিল, চেইন, হ্যান্ডেল, ইনগ্রেস ইন্টারফেস আর পিয়ার বদলান। উদাহরণটি nft 1.0.9-এর জন্য নথিভুক্ত হ্যান্ডেল-অবস্থান রূপ ব্যবহার করে, আর তা ইনপুট ফাইলে থাকা উচিত; কমান্ড ইন্টারঅ্যাকটিভভাবে লেখার সময় ব্রেস কোটিং আলাদা বিষয়।
কনফিগারেশনের মালিক স্পষ্ট রাখুন। যে ম্যানেজার নিজের নিয়ম পুনর্নির্মাণ করে সে রানটাইম সম্পাদনা উপরে লিখে দিতে পারে, আর বাসি হ্যান্ডেল হার্ডকোড করা বুট স্ক্রিপ্ট হয় ব্যর্থ হবে, নয়তো ভুল নিয়মে যুক্ত হবে।
অনুমোদন সীমিত, ড্রপ চূড়ান্ত
একটি অনুমোদন রায় তার বর্তমান পথে মূল্যায়ন শেষ করে, তবে পরে প্রযোজ্য কোনো বেস চেইন এখনও প্যাকেটটি ড্রপ করতে পারে। ড্রপ রায় চূড়ান্ত। এজন্য বাড়তে থাকা অনুমোদন কাউন্টার প্রবাহ সফল হওয়ার প্রমাণ নয়।
একটি চেইন আলাদাভাবে না দেখে সব প্রাসঙ্গিক hook অগ্রাধিকার পরীক্ষা করুন। একটি প্যাকেট input ফিল্টার পার হয়ে ভিন্ন অগ্রাধিকারে অন্য টেবিলের hook দ্বারা প্রত্যাখ্যাত হতে পারে। প্রবাহটি দেখতে পাওয়া প্রতিটি বেস চেইন তালিকাভুক্ত করুন।
এই নিয়মটি কেবল বহিঃস্থ লিসেনার বিনিময়কে কভার করে। ট্রান্সপোর্ট-এনক্যাপসুলেটেড ESP, নেটিভ ESP, IPv6 পিয়ার আর টানেলের ভেতরের ডিক্রিপ্ট হওয়া ট্রাফিকের সবগুলোরই নিজস্ব নীতি দরকার। এটি সম্পূর্ণ সাইট VPN ফায়ারওয়াল নয়।
ফাইল যাচাই করুন, তারপর লাইভ ফলাফল যাচাই করুন
প্রয়োগের আগে পর্যালোচিত ফাইলে সিনট্যাক্স আর ট্রানজ্যাকশন যাচাই চালান। চেক মোড জানায় nft পরিবর্তনটি পার্স আর স্টেজ করতে পারে কি না; এটি তা প্রয়োগ করে না এবং অন্য hook প্যাকেটটি অনুমোদন করবে তার প্রমাণ দেয় না। মালিক প্রয়োগ না করা পর্যন্ত ফাইলটি একটি প্রস্তাবই থাকে:
nft -c -f reviewed-vpn-rule.nft
মালিকের নিয়ন্ত্রিত প্রক্রিয়ায় প্রয়োগ করুন আর পুনরুদ্ধার প্রবেশাধিকার সংরক্ষণ করুন। নিয়মটি ভুল হলে যে ড্রপের আগে আপনি যেতে চেয়েছিলেন সেটিই আপনার সংশোধনের পথ কেটে দিতে পারে।
পরিবর্তনের পরে একটি নতুন অনুমোদিত পিয়ার প্রচেষ্টা পর্যবেক্ষণ করুন আর যাচাই করুন যে অনুমোদিত পিয়ারের বাইরের উৎস এখনও প্রত্যাখ্যাত হচ্ছে। টেকসই নিয়মটি যে ম্যানেজার রুলসেটের মালিক তার কাছে সরান, কারণ রানটাইম হ্যান্ডেল বর্তমান অবজেক্ট খুঁজে পায়, বুটের পরেও তাদের শনাক্ত করে না।