মহাসড়কে ভ্রমণে গিয়েছেন কখনো? না গেলেও সমস্যা নেই। ধরুন আপনি একটি গাড়িতে চড়ে মহাসড়ক দিয়ে আপনার গন্তব্যের দিকে যাচ্ছেন। এখন যদি রাস্তা ফাঁকা থাকে বা খুবই স্বল্প সংখ্যক গাড়ি থাকে, তাহলে নিশ্চয়ই যাত্রাপথে আপনার কোথাও দাঁড়াতে হবে না। আপনি বেশ নির্বিঘ্নেই কিন্তু আপনার গন্ত্যব্যে পৌঁছুতে পারবেন।
কিন্তু রাস্তায় যদি আরো অনেক গাড়ি থাকে? যদি আরো হাজার হাজার গাড়ি একই সময়ে একই রাস্তা দিয়ে যাওয়ার চেষ্টা করে, তাহলে? বুঝতেই পারছেন রাস্তায় তীব্র যানজট তৈরি হবে এবং আপনি যেতে পারবেন না।
গাড়ির যানজট
এখন এখানে মহাসড়কের পরিবর্তে আপনার গাড়িকে একটি ডাটা প্যাকেট, মহাসড়ককে ব্যান্ডউইথ, আপনাকে ইউজার এবং আপনার গন্তব্যকে একটি সুনির্দিষ্ট ওয়েবসাইট হিসাবে কল্পনা করি। প্রতিটা ওয়েবসাইটের একটি ঠিকানা থাকে, ঠিক যেমন শহরের প্রতিটা বাড়ির নাম্বারিং করা থাকে। কোন এলাকায় বাড়ি, কোন রাস্তায় এবং বাড়ির নম্বর কত অনেকটা তেমন, যাতে আপনি এক বাড়ির সাথে অন্য কোনো বাড়িকে গুলিয়ে না ফেলেন। ওয়েবসাইটের ক্ষেত্রেও ব্যাপারটা অনেকটা সেরকমই। প্রতিটা ওয়েবসাইটের জন্য একটি করে সুনির্দিষ্ট আইপি ঠিকানা (IP Address) বরাদ্দ থাকে। এই আইপি ঠিকানা দিয়েই শনাক্ত করা হয় আপনি কোন ওয়েবসাইটে যেতে চেষ্টা করছেন। তবে যেহেতু আইপি ঠিকানা অনেকের কাছেই কাঠখোট্টা সংখ্যা মনে হতে পারে, তাই মনে রাখার সুবিধার জন্য আমরা ওয়েবসাইটের সুন্দর নাম রাখি, ঠিক যেমনটা প্রতিটা বাড়ির ঠিকানা ছাড়াও একটা নাম থাকে। তবে এক্ষেত্রে পার্থক্যটা হলো, ওয়েবসাইটের জন্য একই বানানের নাম শুধুমাত্র একটি ওয়েবসাইটেরই হতে পারবে, একাধিক নয়। এবং এই নামের বিপরীতে প্রতিটা ওয়েবসাইটের আইপি ঠিকানা মিল করা থাকে, যেমন- আপনি একজন শিক্ষার্থী, আপনার নাম হাসান, এবং আইডি নাম্বার হলো ১৫১৬৩১০৩০০। তবে এক্ষেত্রে আগেই বলেছি, ওয়েব সাইটের নামটাও অনন্য হতে হয়। সেই সাথে আইপি ঠিকানাও হতে হবে অনন্য। যেমন, www.bigganjatra.org এবং বিজ্ঞানযাত্রা ওয়েবসাইটের আইপি ঠিকানা হোলো ৯৫.২১৫.২২৫.১৫ । আপনি কিন্তু চাইলে ব্রাউজারে সরাসরি আইপি ঠিকানা লিখেও ওয়েব সাইটে প্রবেশ করতে পারবেন, যদি একটা সার্ভারে একটা মাত্র ওয়েবসাইট নিবেদিতভাবে হোস্ট করা থাকে।
আপনি যখন কোনো ওয়েবসাইটে প্রবেশের জন্য ঠিকানা বাক্সে ওয়েবসাইটের নামটা লেখেন এবং প্রবেশ বোতাম চাপেন, তখন আপনার অনুরোধটা ব্রাউজার প্রথমে ডোমেইন নেইম সার্ভারে পাঠায়, ডোমেইন নেইম সার্ভারের কাছে কোন নামের ওয়েবসাইটের আইপি ঠিকানা কী, তার একটা তালিকা থাকে। তারপর আপনার নামটা সেখানে খুঁজে দেখা হয় এবং আপনার নামের সাথে আগের থেকে ম্যাপ করে রাখা আইপি ঠিকানা খুঁজে দেখা হয়। তারপর সেই আইপি ঠিকানায় আপনার অনুরোধটা পাঠিয়ে দেওয়া হয়। অনেকটা স্কুলের নিবন্ধন বই দেখে খুঁজে বের করা যে, এই নামের শিক্ষার্থী কোন ক্লাসের কোন সেকশনে পড়ে। যেহেতু ওয়েবসাইটের নাম এবং আইপি ঠিকানা দুটিই সুনির্দিষ্ট হয়ে থাকে, তাই একই নামের অনেকের সাথে জগাখিচুড়ি পাকানোর সম্ভাবনাও এখানে নেই।
অনেক ব্যবহারকারী যদি একটা ওয়েবসাইট একই সাথে ভিজিটের চেষ্টা করে, তাহলে যেটা হয় তা হলো, ওয়েব সাইটের ব্যান্ডউইথ–এর উপর চাপ পড়ে, ব্যান্ডউইথ হলো হাইওয়ের মতন। অর্থাৎ এক সাথে কতগুলো গাড়ি যেতে পারবে। আর কম্পিউটারের ভাষায় যদি বলি তাহলে, Bandwidth (ব্যান্ডউইথ) বলতে একটি নেটওয়ার্ক বা ইন্টারনেট কানেকশনের মধ্য দিয়ে কি পরিমাণ ডাটা প্রেরিত হচ্ছে তা বোঝায়। এটি সাধারণত “বিটস পার সেকেন্ড (bps)” দ্বারা পরিমাপ করা হয়। যত বেশি ব্যান্ডউইথ, তত বেশি ব্যবহারকারী একসাথে একটি ওয়েব সাইট পরিদর্শন করতে পারবে।
প্রতিটা ওয়েবসাইটকে ব্যান্ডউইথ কিনে নিতে হয়। অনেকটা মহাসড়ক কতটা প্রশস্ত হবে সেরকম। যত বেশি প্রশস্ত রাস্তা, তত বেশি সংখ্যক গাড়ি একই সাথে চলাচল করতে পারবে।
সাধারণ ওয়েবসাইটগুলোর জন্য খুব বেশি সংখ্যক দর্শনার্থী একই সাথে থাকে না। তাই ওয়েবসাইটগুলোও অযথা বেশি টাকা খরচ করে অনেক অনেক ব্যান্ডউইথ কিনে ফেলে রাখে না। তবে বিশেষ বিশেষ দিনে দর্শনার্থী সংখ্যা বেড়ে যেতে পারে। যেমনটা হয় আমাদের দেশে, যেদিন কোনো পাবলিক পরীক্ষার ফলাফল প্রকাশ পায়। সেদিন সবাই মিলে একই সাথে ফলাফল দেখার জন্য ওয়েবসাইটে প্রবেশের চেষ্টা করে এবং ব্যান্ডউইথ ও ওয়েবসাইটের অন্যান্য সম্পদ, যেমন- প্রসেসরের প্রক্রিয়াকরণ ক্ষমতা, র্যাম মেমরি ইত্যাদির উপর চাপ বেশি পড়ায় ওয়েব সাইটে কেউই প্রবেশ করতে পারেন না।
কিন্তু এক্ষেত্রে সবাই আলাদা আলাদা মানুষ এবং বৈধ ব্যবহারকারী। কিন্তু এমন যদি হয়, কোনো হ্যাকার বা আক্রমণকারী কোনো উপায়ে যদি বৈধ ব্যাবহারকারীর মতন ওয়েবসাইটে ভুয়া অনুরোধ পাঠাতে থাকে তাহলে? তাহলেও কিন্তু ওয়েব সাইটের ব্যান্ডউইথের উপর চাপ পড়বে এবং ওয়েবসাইটটি সাময়িক অচল হয়ে যাবে। তখন কোনো বৈধ ব্যবহারকারীও যদি ওয়েবসাইটে প্রবেশ করতে চায়, তাহলে সে কিন্তু সেটা পারবে না। এই ধরণের আক্রমণকে বলা হয় ডিনাইয়াল অভ সার্ভিস অ্যাটাক বা সেবাদানের বাধা প্রদানকারী আক্রমণ। সংক্ষেপে DoS আক্রমণ, আর এটা যদি করা হয় অনেকগুলো কম্পিউটার, মোবাইল বা ডিভাইস ব্যবহার করে, তখন সেটাকে বলা হয় ‘ডিস্ট্রিবিউটেড ডিনাইয়াল অভ সার্ভিস‘ সংক্ষেপে DDoS আক্রমণ।
কীভাবে করা যায় এই ধরণের আক্রমণ ?
এই আক্রমণ চালানোর একটা বেশ জনপ্রিয় পদ্ধতি হলো বাইরে থেকে ঐ সিস্টেম বা সাইটের সাথে যোগাযোগের জন্য অসংখ্য বার্তা পাঠাতে থাকা। একটি বার্তা বিশ্লেষণ করতে করতে আরো বেশ কয়টি বার্তা যদি এসে পড়ে, তখন ঐ সিস্টেমটি আক্রমণকারীর পাঠানো বার্তা বিশ্লেষণেই ব্যস্ত থাকে এবং প্রকৃত ব্যবহারকারীরা ধীর গতির সম্মুখীন হন।
ডিনাইয়াল অফ সার্ভিস আক্রমণের প্রধান দুটি মাধ্যম হলো-
- আক্রমণের লক্ষ্য কম্পিউটারকে রিসেট করে দেয়া, অথবা তার সীমিত সম্পদকে ব্যবহার করে অন্যদের ব্যবহারের অযোগ্য করে ফেলা
- আক্রমণের লক্ষ্য যে সিস্টেম বা ওয়েবসাইট, তার সাথে প্রকৃত ব্যবহারকারীদের যোগাযোগের মাধ্যম বন্ধ করে দেওয়া
একজন আক্রমণকারী যেটা করেন তা হলো, ভাইরাস বা ম্যালওয়্যার তৈরি করে সেটা ছড়িয়ে দেন। এগুলোকে বলা হয় ‘বট‘ বা ‘জম্বি‘। এই ম্যালওয়্যারগুলো যেসব কম্পিউটার বা ডিভাইস এ ঢুকে পড়ে, সেইসব ডিভাইসের সম্পূর্ণ বা আংশিক নিয়ন্ত্রণ ম্যালওয়্যারের মাধ্যমে আক্রমণকারী নিয়ে নেন। এরকম যদি অনেক অনেক ডিভাইস ম্যালওয়্যার দ্বারা সংক্রমিত হয়, তাহলে জম্বি সেনাবাহিনী তৈরি হয়। একে বটনেট বলে।
একবার বটনেট প্রতিষ্ঠিত হয়ে গেলে আক্রমণকারী দূরবর্তী নিয়ন্ত্রণের কোনও পদ্ধতির মাধ্যমে প্রতিটি বটকে আপডেট নির্দেশনা প্রেরণের মাধ্যমে আক্রান্ত মেশিনগুলিকে পরিচালনা করতে সক্ষম হয়। বটনেট দ্বারা যখন কোনো লক্ষ্য করা ওয়েবসাইটের আইপি ঠিকানা চিহ্নিত করা হয়, তখন প্রতিটি বট ঐ ওয়েব সাইটে অনুরোধ (রিকোয়েস্ট) পাঠাতে থাকে। তাই স্বাভাবিকভাবেই সেই ওয়েব সাইটের ব্যান্ডউইথ বা অন্যান্য পরিষেবার উপরে চাপ তৈরি হয় এবং ওয়েবসাইটটি অচল হয়ে যায়। যেহেতু প্রতিটি বট আলাদা আলাদা সত্যিকারের ডিভাইস থেকে অনুরোধ পাঠাতে থাকে, তাই তাদেরকে বৈধ ব্যবহারকারী বলেই মনে হয়।
‘HTTP Flood’ আক্রমণ
HTTP Flooding Attack
কয়েক ধরণের ‘ডিনাইয়াল অভ সার্ভিস’ আক্রমণের মধ্যে একটি হোলো ‘HTTP Flood‘ আক্রমণ। এই আক্রমণটি একই সাথে অনেকগুলি আলাদা কম্পিউটারে একই ওয়েবসাইটে পরিদর্শনের পর বার বার ওয়েব ব্রাউজারে রিফ্রেশ বোতাম টেপার মতন অনুরূপ। বিপুল সংখ্যক এইচটিটিপি (HTTP) অনুরোধের (রিকোয়েস্ট) দরুন সার্ভার অনুরোধের বন্যায় ভেসে যায়, যার ফলে সার্ভারের পরিষেবা ব্যহত হয়। এই ধরণের আক্রমণ কয়েকটি আইপি এড্রেস এবং একই ধরণের ব্রাউজারের মাধ্যমে বা অনেক বড় ব্যাপ্তির আইপি ঠিকানা থেকে অনেক ধরণের ব্রাউজার ব্যবহার করে করা যেতে পারে।
‘SYN Flood’ আক্রমণ
SYN Flood Attack
‘SYN Flood’ আক্রমণকে অনেকটা একটা দোকানের অর্ডার নেওয়া এবং অর্ডার নেওয়া নিশ্চিত করার পর পণ্য সরবরাহের সাথে তুলনা করা যেতে পারে। কিন্তু যদি এমন হয়, পণ্য সরবরাহ করার বা অর্ডার নিশ্চিত করার আগেই অনেক বেশি সংখ্যক অর্ডার পেয়ে যায় এবং এতো বেশি সংখ্যক অর্ডার পায়, যা দোকানী বহন করতে পারবে না; অর্ডার নেওয়ার ব্যবস্থা সেক্ষেত্রে অচল হয়ে পড়ে এবং নতুন কোনো অর্ডার নিতে ব্যর্থ হয়।
টিসিপি হ্যান্ডশেক প্রক্রিয়ার দুর্বলতাকে কাজে লাগিয়ে এই ধরণের আক্রমণ করা হয়। টিসিপি হ্যান্ডশেক ব্যবস্থায় ব্যবহারকারীর ব্রাউজার সার্ভারকে একটি অনুরোধ পাঠায় সার্ভারের সাথে সংযোগ পাবার জন্য, সার্ভার তখন প্রতিটি অনুরোধের বিপরীতে একটি ফিরতি বার্তা পাঠায় এবং অপেক্ষা করে ব্যবহারকারীর সাথে চুড়ান্ত হ্যান্ডশেক করার জন্য। কিন্তু এক্ষেত্রে ব্যবহারকারী আর কোনো নতুন বার্তা না পাঠিয়ে চুপ করে থাকে, কিন্তু ওয়েব সার্ভার বসে থাকে এই আশায় যে ব্যবহারকারী হয়তো নতুন বার্তা পাঠাবে। এক সাথে এরকম অনেক গুলো টিসিপি অনুরোধ সার্ভারে জমা হয়ে গেলে সার্ভার তখন আর নতুন কোনো অনুরোধ নিতে পারে না এবং অচল হয়ে পড়ে।
‘স্মার্ফ অ্যাটাক’ (Smurf attack)
Smurf Attack
Smurf attack আক্রমণের সময়ে আক্রমণকারী সরাসরি ভিক্টিম ওয়েবসাইটে আক্রমণ না করে ওয়েবের হাজার হাজার সাইটে পিং (PING) বার্তা পাঠায়। (সংযোগ ঠিক আছে কি না, তা পরীক্ষা করার জন্য PING ব্যবহৃত হয়। এই বার্তা কোনো কম্পিউটারে পাঠালে ঐ কম্পিউটার বার্তার জবাবে আরেকটি বার্তা প্রেরক কম্পিউটারে পাঠায়)। তবে আক্রমণকারী পিং পাঠানোর আগে কারসাজি করে বার্তার প্রেরকের নাম পাল্টে দেয়, অর্থাৎ প্রেরকের ঠিকানার অংশে নিজের কম্পিউটারের আইপির বদলে ভিক্টিমের সাইটের আইপি দিয়ে দেয়। ফলে হাজার হাজার সাইট যখন এই পিং বার্তার জবাব দিবে, তখন সেই জবাব গুলো চলে যাবে ভিক্টিমের কম্পিউটারে। একই সময়ে আসা এই হাজার হাজার বার্তা গ্রহণ করতে করতে ভিক্টিমের কম্পিউটার আসল গ্রাহকদের সাথে যোগাযোগ করার সময় পাবে না। ফলে ওয়েবসাইটটিতে যারা ঢুকতে যাবেন, তারা ব্যর্থ হবেন।
আরো অনেক ধরণের ডিনাইয়াল অভ সার্ভিস আক্রমণ আছে। প্রতিবছর অনেক অনেক ওয়েব সাইট এ ধরনের আক্রমণের শিকার হয়।
কীভাবে ‘ডিস্ট্রিবিউটেড ডিনাইয়াল অভ সার্ভিস’ আক্রমণ প্রতিরোধ করা যায়
আগুনের দেয়াল বানিয়ে রাখা (Activate a WAF)
Firwall
‘গেম অব থ্রোনস’-এর মেলিসান্দ্রের মতন মন্ত্র পড়ে আগুনের দেয়াল (Firewall) তৈরি করে রাখা, যাতে জম্বি বাহিনী সেই দেয়াল টপকাতে না পারে। তবে ওয়েবের ক্ষেত্রে ফায়ারওয়াল হলো এমন এক ব্যবস্থা, যেখানে নির্দিষ্ট দরজা (Port) থাকে, যাতে দরজার বাইরে অন্য কোনো যায়গা দিয়ে কেউ ঢুকে পড়তে না পারে।
দেশভিত্তিক পরিষেবা বন্ধ রাখা
আপনার ওয়েব সাইটটি যদি এমন হয় যে সেটি শুধু মাত্র আঞ্চলিক ব্যবহারকারীদের জন্য তৈরি; যেমন- একটি দোকান, যেটা শুধু দেশের ভিতরেই পণ্য সরবরাহ করে থাকে, তাহলে অন্যান্য সব দেশ থেকে যেন ওয়েবসাইটে পরিদর্শন না করা যায়, সেই ব্যবস্থা চালু রাখা। তবে এটা খুব একটা কার্যকর ব্যবস্থা নয়।
ওয়েবসাইট ট্র্যাফিক নিরীক্ষণ (Interpreting Website Traffic)
কী পরিমাণ দর্শনার্থী (visitor) আপনার ওয়েবসাইটে প্রতিদিন বা প্রতি মিনিটে পরিদর্শন (visit) করতে পারে, তার একটা পূর্ব ধারণা আপনার নিশ্চয়ই আছে। তাই হঠাৎ করে যদি দেখা যায় দর্শনার্থী সংখ্যা অস্বাভাবিক ভাবে বৃদ্ধি পেয়েছে, খুব বেশি পরিমানে ব্যান্ডউইথ ব্যবহৃত হচ্ছে, তাহলে ধারণা করা যেতে পারে যে আপনি আক্রান্ত হয়েছেন বা হতে যাচ্ছেন। সেক্ষেত্রে আপনার কোনো পূর্ব পরিকল্পনা অবশ্যই থাকা উচিৎ যে এমন পরিস্থিতে কী করতে হবে বা কার সাথে যোগাযোগ করতে হবে।
ক্লাউডফেয়ার ব্যবহার করলেই তো হয়।
তাছাড়া এখনকার বেশিরভাগ ওয়েবহোস্ট থেকেই ফ্রিতে Dos প্রটেকশন দেয়। সন্দেহজনক ট্রাফিক পেলেই ক্যাপচা দিয়ে ঢুকতে হয়।