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

একটি SSH প্রচেষ্টাকে ইনপুট হুক পর্যন্ত অনুসরণ করুন

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

এরপর শ্রোতাটি যাচাই করুন, কারণ যে সেবা নেই তাকে কোনো নিয়ম বাঁচাতে পারে না। ss -ltnp চালান এবং আপনি যে পোর্ট ও ঠিকানা-পরিবার আশা করেন তাতে কিছু বাঁধা আছে কি না দেখুন, তারপর ক্লায়েন্টে ssh -v পড়ে দেখুন কোথায় থামে।

ফরওয়ার্ডিং একটি আলাদা সিদ্ধান্ত

একটি VPN সার্ভারে বেশি আগ্রহের হুকটি হল forward, কারণ ক্লায়েন্টের ট্রাফিক মেশিনে পৌঁছে দেওয়া হয় না, বরং তার মধ্য দিয়ে রুট করা হয়। যে হোস্ট কেবল নিজের VPN ক্লায়েন্ট চালায় তার অন্য মানুষের প্যাকেট পাঠানো হোস্টের চেয়ে অনেক ছোট নিয়মের সেট দরকার। দুটি নকশা এক বাক্সে মেশালে এমন নিয়ম তৈরি হয় যা ঠিক দেখায় কিন্তু কিছুই পার করে না।

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

ড্রপ আর রিজেক্ট কাজ, নীতি নয়

বেস চেইনের নীতি গ্রহণ করে বা ফেলে দেয়, এবং এটাই পুরো তালিকা, যেমনটি nftables রেফারেন্স বলছে। রিজেক্ট বিদ্যমান একটি নিয়ম-কাজ হিসেবে যার একটি বেছে নেওয়া উত্তর আছে, তাই এটি নীতি হিসেবে লিখলে nftables আর iptables দুটোতেই ব্যর্থ হয়। বাস্তবে একটি drop ক্লায়েন্টকে কোনো তথ্য দেয় না, আর একটি reject তাকে একটি ত্রুটি দেয় যা নিয়ে সে কাজ করতে পারে।

table inet admin {
    chain input {
        type filter hook input priority filter; policy drop;
        ct state established,related accept
        ip saddr 203.0.113.0/28 tcp dport 22 accept
        udp dport 51820 accept
        icmp type { destination-unreachable, time-exceeded } accept
    }
}

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

আপনার সত্যিই প্রয়োজনীয় নিয়ন্ত্রণ ট্রাফিক রাখুন

সব ICMP ব্লক করা একটি জনপ্রিয় ডিফল্ট যা পাথ MTU ডিসকভারি ভাঙে, আর উপসর্গ হল এমন সংযোগ যা প্রতিষ্ঠিত হয় তারপর বড় প্যাকেটে আটকে যায়। IPv6-এ প্রতিবেশী ডিসকভারি তার নিজস্ব ICMPv6 ধরনের উপর নির্ভর করে, আর সেগুলি ফেলে দিলে কোনো TCP নিয়ম দেখার আগেই লিঙ্ক ভেঙে যায়। দুটোই নামকরণ করা নির্ভরতা হিসেবে অ্যালাউলিস্টে থাকা উচিত, সর্বব্যাপী অনুমতি হিসেবে নয়। যে নীতি চুপচাপ ডিসকভারি ভাঙে, সেটি অল্প ডায়াগনস্টিক ট্রাফিক ঢুকতে দেওয়া নীতির চেয়েও খারাপ।

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

পুরোনো পথ ছাড়ার আগে পুনরুদ্ধার প্রমাণ করুন

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

একটি VPN সেবার জন্য, এমন ক্লায়েন্ট থেকে পুনরাবৃত্তি করুন যে কখনো সংযোগ করেনি, কারণ পুনরায় শুরু হওয়া সেশন এমন অবস্থা ব্যবহার করতে পারে যা নতুন সেশনকে দরকষাকষি করতে হয়। যে নিয়মের সেট পাস করেছে তা হুবহু লিখে রাখুন, একটি চেকসাম বা কপি সহ, যাতে পরের সম্পাদনা অনুমান নয়, তুলনা করা যায়। নিয়মের ক্রম যার মালিক তার সঙ্গে সমন্বয় করুন, কারণ আগের একটি নিয়ম নীরবে আপনার যোগ করা নিয়মকে হারিয়ে দেয়।

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