একটি ডিনাই নিয়ম যোগ করে একটি খোলা ডাউনলোড চলতে থাকা দেখা UFW-এর বাগ নয়। আপনি যে নিয়মটি যোগ করেছেন তা যে নিয়মগুলো ইতিমধ্যে এই ফ্লো গ্রহণ করেছে তার পরে বসে, আর আগে প্রতিষ্ঠিত হওয়া একটি সংযোগ তাদের সঙ্গে মিলতে থাকে। এটি ঠিক করতে হলে সঠিক অবস্থানে সন্নিবেশ করতে হবে এবং আগের নিয়মগুলো কী প্রতিশ্রুতি দেয় তা বুঝতে হবে। এই পরিবর্তনের সংকীর্ণ রূপটিই নিচে।

নিয়মের অস্তিত্ব নয়, ক্রমই নির্ধারণ করে

UFW হলো এমন একটি ফ্রন্ট এন্ড যা netfilter নিয়ম ধাপে ধাপে লেখে: ব্যবহারকারীর নিয়মের আগে চলা একটি ফ্রেমওয়ার্ক অংশ, তারপর ব্যবহারকারীর নিয়মগুলো নিজে, তারপর তাদের পরে চলা একটি অংশ। ডিফল্ট আগের নিয়মগুলো প্রতিষ্ঠিত ও সংশ্লিষ্ট সংযোগের ট্রাফিক গ্রহণ করে, এবং আপনার সাধারণ allow বা deny দিয়ে যোগ করা যেকোনোকিছুর আগেই সেই নিয়মগুলো মূল্যায়িত হয়। UFW কমান্ড রেফারেন্স সন্নিবেশের সিনট্যাক্স এবং এই পরিবর্তন যে নম্বরযুক্ত স্ট্যাটাস ভিউয়ের উপর নির্ভর করে তা নথিভুক্ত করে।

এই ক্রমই বিস্ময়ের ব্যাখ্যা। আপনার নতুন নিয়ম বাস্তব এবং এটি সঠিক টেবিলেই আছে, কিন্তু প্যাকেটের সামনে পড়া প্রথম সিদ্ধান্ত এটি নয়। ইতিমধ্যে প্রতিষ্ঠিত হিসেবে ট্র্যাক করা একটি সংযোগ কখনও এখানে পৌঁছায় না।

এই কাজে route নিয়ম ব্যবহার করুন, কারণ প্যাকেটটি গেটওয়ের নিজস্ব সেবার উদ্দেশ্যে নয়, বরং গেটওয়ের মধ্য দিয়ে ফরওয়ার্ড হচ্ছে। একটি ইনপুট নিয়ম ভুল ট্রাফিক ফিল্টার করত এবং কিছুই করছে না বলে মনে হতো।

প্রশস্ত অনুমতির উপরে সন্নিবেশ করুন

প্রয়োগের আগে সন্নিবেশের পূর্বরূপ দেখুন এবং নিশ্চিত করুন যে নিয়মটি তালিকার অন্য কোথাও আগে থেকেই নেই। একই নীতির নকল করা পরে অপসারণকে দ্ব্যর্থক করে তোলে, আর ভুল কপিটি যে সরাবে সে সপ্তাহের পর সপ্তাহ খেয়াল করবে না।

sudo ufw --dry-run route insert 1 deny in on tun0 proto tcp from 10.88.0.55/32 to 192.0.2.88/32

পূর্বরূপে যদি আপনি যে অবস্থান আশা করছেন সেখানে ঠিক একটি নিয়ম দেখায়, তবে dry-run ফ্ল্যাগ ছাড়াই একই কমান্ড প্রয়োগ করুন। অবস্থান 1 এটি প্রশস্ত ব্যবহারকারী অনুমতির উপরে রাখে, আগে আলোচিত ফ্রেমওয়ার্ক নিয়মের উপরে নয়। নিশ্চিত করুন যে ইন্টারফেসের নাম এই গেটওয়ের টানেল ডিভাইসের সঙ্গে মেলে, কারণ যে ইন্টারফেস আর নেই তার সঙ্গে যুক্ত নিয়ম তালিকায় সঠিক দেখিয়ে কিছুই মিলবে না। প্রয়োগের আগেই ডিভাইস রেফারেন্স বদলান, পরীক্ষা ব্যর্থ হওয়ার পরে নয়।

সেই নিয়মে কোনো গন্তব্য পোর্ট নেই, তাই এটি শুধু HTTPS নয়, ওই ঠিকানার প্রতিটি TCP পোর্টই ডিনাই করে। যদি উদ্দেশ্য একটিমাত্র সেবা হয়, পোর্টের নাম দিন; নীতির চেয়ে প্রশস্ত নিয়ম হলো প্রথম পাঠকের অপেক্ষায় থাকা ভবিষ্যৎ ঘটনা।

উৎসকে একটিমাত্র ঠিকানায় সীমিত করুন কেবল যদি সেই ঠিকানা উদ্দিষ্ট পরিচয়ের সঙ্গে বাঁধা থাকে। গতিশীল বণ্টনসহ একটি VPN পুল আগামীকাল একই ঠিকানা অন্য ক্লায়েন্টকে দিতে পারে, আর ডিনাই ব্যক্তির বদলে ঠিকানাকে অনুসরণ করবে।

প্রতিষ্ঠিত ফ্লো নতুন নিয়মেও টেকে

সংযোগ ট্র্যাকিংই বিদ্যমান সেশন চালু থাকার কারণ। কোনো ফ্লো প্রতিষ্ঠিত হিসেবে লিপিবদ্ধ হলে আগের নিয়মগুলো আপনার ডিনাই দেখার আগেই তার প্যাকেট গ্রহণ করে, আর স্থানান্তরটি কিছুই বদলায়নি এমনভাবে শেষ হয়। তাই খোলা সংযোগ পুনর্ব্যবহার করা ব্রাউজার দিয়ে পরীক্ষা নতুন নীতি সম্পর্কে কিছুই বলে না। ডিনাই মোতায়েনের কয়েক মিনিট পরেই অকেজো মনে হতে পারে, আবার পরের যে ব্যবহারকারী সংযোগ করবে তার জন্য সম্পূর্ণ কার্যকর হতে পারে।

যদি প্রয়োজনীয়তার মধ্যে চালু ট্রাফিক কাটা থাকে, এই ব্যবহারকারী-নিয়ম পরিবর্তন তা দিতে পারে না। ট্র্যাক করা অবস্থা প্রত্যাহার একটি আলাদা কাজ, যার নিজস্ব প্রভাব-পরিধি আছে, এবং তা নিয়ম যোগকারীর নয়, ফায়ারওয়াল মালিকের। একটি সেশন অদৃশ্য করতে গেটওয়ের প্রতিটি সংযোগ ফ্লাশ করা হলো এমন সমাধান যা দ্বিতীয় ঘটনা তৈরি করে।

সীমারেখাও মনে রাখুন। এই নিয়ম ICMP, UDP বা IPv6 সম্পর্কে কিছু বলে না, তাই সফল ping ডিনাই ব্যর্থ হওয়ার প্রমাণ নয়। একটি IPv4 ঠিকানাও কোনো ওয়েবসাইট নয়: একটি নাম একাধিক ঠিকানায় রিজলভ হতে পারে, আর আপনি যে নাম দিয়েছেন কেবল সেটিই আওতায় আছে।

নতুন ফ্লো দিয়ে পরীক্ষা করুন

নম্বরযুক্ত ব্যবহারকারী নিয়ম এবং কার্যকর raw ভিউ পড়ুন, তারপর নির্বাচিত ক্লায়েন্ট থেকে একটি নতুন সংযোগ খুলুন:

sudo ufw status numbered
sudo ufw show raw
# from 10.88.0.55, a new TCP connection to 192.0.2.88 should fail

raw ভিউ গুরুত্বপূর্ণ কারণ status হাতে লেখা ফ্রেমওয়ার্ক নিয়ম বাদ দেয়, তাই ক্রম কার্নেল যা প্রয়োগ করে তার থেকে আলাদা দেখাতে পারে। একটি নিয়ম ভুল জায়গায় আছে বলে সিদ্ধান্তে আসার আগে দুটোই মিলিয়ে দেখুন।

তারপর দুটি নিয়ন্ত্রণ পরীক্ষা করুন যা প্রমাণ করে নিয়মটি সংকীর্ণ, প্রশস্ত নয়: একই ক্লায়েন্ট থেকে অনুমোদিত গন্তব্য এখনও কাজ করে, এবং দ্বিতীয় একটি ক্লায়েন্ট এখনও ডিনাই করা গন্তব্যে পৌঁছায় যদি তার নীতি তা অনুমোদন করে। যে ডিনাই দুটি পরীক্ষাই ভাঙে তা লক্ষ্যভিত্তিক নয়, নীতি পরিবর্তন।

পরীক্ষা শেষ হলে কেবল আপনার যোগ করা নিয়মটিই সরান, ঠিকভাবে পুনরুক্ত করে। নীতিটি স্থায়ী হলে ক্লায়েন্ট পরিচয়, গন্তব্যের মালিক এবং পর্যালোচনার তারিখসহ তা ফায়ারওয়াল মালিকের হাতে দিন, যাতে পুনরায় নির্ধারিত টানেল ঠিকানা পুরোনো ডিনাই রেখে না যায়।

সম্পর্কিত নিবন্ধ