প্রতিটি উন্মুক্ত সেবা একই পরামর্শ পায়: তার উপর fail2ban বসান। VPN গেটওয়ের ক্ষেত্রে এই পরামর্শ ভুলও নয়, যথেষ্টও নয়, আর এটিকে কেবল একটি হার্ডেনিং টিক হিসেবে ধরা—এই কারণেই মানুষ এমন jail নিয়ে শেষ করে যা কাজের কিছুই আটকায় না। Fail2ban আপনার দেখানো ব্যর্থতার রেকর্ড পড়ে এবং মিলে যাওয়া উৎস নিষিদ্ধ করতে একটি এনফোর্সমেন্ট ব্যাকএন্ডকে বলে। এর পুরো মূল্য নির্ভর করে কোন প্রমাণীকরণ পৃষ্ঠতল রেকর্ডটি তৈরি করেছে, সেখানে থাকা ঠিকানাটি আসল ক্লায়েন্ট কি না, এবং সেই ঠিকানার পেছনের বাকি সবার কী হয়, তার উপর।

যান্ত্রিকভাবে fail2ban কী

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

তিনটির কোনোটিই প্রমাণীকরণের পথ স্পর্শ করে না: fail2ban ঘটনার পরে প্রমাণে সাড়া দেয় এবং নিজে কখনও কোনো পরিচয়পত্র যাচাই করে না। তাই jail নির্ভুলভাবে চলতে পারে, অথচ যে পৃষ্ঠতলের নাম এটি বলে, সেটি আগের মতোই উন্মুক্ত থাকে।

টানেল লিসেনার কোনো লগইন ফর্ম নয়

OpenVPN লিসেনার যদি tls-auth বা tls-crypt দিয়ে সুরক্ষিত থাকে, তবে সাধারণ TLS প্রক্রিয়া শুরুর আগেই কন্ট্রোল-চ্যানেল সুরক্ষা নেই এমন প্যাকেট ফেলে দেয়। যে স্ক্যানারের কখনও কী থাকে না, সে আপনার ফিল্টার গুনতে পারে এমন কিছুই তৈরি করে না। সার্টিফিকেট প্রমাণীকরণ আরেকটি দরজা যোগ করে, কারণ অনুমান করার মতো কোনো পাসওয়ার্ড নেই। Fail2ban প্রকল্প একটি সাধারণ লগ-চালিত মডেল নথিভুক্ত করে, আর একটি সাধারণ VPN ফিল্টার অননুমোদিত প্যাকেটকে অর্থবহ ব্যর্থতার ঘটনায় পরিণত করে না।

যদি গেটওয়ে কেবল সার্টিফিকেট গ্রহণ করে, তবে আপনি যে ব্রুট-ফোর্সের গল্পের বিরুদ্ধে লড়ছেন, সেটি ওই পোর্টে আদৌ নাও থাকতে পারে।

তাহলে আপনি কোন পৃষ্ঠতল রক্ষা করছেন?

একই হোস্ট প্রায়ই তিনটি ভিন্ন জিনিস উন্মুক্ত করে: টানেল লিসেনার, ক্লায়েন্ট-প্রোফাইল বা স্ব-সেবা পোর্টাল, এবং একটি প্রশাসন পৃষ্ঠা। পোর্টাল ও প্রশাসন পৃষ্ঠায় পাসওয়ার্ড ফর্ম থাকে এবং ফিল্টার গুনতে পারে এমন লগ লাইন তৈরি করে। টানেল হয়তো কেবল হ্যান্ডশেক ত্রুটি তৈরি করে, যার অর্থ সম্পূর্ণ ভিন্ন কিছু। jail-কে পণ্যের নামের সাথে নয়, পৃষ্ঠতলের সাথে মেলান।

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

উৎস নির্ধারণই দুর্বল কড়ি

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

jail-এর README-তে উৎস নির্ধারণের পদ্ধতি লিখে রাখুন, কারণ অবিশ্বস্ত হপ থেকে আসা ফরওয়ার্ডেড হেডার নিষেধাজ্ঞাকে অস্ত্রে পরিণত করে।

পার্শ্বক্ষতি হলো অন্য মানুষ

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

সংক্ষিপ্ত নিষেধাজ্ঞা ও সংযত সীমা তা কমায়, আর নথিভুক্ত আনব্যান পথ তবুও ঘটে গেলে সহায়তা-ভার কমায়। ঠিকানাটি একটি মোটা সংকেত, কোনো পরিচয় নয়, আর টিকেট খোলা ব্যক্তি সীমা নয়, বিভ্রাটের বর্ণনা দেবেন।

কখন এটি নেবেন, আর কখন অন্য কিছু ঠিক করবেন

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

প্রতিটি jail একটি পৃষ্ঠতলের সাথে বাঁধা রাখুন, ভুল পজিটিভ পর্যালোচনা করুন, আর নিষিদ্ধ ঠিকানার সংখ্যা নয়—এড়ানো প্রমাণীকরণ-কাজ মাপুন।

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