Google ক্লাউড আর্মারের সাথে বট ব্যবস্থাপনা + reCAPTCHA

১. ভূমিকা

বিশ্বজুড়ে গুগল পয়েন্টস অফ প্রেজেন্স (POP)-এ, গুগলের নেটওয়ার্কের প্রান্তে গুগল ক্লাউড HTTP(S) লোড ব্যালান্সিং স্থাপন করা হয়েছে। কোনো HTTP(S) লোড ব্যালান্সারে পাঠানো ব্যবহারকারীর ট্র্যাফিক প্রথমে ব্যবহারকারীর সবচেয়ে কাছের POP-এ প্রবেশ করে এবং তারপর গুগলের গ্লোবাল নেটওয়ার্কের মাধ্যমে পর্যাপ্ত ধারণক্ষমতা সম্পন্ন নিকটতম ব্যাকএন্ডে লোড ব্যালান্স করা হয়।

ক্লাউড আর্মার হলো গুগলের ডিস্ট্রিবিউটেড ডিনায়াল অফ সার্ভিস এবং ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল (WAF) ডিটেকশন সিস্টেম। ক্লাউড আর্মার গুগল ক্লাউড HTTP লোড ব্যালান্সারের সাথে নিবিড়ভাবে সংযুক্ত এবং গুগল ক্লাউড গ্রাহকদের অ্যাপ্লিকেশনগুলোকে ইন্টারনেট থেকে আসা আক্রমণ থেকে সুরক্ষিত রাখে। reCAPTCHA এন্টারপ্রাইজ হলো একটি পরিষেবা যা আপনার সাইটকে স্প্যাম এবং অপব্যবহার থেকে রক্ষা করে। এটি বিদ্যমান reCAPTCHA API-এর উপর ভিত্তি করে তৈরি, যা মানুষ এবং বটকে আলাদা করার জন্য উন্নত ঝুঁকি বিশ্লেষণ কৌশল ব্যবহার করে। ক্লাউড আর্মার বট ম্যানেজমেন্ট একটি এন্ড-টু-এন্ড সমাধান প্রদান করে, যা ডাউনস্ট্রিম অ্যাপ্লিকেশনগুলোকে সুরক্ষিত রাখার জন্য নেটওয়ার্কের প্রান্তে ক্লাউড আর্মারের প্রয়োগের সাথে reCAPTCHA এন্টারপ্রাইজের বট ডিটেকশন ও স্কোরিংকে একীভূত করে।

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

8b46e6728996bc0c.png

আপনি যা শিখবেন

  • যথাযথ হেলথ চেক সহ কীভাবে একটি HTTP লোড ব্যালেন্সার সেট আপ করবেন।
  • কিভাবে একটি reCAPTCHA WAF চ্যালেঞ্জ-পেজ সাইট কী তৈরি করতে হয় এবং এটিকে ক্লাউড আর্মার নিরাপত্তা নীতির সাথে যুক্ত করতে হয়।
  • কিভাবে একটি reCAPTCHA সেশন টোকেন সাইট কী তৈরি করবেন এবং আপনার ওয়েব পেজগুলিতে এটি ইনস্টল করবেন।
  • কীভাবে একটি ক্লাউড আর্মার বট ম্যানেজমেন্ট পলিসি তৈরি করবেন।
  • বট ম্যানেজমেন্ট পলিসিটি কনফিগার করা নিয়ম অনুযায়ী ট্র্যাফিক পরিচালনা করছে কিনা, তা কীভাবে যাচাই করবেন।

আপনার যা যা লাগবে

  • বেসিক নেটওয়ার্কিং এবং HTTP সম্পর্কে জ্ঞান
  • ইউনিক্স/লিনাক্স কমান্ড লাইনের প্রাথমিক জ্ঞান

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না, এবং আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করার পর পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়।
  • তৃতীয় আরেকটি ভ্যালু আছে, যা হলো প্রজেক্ট নম্বর এবং কিছু এপিআই এটি ব্যবহার করে। এই তিনটি ভ্যালু সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে কোডল্যাবের শেষে দেওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

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

GCP কনসোল থেকে উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনে ক্লিক করুন:

55efc1aaa7a4d3ad.png

পরিবেশটি প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে। এটি শেষ হলে, আপনি এইরকম কিছু দেখতে পাবেন:

7ffe5cbb04455448.png

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

শুরু করার আগে

ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রজেক্ট আইডি সেট আপ করা আছে।

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

এপিআই সক্ষম করুন

সমস্ত প্রয়োজনীয় পরিষেবা সক্রিয় করুন

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com
gcloud services enable recaptchaenterprise.googleapis.com

৩. ব্যাকএন্ডগুলিতে HTTP এবং SSH ট্র্যাফিকের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়মগুলি কনফিগার করুন।

গুগল ক্লাউড হেলথ চেক এবং লোড ব্যালেন্সার থেকে ব্যাকএন্ডগুলিতে HTTP ট্র্যাফিকের অনুমতি দেওয়ার জন্য ফায়ারওয়াল নিয়ম কনফিগার করুন। এছাড়াও, ইনস্ট্যান্সগুলিতে SSH অ্যাক্সেসের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম কনফিগার করুন।

আমরা আপনার প্রজেক্টে তৈরি করা ডিফল্ট VPC নেটওয়ার্কটি ব্যবহার করব। ব্যাকএন্ডগুলোতে HTTP ট্র্যাফিক অনুমোদনের জন্য একটি ফায়ারওয়াল রুল তৈরি করুন। হেলথ চেক নির্ধারণ করে যে একটি লোড ব্যালান্সারের কোন ইনস্ট্যান্সগুলো নতুন কানেকশন গ্রহণ করতে পারবে। HTTP লোড ব্যালান্সিংয়ের জন্য, আপনার লোড ব্যালান্সড ইনস্ট্যান্সগুলোতে হেলথ চেক প্রোবগুলো 130.211.0.0/22 ​​এবং 35.191.0.0/16 রেঞ্জের অ্যাড্রেসগুলো থেকে আসে। আপনার VPC ফায়ারওয়াল রুলগুলোকে অবশ্যই এই কানেকশনগুলোর অনুমতি দিতে হবে। এছাড়াও, লোড ব্যালান্সারগুলো একই IP রেঞ্জে ব্যাকএন্ডের সাথে যোগাযোগ করে।

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে যান ( mainmenu.png ) > ভিপিসি নেটওয়ার্ক > ফায়ারওয়াল

131fb495c9242335.png

  1. বিদ্যমান ICMP , ইন্টারনাল , RDP এবং SSH ফায়ারওয়াল নিয়মগুলো লক্ষ্য করুন। প্রতিটি গুগল ক্লাউড প্রজেক্ট ডিফল্ট নেটওয়ার্ক এবং এই ফায়ারওয়াল নিয়মগুলো দিয়ে শুরু হয়।
  2. ফায়ারওয়াল নিয়ম তৈরি করুন- এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

ডিফল্ট-অনুমতি-স্বাস্থ্য-পরীক্ষা

নেটওয়ার্ক

ডিফল্ট

লক্ষ্য

নির্দিষ্ট লক্ষ্য ট্যাগ

লক্ষ্য ট্যাগ

স্বাস্থ্য-পরীক্ষার অনুমতি দিন

উৎস ফিল্টার

আইপি রেঞ্জ

উৎস আইপি পরিসীমা

১৩০.২১১.০.০/২২, ৩৫.১৯১.০.০/১৬

প্রোটোকল এবং পোর্ট

প্রোটোকল ও পোর্টগুলো নির্দিষ্ট করুন, এবং তারপর টিসিপি (TCP) যাচাই করুন । পোর্ট নম্বরের জন্য ৮০ টাইপ করুন।

  1. তৈরি করুন- এ ক্লিক করুন।

বিকল্পভাবে, যদি আপনি gcloud কমান্ড লাইন ব্যবহার করেন। নিচে কমান্ডটি দেওয়া হলো -

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=allow-health-check
  1. একইভাবে, ইনস্ট্যান্সগুলোতে SSH করার অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করুন।
gcloud compute firewall-rules create allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --target-tags=allow-health-check

৪. ইনস্ট্যান্স টেমপ্লেট কনফিগার করুন এবং পরিচালিত ইনস্ট্যান্স গ্রুপ তৈরি করুন

একটি ম্যানেজড ইনস্ট্যান্স গ্রুপ একই ধরনের ইনস্ট্যান্সের একটি গ্রুপ তৈরি করতে একটি ইনস্ট্যান্স টেমপ্লেট ব্যবহার করে। HTTP লোড ব্যালান্সারের ব্যাকএন্ড তৈরি করতে এগুলো ব্যবহার করুন।

ইনস্ট্যান্স টেমপ্লেটগুলি কনফিগার করুন

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

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে যান ( mainmenu.png ) > Compute Engine > Instance templates-এ যান এবং তারপর Create instance template-এ ক্লিক করুন।
  2. Name- এর জন্য, lb-backend-template টাইপ করুন।
  3. সিরিজের জন্য, N1 নির্বাচন করুন।
  4. নেটওয়ার্কিং, ডিস্ক, নিরাপত্তা, ব্যবস্থাপনা, একক মালিকানা-তে ক্লিক করুন।

1d0b7122f4bb410d.png

  1. ম্যানেজমেন্ট বিভাগে যান এবং নিম্নলিখিত স্ক্রিপ্টটি স্টার্টআপ স্ক্রিপ্ট ফিল্ডে প্রবেশ করান।
#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
sudo echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
  1. Networking ট্যাবে ক্লিক করুন, এবং allow-health-check নেটওয়ার্ক ট্যাগগুলো যোগ করুন।
  2. নিম্নলিখিত মানগুলি সেট করুন এবং অন্য সমস্ত মান তাদের ডিফল্ট অবস্থায় রাখুন -

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নেটওয়ার্ক (নেটওয়ার্ক ইন্টারফেসের অধীনে)

ডিফল্ট

সাবনেট (নেটওয়ার্ক ইন্টারফেসের অধীনে)

ডিফল্ট (us-east1)

নেটওয়ার্ক ট্যাগ

স্বাস্থ্য-পরীক্ষার অনুমতি দিন

  1. তৈরি করুন- এ ক্লিক করুন।
  2. ইনস্ট্যান্স টেমপ্লেটটি তৈরি হওয়া পর্যন্ত অপেক্ষা করুন।

ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন

  1. Compute Engine পৃষ্ঠাতেই, বাম দিকের মেনু থেকে Instance groups-এ ক্লিক করুন।

ed419061ad2b982c.png

  1. ইনস্ট্যান্স গ্রুপ তৈরি করুন -এ ক্লিক করুন। নতুন পরিচালিত ইনস্ট্যান্স গ্রুপ (স্টেটলেস) নির্বাচন করুন।
  2. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

নাম

lb-backend-example

অবস্থান

একক অঞ্চল

অঞ্চল

us-east1

অঞ্চল

us-east1-b

ইনস্ট্যান্স টেমপ্লেট

lb-backend-template

অটোস্কেলিং

অটোস্কেল করবেন না

দৃষ্টান্তের সংখ্যা

  1. তৈরি করুন- এ ক্লিক করুন।

ইনস্ট্যান্স গ্রুপে একটি নামযুক্ত পোর্ট যোগ করুন

আপনার ইনস্ট্যান্স গ্রুপের জন্য, একটি HTTP সার্ভিস সংজ্ঞায়িত করুন এবং একটি পোর্টের নামকে প্রাসঙ্গিক পোর্টের সাথে ম্যাপ করুন। লোড ব্যালান্সিং সার্ভিসটি নির্দিষ্ট পোর্টে ট্র্যাফিক ফরওয়ার্ড করে।

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

৫. HTTP লোড ব্যালেন্সার কনফিগার করুন

আপনার ব্যাকএন্ড lb-backend-example-এ ট্র্যাফিক পাঠানোর জন্য HTTP লোড ব্যালেন্সার কনফিগার করুন:

কনফিগারেশন শুরু করুন

  1. ক্লাউড কনসোলে, নেভিগেশন মেনুতে ক্লিক করুন ( mainmenu.png ) > নেটওয়ার্ক সার্ভিসেস > লোড ব্যালেন্সিং-এ ক্লিক করুন, এবং তারপর ক্রিয়েট লোড ব্যালেন্সার-এ ক্লিক করুন।
  2. HTTP(S) লোড ব্যালেন্সিং- এর অধীনে, স্টার্ট কনফিগারেশন- এ ক্লিক করুন।

4f8b8cb10347ecec.png

  1. ইন্টারনেট থেকে আমার ভিএম-এ (From Internet to my VMs) , ক্লাসিক HTTP(S) লোড ব্যালেন্সার (Classic HTTP(S) Load Balancer) নির্বাচন করুন এবং চালিয়ে যান (Continue ) ক্লিক করুন।
  2. নামটি http-lb তে সেট করুন।

ব্যাকএন্ড কনফিগার করুন

ব্যাকএন্ড সার্ভিসগুলো আগত ট্র্যাফিককে এক বা একাধিক সংযুক্ত ব্যাকএন্ডে প্রেরণ করে। প্রতিটি ব্যাকএন্ড একটি ইনস্ট্যান্স গ্রুপ এবং অতিরিক্ত পরিষেবা প্রদানের সক্ষমতার মেটাডেটা দ্বারা গঠিত।

  1. ব্যাকএন্ড কনফিগারেশন- এ ক্লিক করুন।
  2. ব্যাকএন্ড সার্ভিস ও ব্যাকএন্ড বাকেট- এর জন্য, 'Create a backend service'-এ ক্লিক করুন।
  3. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট বিকল্প নির্বাচন করুন)

নাম

http-ব্যাকএন্ড

প্রোটোকল

HTTP

নামযুক্ত বন্দর

এইচটিপি

দৃষ্টান্ত গোষ্ঠী

lb-backend-example

বন্দর নম্বর

৮০

  1. সম্পন্ন ক্লিক করুন।
  2. ব্যাকএন্ড যোগ করুন- এ ক্লিক করুন।
  3. স্বাস্থ্য পরীক্ষা করার জন্য, ‘একটি স্বাস্থ্য পরীক্ষা তৈরি করুন ’ নির্বাচন করুন।

168a9ba1062b1f45.png

  1. নিম্নলিখিত মানগুলি সেট করুন, অন্য সব মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট বিকল্প নির্বাচন করুন)

নাম

http-স্বাস্থ্য-পরীক্ষা

প্রোটোকল

টিসিপি

বন্দর

৮০

dc45bc726bb4dfad.png

  1. সংরক্ষণ করুন- এ ক্লিক করুন।
  2. লগিং সক্ষম করুন বক্সটি চেক করুন।
  3. স্যাম্পল রেট ১-এ সেট করুন:

c8f884fa4a8cd50.png

  1. ব্যাকএন্ড সার্ভিস তৈরি করতে Create-এ ক্লিক করুন।

1fd2ad21b1d32a95.png

ফ্রন্টএন্ড কনফিগার করুন

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

  1. ফ্রন্টএন্ড কনফিগারেশন- এ ক্লিক করুন।
  2. নিম্নলিখিতগুলি নির্দিষ্ট করুন, এবং অন্যান্য সমস্ত মান তাদের ডিফল্ট অবস্থায় রাখুন:

সম্পত্তি

মান (নির্দিষ্ট মান টাইপ করুন অথবা বিকল্প নির্বাচন করুন)

প্রোটোকল

HTTP

আইপি সংস্করণ

IPv4

আইপি ঠিকানা

ক্ষণস্থায়ী

বন্দর

৮০

  1. সম্পন্ন ক্লিক করুন।

HTTP লোড ব্যালেন্সার পর্যালোচনা করুন এবং তৈরি করুন

  1. পর্যালোচনা করুন এবং চূড়ান্ত করুন -এ ক্লিক করুন।

478e5e51057af3a3.png

  1. ব্যাকএন্ড ও ফ্রন্টএন্ড সার্ভিসগুলো পর্যালোচনা করুন।
  2. তৈরি করুন -এ ক্লিক করুন।
  3. লোড ব্যালেন্সার তৈরি হওয়া পর্যন্ত অপেক্ষা করুন।
  4. লোড ব্যালান্সারের নামে ( http-lb ) ক্লিক করুন।
  5. পরবর্তী কাজের জন্য লোড ব্যালান্সারের IPv4 অ্যাড্রেসটি নোট করে নিন। আমরা এটিকে [LB_IP_v4] হিসাবে উল্লেখ করব।

৬. HTTP লোড ব্যালেন্সার পরীক্ষা করুন

এখন যেহেতু আপনি আপনার ব্যাকএন্ডগুলির জন্য HTTP লোড ব্যালেন্সার তৈরি করেছেন, যাচাই করুন যে ট্র্যাফিক ব্যাকএন্ড পরিষেবাতে ফরোয়ার্ড করা হচ্ছে। HTTP লোড ব্যালেন্সারে IPv4 অ্যাক্সেস পরীক্ষা করতে, আপনার ব্রাউজারে একটি নতুন ট্যাব খুলুন এবং http://[LB_IP_v4] -এ যান। [LB_IP_v4] -এর জায়গায় লোড ব্যালেন্সারের IPv4 ঠিকানাটি বসাতে ভুলবেন না।

৭. reCAPTCHA সেশন টোকেন এবং চ্যালেঞ্জ-পেজ সাইট কী তৈরি ও স্থাপন করুন।

WAF এবং Google Cloud Armor ইন্টিগ্রেশনের জন্য reCAPTCHA Enterprise নিম্নলিখিত ফিচারগুলো প্রদান করে: reCAPTCHA চ্যালেঞ্জ পেজ , reCAPTCHA অ্যাকশন-টোকেন এবং reCAPTCHA সেশন-টোকেন । এই কোড ল্যাবে, আমরা reCAPTCHA সেশন টোকেন সাইট কী এবং reCAPTCHA WAF চ্যালেঞ্জ-পেজ সাইট ইমপ্লিমেন্ট করব।

reCAPTCHA সেশন টোকেন এবং WAF চ্যালেঞ্জ-পেজ সাইট কী তৈরি করুন

সেশন টোকেন সাইট কী এবং চ্যালেঞ্জ পেজ সাইট কী তৈরি করার আগে, শুরুতে "এপিআই সক্ষম করুন" বিভাগে নির্দেশিত পদ্ধতি অনুযায়ী আপনি reCAPTCHA এন্টারপ্রাইজ এপিআই সক্ষম করেছেন কিনা তা পুনরায় যাচাই করে নিন।

মূল্যায়ন শেষে reCAPTCHA জাভাস্ক্রিপ্টটি ব্যবহারকারীর ব্রাউজারে একটি কুকি হিসেবে reCAPTCHA সেশন-টোকেন সেট করে। যতক্ষণ reCAPTCHA জাভাস্ক্রিপ্টটি সক্রিয় থাকে, ততক্ষণ ব্যবহারকারীর ব্রাউজারটি কুকিটি সংযুক্ত করে এবং কুকিটি রিফ্রেশ করতে থাকে।

  1. reCAPTCHA সেশন টোকেন সাইট কী তৈরি করুন এবং কী-টির জন্য WAF ফিচারটি সক্রিয় করুন। ক্লাউড আর্মার ইন্টিগ্রেশন সক্রিয় করার জন্য আমরা WAF সার্ভিসটিও ক্লাউড আর্মার-এ সেট করব।
gcloud recaptcha keys create --display-name=test-key-name \
   --web --allow-all-domains --integration-type=score --testing-score=0.5 \
   --waf-feature=session-token --waf-service=ca
  1. উপরের কমান্ডের আউটপুট হিসেবে আপনি তৈরি হওয়া কী-টি পাবেন। এটি লিখে রাখুন, কারণ আমরা পরবর্তী ধাপে এটি আপনার ওয়েবসাইটে যুক্ত করব।
  2. reCAPTCHA WAF চ্যালেঞ্জ-পেজ সাইট কী তৈরি করুন এবং কী-টির জন্য WAF ফিচারটি সক্রিয় করুন। প্রতিটি অনুরোধ সম্ভাব্য প্রতারণামূলক নাকি বৈধ, তা নির্ধারণ করতে আপনি আগত অনুরোধগুলোকে reCAPTCHA Enterprise-এ রিডাইরেক্ট করার জন্য reCAPTCHA চ্যালেঞ্জ পেজ ফিচারটি ব্যবহার করতে পারেন। পরবর্তীতে আমরা ম্যানুয়াল চ্যালেঞ্জ সক্রিয় করার জন্য এই কী-টিকে ক্লাউড আর্মার নিরাপত্তা নীতির সাথে যুক্ত করব। পরবর্তী ধাপগুলোতে আমরা এই কী-টিকে CHALLENGE-PAGE-KEY হিসেবে উল্লেখ করব।
gcloud recaptcha keys create --display-name=challenge-page-key \
   --web --allow-all-domains --integration-type=INVISIBLE \
   --waf-feature=challenge-page --waf-service=ca
  1. নেভিগেশন মেনুতে যান ( mainmenu.png ) > নিরাপত্তা > reCAPTCHA এন্টারপ্রাইজ। এন্টারপ্রাইজ কী-এর অধীনে আপনার তৈরি করা কীগুলি দেখতে পাবেন -

4e2567aae0eb92d7.png

reCAPTCHA সেশন টোকেন সাইট কী প্রয়োগ করুন

  1. নেভিগেশন মেনুতে যান ( mainmenu.png ) > কম্পিউট ইঞ্জিন > ভিএম ইনস্ট্যান্সেস। আপনার ইনস্ট্যান্স গ্রুপে ভিএমটি খুঁজুন এবং SSH-এর মাধ্যমে এতে প্রবেশ করুন।

6d7b0fd12a667b5f.png

  1. ওয়েবসার্ভারের রুট ডিরেক্টরিতে যান এবং ব্যবহারকারীকে রুটে পরিবর্তন করুন।
@lb-backend-example-4wmn:~$ cd /var/www/html/
@lb-backend-example-4wmn:/var/www/html$ sudo su
  1. ল্যান্ডিং পেজের index.html পৃষ্ঠাটি আপডেট করুন এবং reCAPTCHA সেশন টোকেন সাইট কী যুক্ত করুন। সেশন টোকেন সাইট কী-টি আপনার ল্যান্ডিং পেজের head সেকশনে নিচে দেখানো অনুযায়ী সেট করতে হবে -

<script src="https://www.google.com/recaptcha/enterprise.js?render= <REPLACE_TOKEN_HERE> &waf=session" async defer></script>

নিচে নির্দেশিত পদ্ধতি অনুযায়ী index.html ফাইল আপডেট করার আগে টোকেনটি প্রতিস্থাপন করতে মনে রাখবেন।

root@lb-backend-example-4wmn:/var/www/html# echo '<!doctype html><html><head><title>ReCAPTCHA Session Token</title><script src="https://www.google.com/recaptcha/enterprise.js?render=<REPLACE_TOKEN_HERE>&waf=session" async defer></script></head><body><h1>Main Page</h1><p><a href="/good-score.html">Visit allowed link</a></p><p><a href="/bad-score.html">Visit blocked link</a></p><p><a href="/median-score.html">Visit redirect link</a></p></body></html>' > index.html
  1. বট ব্যবস্থাপনা নীতিগুলো পরীক্ষা করার জন্য আরও তিনটি নমুনা পৃষ্ঠা তৈরি করুন।
  • ভালো-স্কোর.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Congrats! You have a good score!!</h1></body></html>' > good-score.html
  • খারাপ-স্কোর.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>Sorry, You have a bad score!</h1></body></html>' > bad-score.html
  • মধ্যমা-স্কোর.html
root@lb-backend-example-4wmn:/var/www/html# echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></head><body><h1>You have a median score that we need a second verification.</h1></body></html>' > median-score.html
  1. আপনার ব্রাউজারে সমস্ত ওয়েবপেজ খুলে যাচাই করুন যে আপনি সেগুলি অ্যাক্সেস করতে পারছেন কিনা। [LB_IP_v4]-এর জায়গায় লোড ব্যালান্সারের IPv4 অ্যাড্রেসটি অবশ্যই বসাবেন।
  • http://[LB_IP_v4]/index.html খুলুন। যখন আপনি পৃষ্ঠার নীচের ডান কোণায় "protected by reCAPTCHA" লেখাটি দেখতে পাবেন, তখন আপনি যাচাই করতে পারবেন যে reCAPTCHA বাস্তবায়নটি কাজ করছে।

d695ad23d91ae4e9.png

  • প্রতিটি লিঙ্কে ক্লিক করুন।

4a2ad1b2f10b4c86.png

  • আপনি সমস্ত পৃষ্ঠা অ্যাক্সেস করতে পারছেন কিনা তা যাচাই করুন।

481f63bf5e6f244.png

৮. বট ব্যবস্থাপনার জন্য ক্লাউড আর্মার নিরাপত্তা নীতি নিয়ম তৈরি করুন।

এই অংশে, আপনি reCAPTCHA স্কোরের উপর ভিত্তি করে অনুরোধ অনুমোদন, প্রত্যাখ্যান এবং পুনঃনির্দেশ করতে ক্লাউড আর্মার বট ম্যানেজমেন্ট রুল ব্যবহার করবেন। মনে রাখবেন যে, সেশন টোকেন সাইট কী তৈরি করার সময় আপনি ০.৫ এর একটি টেস্টিং স্কোর সেট করেছিলেন।

  1. ক্লাউড শেলে (ক্লাউড শেল কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলীর জন্য " সেটআপ এবং প্রয়োজনীয়তা "-এর অধীনে " ক্লাউড শেল শুরু করুন " অংশটি দেখুন), gcloud-এর মাধ্যমে নিরাপত্তা নীতি তৈরি করুন:
gcloud compute security-policies create recaptcha-policy \
    --description "policy for bot management"
  1. মানুষ এবং স্বয়ংক্রিয় ক্লায়েন্টদের মধ্যে পার্থক্য করার জন্য reCAPTCHA এন্টারপ্রাইজ ম্যানুয়াল চ্যালেঞ্জ ব্যবহার করতে, ম্যানুয়াল চ্যালেঞ্জের জন্য আমাদের তৈরি করা reCAPTCHA WAF চ্যালেঞ্জ সাইট কী-টি নিরাপত্তা নীতির সাথে যুক্ত করুন। 'CHALLENGE-PAGE-KEY'-কে আমাদের তৈরি করা কী-টি দিয়ে প্রতিস্থাপন করুন -
gcloud compute security-policies update recaptcha-policy \
   --recaptcha-redirect-site-key "CHALLENGE-PAGE-KEY"
  1. একটি বট ম্যানেজমেন্ট নিয়ম যোগ করুন, যা good-score.html-এর সাথে ইউআরএল পাথ মিলে গেলে এবং স্কোর ০.৪-এর বেশি হলে ট্র্যাফিককে অনুমতি দেবে।
gcloud compute security-policies rules create 2000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('good-score.html') &&    token.recaptcha_session.score > 0.4"\
     --action allow
  1. একটি বট ম্যানেজমেন্ট নিয়ম যোগ করুন, যা URL পাথটি bad-score.html-এর সাথে মিলে গেলে এবং এর স্কোর ০.৬-এর কম হলে ট্র্যাফিক প্রত্যাখ্যান করবে।
  gcloud compute security-policies rules create 3000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('bad-score.html') && token.recaptcha_session.score < 0.6"\
     --action "deny-403"
  1. একটি বট ম্যানেজমেন্ট নিয়ম যোগ করুন যা ট্র্যাফিককে Google reCAPTCHA-তে রিডাইরেক্ট করবে, যদি ইউআরএল পাথটি median-score.html-এর সাথে মিলে যায় এবং এর স্কোর ০.৫-এর সমান হয়।
  gcloud compute security-policies rules create 1000 \
     --security-policy recaptcha-policy\
     --expression "request.path.matches('median-score.html') && token.recaptcha_session.score == 0.5"\
     --action redirect \
     --redirect-type google-recaptcha
  1. ব্যাকএন্ড সার্ভিস http-backend-এর সাথে নিরাপত্তা নীতিটি সংযুক্ত করুন:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. কনসোলে, নেভিগেশন মেনু > নেটওয়ার্ক সিকিউরিটি > ক্লাউড আর্মার- এ যান।
  2. recaptcha-policy-তে ক্লিক করুন । আপনার পলিসিটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:

74852618aaa96786.png

৯. ক্লাউড আর্মার দিয়ে বট ম্যানেজমেন্ট যাচাই করুন

  1. একটি ব্রাউজার খুলুন এবং http://[LB_IP_v4]/index.html ইউআরএলটি লিখুন। "ভিজিট অ্যালাউ লিঙ্ক"-এ যান। আপনাকে প্রবেশের অনুমতি দেওয়া হবে।

edf3e6ca238d2ee7.png

  1. একটি নতুন সেশন নিশ্চিত করতে ইনকগনিটো মোডে একটি নতুন উইন্ডো খুলুন। http://[LB_IP_v4]/index.html ইউআরএলটি প্রবেশ করান এবং "Visit blocked link"-এ যান। আপনি একটি HTTP 403 এরর পাবেন।

ecef5655b291dbb0.png

  1. একটি নতুন সেশন নিশ্চিত করতে ইনকগনিটো মোডে একটি নতুন উইন্ডো খুলুন। http://[LB_IP_v4]/index.html ইউআরএলটি প্রবেশ করান এবং "ভিজিট রিডাইরেক্ট লিঙ্ক"-এ যান। আপনি নীচের মতো গুগল রিক্যাপচা এবং ম্যানুয়াল চ্যালেঞ্জ পৃষ্ঠায় পুনঃনির্দেশিত হতে দেখবেন -

53ed2b4067b55436.png

ক্লাউড আর্মার লগ যাচাই করুন

বট ব্যবস্থাপনা প্রত্যাশা অনুযায়ী কাজ করেছে কিনা তা যাচাই করতে নিরাপত্তা নীতি লগগুলো খতিয়ে দেখুন।

  1. কনসোলে, নেভিগেশন মেনু > নেটওয়ার্ক সিকিউরিটি > ক্লাউড আর্মার- এ যান।
  2. recaptcha-policy-তে ক্লিক করুন।
  3. ক্লিক লগ

46fd825d8506d355.png

  1. পলিসি লগ দেখতে ক্লিক করুন।
  2. নিচে MQL (মনিটরিং কোয়েরি ল্যাঙ্গুয়েজ) কোয়েরিটি দেওয়া হলো, আপনি এটি কপি করে কোয়েরি এডিটরে পেস্ট করতে পারেন।
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(recaptcha-policy)
  1. এখন রান কোয়েরি-তে ক্লিক করুন।
  2. কোয়েরির ফলাফলে এমন একটি লগ এন্ট্রি খুঁজুন যেখানে http://[LB_IP_v4]/good-score.html-এর জন্য অনুরোধ করা হয়েছে। jsonPayload এক্সপ্যান্ড করুন। enforcedSecurityPolicy এক্সপ্যান্ড করুন।

b7b1712642cf092b.png

  1. http://[LB_IP_v4]/bad-score.html এবং http://[LB_IP_v4]/median-score.html এর জন্য একই কাজ পুনরাবৃত্তি করুন।

c28f96d83056725a.png

8c4803d75a77142c.png

লক্ষ্য করুন যে, `configuredAction`-টি `recaptcha-policy` নামের সাথে `ALLOW`, `DENY` বা `GOOGLE_RECAPTCHA`- তে সেট করা আছে।

অভিনন্দন! আপনি ক্লাউড আর্মার ব্যবহার করে বট ম্যানেজমেন্টের উপর এই ল্যাবটি সফলভাবে সম্পন্ন করেছেন।

©২০২০ গুগল এলএলসি। সর্বস্বত্ব সংরক্ষিত। গুগল এবং গুগল লোগো হলো গুগল এলএলসি-এর ট্রেডমার্ক। অন্য সকল কোম্পানি ও পণ্যের নাম তাদের সংশ্লিষ্ট কোম্পানিগুলোর ট্রেডমার্ক হতে পারে।

১০. ল্যাব পরিষ্কার করা

  1. নেটওয়ার্ক সিকিউরিটি >> ক্লাউড আর্মার >> %পলিসির নাম% -এ যান এবং ডিলিট নির্বাচন করুন -

2646f9c1df093f90.png

  1. Networking >> Network services >> Load Balancing-এ যান। আপনার তৈরি করা লোড ব্যালেন্সারটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।

8ad4f55dc06513f7.png

মুছে ফেলার জন্য অতিরিক্ত রিসোর্স হিসেবে ব্যাকএন্ড সার্ভিস এবং হেলথ চেক নির্বাচন করুন -

f6f02bb56add6420.png

  1. নেভিগেশন মেনুতে যান ( mainmenu.png ) > কম্পিউট ইঞ্জিন > ইনস্ট্যান্স গ্রুপ। ম্যানেজড ইনস্ট্যান্স গ্রুপটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন -

2116b286954fd6.png

টেক্সটবক্সে 'delete' টাইপ করে মুছে ফেলার বিষয়টি নিশ্চিত করুন।

ম্যানেজড ইনস্ট্যান্স গ্রুপটি ডিলিট হওয়া পর্যন্ত অপেক্ষা করুন। এর ফলে গ্রুপের অন্তর্ভুক্ত ইনস্ট্যান্সটিও ডিলিট হয়ে যাবে। ইনস্ট্যান্স গ্রুপটি ডিলিট হয়ে যাওয়ার পরেই কেবল আপনি টেমপ্লেটগুলো ডিলিট করতে পারবেন।

  1. বাম পাশের প্যানেল থেকে ইনস্ট্যান্স টেমপ্লেট -এ যান। ইনস্ট্যান্স টেমপ্লেটটি নির্বাচন করুন এবং ডিলিট-এ ক্লিক করুন।
  2. নেভিগেশন মেনুতে যান ( mainmenu.png VPC নেটওয়ার্ক > ফায়ারওয়াল । default-allow-health-check এবং allow-ssh রুলগুলো সিলেক্ট করে ডিলিট-এ ক্লিক করুন।
  3. নেভিগেশন মেনুতে যান ( mainmenu.png নিরাপত্তা > রিক্যাপচা এন্টারপ্রাইজ-এ যান। আমাদের তৈরি করা কী-গুলো নির্বাচন করে মুছে ফেলুন। টেক্সটবক্সে "DELETE" টাইপ করে মুছে ফেলার বিষয়টি নিশ্চিত করুন।

e71ecd11baf262ca.png

১১. অভিনন্দন!

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

আমরা যা আলোচনা করেছি

  • ইনস্ট্যান্স টেমপ্লেট কীভাবে সেট আপ করবেন এবং ম্যানেজড ইনস্ট্যান্স গ্রুপ কীভাবে তৈরি করবেন
  • কীভাবে একটি HTTP লোড ব্যালেন্সার সেট আপ করবেন।
  • কীভাবে একটি ক্লাউড আর্মার বট ম্যানেজমেন্ট পলিসি তৈরি করবেন।
  • reCAPTCHA সেশন টোকেন সাইট কী কীভাবে তৈরি এবং প্রয়োগ করবেন
  • reCAPTCHA চ্যালেঞ্জ পেজের সাইট কী কীভাবে তৈরি এবং প্রয়োগ করবেন
  • বট ম্যানেজমেন্ট পলিসিটি উদ্দেশ্য অনুযায়ী কাজ করছে কিনা তা কীভাবে যাচাই করবেন।

পরবর্তী পদক্ষেপ

  • reCAPTCHA অ্যাকশন টোকেন সেট আপ করার চেষ্টা করুন।