مدیریت ربات با Google Cloud Armor + reCAPTCHA

۱. مقدمه

تعادل بار HTTP(S) گوگل کلود در لبه شبکه گوگل در نقاط حضور (POP) گوگل در سراسر جهان مستقر شده است. ترافیک کاربر که به یک متعادل‌کننده بار HTTP(S) هدایت می‌شود، وارد POP نزدیک به کاربر می‌شود و سپس از طریق شبکه جهانی گوگل به نزدیکترین backend که ظرفیت کافی در دسترس دارد، متعادل می‌شود.

Cloud Armor سیستم تشخیص حملات انسداد سرویس توزیع‌شده و فایروال برنامه‌های وب (WAF) گوگل است. Cloud Armor به طور تنگاتنگی با Google Cloud HTTP Load Balancer مرتبط است و برنامه‌های مشتریان Google Cloud را از حملات اینترنتی محافظت می‌کند. reCAPTCHA Enterprise سرویسی است که سایت شما را در برابر هرزنامه و سوءاستفاده محافظت می‌کند و بر اساس API موجود reCAPTCHA ساخته شده است که از تکنیک‌های پیشرفته تحلیل ریسک برای تشخیص انسان و ربات استفاده می‌کند. Cloud Armor Bot Management یک راه‌حل جامع ارائه می‌دهد که تشخیص و امتیازدهی ربات reCAPTCHA Enterprise را با اجرای Cloud Armor در لبه شبکه ادغام می‌کند تا از برنامه‌های پایین‌دستی محافظت کند.

در این آزمایش، شما یک متعادل‌کننده بار HTTP را با یک backend پیکربندی می‌کنید، همانطور که در نمودار زیر نشان داده شده است. سپس، یاد خواهید گرفت که یک کلید سایت توکن نشست reCAPTCHA تنظیم کنید و آن را در وب‌سایت خود جاسازی کنید. همچنین یاد خواهید گرفت که چگونه ریدایرکت را به چالش دستی reCAPTCHA Enterprise تنظیم کنید. سپس یک سیاست مدیریت ربات Cloud Armor پیکربندی خواهیم کرد تا نشان دهیم که چگونه تشخیص ربات از برنامه شما در برابر ترافیک ربات‌های مخرب محافظت می‌کند.

8b46e6728996bc0c.png

آنچه یاد خواهید گرفت

  • نحوه تنظیم یک متعادل‌کننده بار HTTP با بررسی‌های سلامت مناسب.
  • نحوه ایجاد کلید سایت برای صفحه چالش reCAPTCHA WAF و مرتبط کردن آن با سیاست امنیتی Cloud Armor.
  • نحوه ایجاد کلید سایت توکن جلسه reCAPTCHA و نصب آن در صفحات وب شما.
  • نحوه ایجاد یک سیاست مدیریت ربات Cloud Armor.
  • چگونه می‌توان تأیید کرد که سیاست مدیریت ربات، ترافیک را بر اساس قوانین پیکربندی شده مدیریت می‌کند.

آنچه نیاز دارید

  • آشنایی اولیه با شبکه و HTTP
  • دانش پایه خط فرمان یونیکس/لینوکس

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه ، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود و شما می‌توانید آن را در هر زمانی به‌روزرسانی کنید.
  • شناسه پروژه باید در تمام پروژه‌های گوگل کلود منحصر به فرد باشد و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاه‌های کد، باید به شناسه پروژه ارجاع دهید (و معمولاً با نام PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک شناسه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. سپس پس از ایجاد پروژه، آن "منجمد" می‌شود.
  • یک مقدار سوم هم وجود دارد، شماره پروژه که برخی از APIها از آن استفاده می‌کنند. برای اطلاعات بیشتر در مورد هر سه این مقادیر به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/APIهای ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، دستورالعمل‌های «پاکسازی» موجود در انتهای آزمایشگاه کد را دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول GCP روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

آماده‌سازی و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز شماست. این ماشین یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه را می‌توان به سادگی با یک مرورگر انجام داد.

قبل از اینکه شروع کنی

داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است

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

فعال کردن APIها

فعال کردن تمام سرویس‌های لازم

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 به سمت backendها اجازه عبور داشته باشند.

قوانین فایروال را طوری پیکربندی کنید که ترافیک HTTP از بررسی‌های سلامت Google Cloud و Load Balancer به backendها اجازه ورود دهد. همچنین، یک قانون فایروال را طوری پیکربندی کنید که SSH به نمونه‌ها اجازه ورود دهد.

ما از شبکه پیش‌فرض VPC که در پروژه شما ایجاد شده است استفاده خواهیم کرد. یک قانون فایروال ایجاد کنید تا ترافیک HTTP به backendها اجازه عبور دهد. بررسی‌های سلامت مشخص می‌کنند که کدام نمونه‌های متعادل‌کننده بار می‌توانند اتصالات جدید دریافت کنند. برای متعادل‌کننده بار HTTP، بررسی‌های سلامت نمونه‌های متعادل‌کننده بار شما از آدرس‌هایی در محدوده ۱۳۰.۲۱۱.۰.۰/۲۲ و ۳۵.۱۹۱.۰.۰/۱۶ می‌آیند. قوانین فایروال VPC شما باید این اتصالات را مجاز بدانند. همچنین، متعادل‌کننده‌های بار با backend در همان محدوده IP ارتباط برقرار می‌کنند.

  1. در کنسول ابری، به منوی ناوبری (Navigation menu ) بروید. منوی اصلی.png ) > شبکه VPC > فایروال .

۱۳۱fb۴۹۵c۹۲۴۲۳۳۵.png

  1. به قوانین موجود در فایروال ICMP ، internal ، RDP و SSH توجه کنید. هر پروژه Google Cloud با شبکه پیش‌فرض و این قوانین فایروال شروع می‌شود.
  2. روی ایجاد قانون فایروال کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

بررسی سلامت-اجازه-پیش‌فرض

شبکه

پیش‌فرض

اهداف

برچسب‌های هدف مشخص‌شده

برچسب‌های هدف

اجازه-بررسی سلامت

فیلتر منبع

محدوده‌های IP

محدوده‌های IP منبع

۱۳۰.۲۱۱.۰.۰/۲۲، ۳۵.۱۹۱.۰.۰/۱۶

پروتکل‌ها و پورت‌ها

پروتکل‌ها و پورت‌های مشخص شده و سپس 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

۴. پیکربندی قالب‌های نمونه و ایجاد گروه‌های نمونه مدیریت‌شده

یک گروه نمونه مدیریت‌شده از یک الگوی نمونه برای ایجاد گروهی از نمونه‌های یکسان استفاده می‌کند. از این الگوها برای ایجاد backend متعادل‌کننده بار HTTP استفاده کنید.

پیکربندی الگوهای نمونه

یک الگوی نمونه، منبعی است که شما برای ایجاد نمونه‌های ماشین مجازی و گروه‌های نمونه مدیریت‌شده از آن استفاده می‌کنید. الگوهای نمونه، نوع ماشین، تصویر دیسک بوت، زیرشبکه، برچسب‌ها و سایر ویژگی‌های نمونه را تعریف می‌کنند. یک الگوی نمونه را مطابق شکل زیر ایجاد کنید.

  1. در کنسول ابری، به منوی ناوبری (Navigation menu ) بروید. منوی اصلی.png ) > موتور محاسبه > قالب‌های نمونه ، و سپس روی ایجاد قالب نمونه کلیک کنید.
  2. برای نام ، عبارت 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. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

نام

مثال-backend-lb

مکان

منطقه تکی

منطقه

ایالات متحده-شرق1

منطقه

us-east1-b

الگوی نمونه

قالب بک‌اند lb

مقیاس‌بندی خودکار

مقیاس‌بندی خودکار انجام ندهید

تعداد موارد

۱

  1. روی ایجاد کلیک کنید.

یک پورت نامگذاری شده به گروه نمونه اضافه کنید

برای گروه نمونه خود، یک سرویس HTTP تعریف کنید و نام پورت را به پورت مربوطه نگاشت کنید. سرویس متعادل کننده بار، ترافیک را به پورت نامگذاری شده هدایت می‌کند.

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

۵. پیکربندی متعادل‌کننده بار HTTP

متعادل‌کننده بار HTTP را طوری پیکربندی کنید که ترافیک را به backend شما ارسال کند : lb-backend-example

پیکربندی را شروع کنید

  1. در کنسول ابری، روی منوی ناوبری (Navigation menu ) کلیک کنید. منوی اصلی.png ) > روی سرویس‌های شبکه > متعادل‌سازی بار کلیک کنید، و سپس روی ایجاد متعادل‌کننده بار کلیک کنید.
  2. در زیر بخش HTTP(S) Load Balancing ، روی شروع پیکربندی کلیک کنید.

4f8b8cb10347ecec.png

  1. گزینه‌ی «از اینترنت تا ماشین‌های مجازی من» ، «متعادل‌کننده‌ی بار کلاسیک HTTP(S)» را انتخاب کنید و روی «ادامه» کلیک کنید.
  2. نام را روی http-lb تنظیم کنید.

پیکربندی بخش پشتی

سرویس‌های بک‌اند، ترافیک ورودی را به یک یا چند بک‌اند متصل هدایت می‌کنند. هر بک‌اند از یک گروه نمونه و فراداده‌های ظرفیت سرویس‌دهی اضافی تشکیل شده است.

  1. روی پیکربندی Backend کلیک کنید.
  2. برای سرویس‌های بک‌اند و باکت‌های بک‌اند ، روی ایجاد یک سرویس بک‌اند کلیک کنید.
  3. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (گزینه را مطابق با موارد مشخص شده انتخاب کنید)

نام

http-backend

پروتکل

اچ‌تی‌پی

بندر نامگذاری شده

اچ تی پی

گروه نمونه

مثال-backend-lb

شماره پورت‌ها

۸۰

  1. روی انجام شد کلیک کنید.
  2. روی افزودن بخش پشتیبانی کلیک کنید.
  3. برای بررسی سلامت ، ایجاد یک بررسی سلامت را انتخاب کنید.

۱۶۸a9ba1062b1f45.png

  1. مقادیر زیر را تنظیم کنید، سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (گزینه را مطابق با موارد مشخص شده انتخاب کنید)

نام

http-health-check

پروتکل

تی سی پی

بندر

۸۰

dc45bc726bb4dfad.png

  1. روی ذخیره کلیک کنید.
  2. کادر فعال کردن ثبت وقایع را علامت بزنید.
  3. نرخ نمونه‌برداری را روی ۱ تنظیم کنید:

c8f884fa4a8cd50.png

  1. برای ایجاد سرویس backend روی Create کلیک کنید.

۱fd2ad21b1d32a95.png

پیکربندی ظاهر (frontend)

قوانین میزبان و مسیر، نحوه هدایت ترافیک شما را تعیین می‌کنند. برای مثال، می‌توانید ترافیک ویدیو را به یک backend و ترافیک استاتیک را به backend دیگر هدایت کنید. با این حال، شما در این آزمایش، قوانین میزبان و مسیر را پیکربندی نمی‌کنید.

  1. روی پیکربندی Frontend کلیک کنید.
  2. موارد زیر را مشخص کنید و سایر مقادیر را به صورت پیش‌فرض باقی بگذارید:

ملک

مقدار (مقدار را تایپ کنید یا گزینه مشخص شده را انتخاب کنید)

پروتکل

اچ‌تی‌پی

نسخه آی‌پی

آی‌پی‌وی۴

آدرس آی‌پی

زودگذر

بندر

۸۰

  1. روی انجام شد کلیک کنید.

بررسی و ایجاد متعادل‌کننده بار HTTP

  1. روی بررسی و نهایی کردن کلیک کنید.

478e5e51057af3a3.png

  1. سرویس‌های Backend و Frontend را بررسی کنید.
  2. روی ایجاد کلیک کنید.
  3. صبر کنید تا متعادل‌کننده بار ایجاد شود.
  4. روی نام متعادل‌کننده بار ( http-lb ) کلیک کنید.
  5. آدرس IPv4 متعادل‌کننده بار را برای کار بعدی یادداشت کنید. ما آن را به صورت [LB_IP_v4] خواهیم نامید.

۶. متعادل‌کننده بار HTTP را آزمایش کنید

حالا که HTTP Load Balancer را برای سرورهای backend خود ایجاد کرده‌اید، مطمئن شوید که ترافیک به سرویس backend ارسال می‌شود. برای آزمایش دسترسی IPv4 به HTTP Load Balancer، یک تب جدید در مرورگر خود باز کنید و به آدرس http://[LB_IP_v4] بروید. مطمئن شوید که [LB_IP_v4] را با آدرس IPv4 سرور load balancer جایگزین می‌کنید.

۷. توکن جلسه reCAPTCHA و کلید سایت صفحه چالش را ایجاد و مستقر کنید

یکپارچه‌سازی reCAPTCHA Enterprise برای WAF و Google Cloud Armor ویژگی‌های زیر را ارائه می‌دهد: صفحه چالش reCAPTCHA ، توکن‌های اکشن reCAPTCHA و توکن‌های نشست reCAPTCHA . در این آزمایشگاه کد، ما کلید سایت توکن نشست reCATCHA و سایت صفحه چالش reCAPTCHA WAF را پیاده‌سازی خواهیم کرد.

ایجاد توکن جلسه reCAPTCHA و کلید سایت صفحه چالش WAF

قبل از ایجاد کلید سایت توکن جلسه و کلید سایت صفحه چالش، دوباره بررسی کنید که آیا reCAPTCHA Enterprise API را همانطور که در بخش "فعال کردن API" در ابتدا ذکر شده است، فعال کرده‌اید یا خیر.

جاوا اسکریپت reCAPTCHA پس از ارزیابی، یک توکن جلسه reCAPTCHA را به عنوان یک کوکی در مرورگر کاربر نهایی تنظیم می‌کند. مرورگر کاربر نهایی کوکی را پیوست می‌کند و تا زمانی که جاوا اسکریپت reCAPTCHA فعال باشد، کوکی را به‌روزرسانی می‌کند.

  1. کلید سایت توکن جلسه reCAPTCHA را ایجاد کنید و ویژگی WAF را برای این کلید فعال کنید. همچنین سرویس WAF را روی Cloud Armor تنظیم خواهیم کرد تا ادغام Cloud Armor فعال شود.
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 challenge-page را ایجاد کنید و ویژگی WAF را برای کلید فعال کنید. می‌توانید از ویژگی صفحه چالش reCAPTCHA برای هدایت درخواست‌های ورودی به reCAPTCHA Enterprise استفاده کنید تا مشخص شود که آیا هر درخواست به طور بالقوه جعلی یا قانونی است. بعداً این کلید را با سیاست امنیتی Cloud Armor مرتبط خواهیم کرد تا چالش دستی را فعال کنیم. در مراحل بعدی به این کلید 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. به منوی ناوبری بروید ( منوی اصلی.png ) > امنیت > reCAPTCHA Enterprise. شما باید کلیدهایی را که ایجاد کرده‌اید در بخش Enterprise Keys ببینید -

4e2567aae0eb92d7.png

پیاده‌سازی کلید سایت توکن جلسه reCAPTCHA

  1. به منوی ناوبری بروید ( منوی اصلی.png ) > موتور محاسبه > نمونه‌های ماشین مجازی. ماشین مجازی را در گروه نمونه خود پیدا کنید و به آن SSH بزنید.

6d7b0fd12a667b5f.png

  1. به دایرکتوری ریشه وب سرور بروید و کاربر را به root تغییر دهید -
@lb-backend-example-4wmn:~$ cd /var/www/html/
@lb-backend-example-4wmn:/var/www/html$ sudo su
  1. صفحه لندینگ ایندکس.html را به‌روزرسانی کنید و کلید سایت توکن جلسه reCAPTCHA را در آن جاسازی کنید. کلید سایت توکن جلسه در بخش سرصفحه صفحه فرود شما به صورت زیر تنظیم می‌شود -

<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

۸. ایجاد قوانین سیاست امنیتی Cloud Armor برای مدیریت ربات‌ها

در این بخش، شما از قوانین مدیریت ربات Cloud Armor برای اجازه دادن، رد کردن و تغییر مسیر درخواست‌ها بر اساس امتیاز reCAPTCHA استفاده خواهید کرد. به یاد داشته باشید که هنگام ایجاد کلید سایت توکن جلسه، امتیاز آزمایش را 0.5 تعیین کرده‌اید.

  1. در Cloud Shell (برای دستورالعمل‌های نحوه استفاده از Cloud Shell به « شروع Cloud Shell » در بخش « تنظیمات و الزامات » مراجعه کنید)، از طریق gcloud سیاست امنیتی ایجاد کنید:
gcloud compute security-policies create recaptcha-policy \
    --description "policy for bot management"
  1. برای استفاده از چالش دستی reCAPTCHA Enterprise برای تمایز بین کلاینت‌های انسانی و خودکار، کلید سایت چالش reCAPTCHA WAF که برای چالش دستی ایجاد کردیم را با سیاست امنیتی مرتبط کنید. "CHALLENGE-PAGE-KEY" را با کلیدی که ایجاد کردیم جایگزین کنید -
gcloud compute security-policies update recaptcha-policy \
   --recaptcha-redirect-site-key "CHALLENGE-PAGE-KEY"
  1. یک قانون مدیریت ربات اضافه کنید تا در صورتی که مسیر url با good-score.html مطابقت داشته باشد و امتیاز آن بیشتر از 0.4 باشد، به ترافیک اجازه عبور دهد.
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 مطابقت دارد و امتیاز آن کمتر از 0.6 است، ترافیک را مسدود کند.
  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. یک قانون مدیریت ربات اضافه کنید تا اگر مسیر آدرس اینترنتی با median-score.html مطابقت دارد و امتیاز آن برابر با ۰.۵ است، ترافیک را به Google reCAPTCHA هدایت کند.
  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. سیاست امنیتی را به سرویس backend http-backend پیوست کنید:
gcloud compute backend-services update http-backend \
    --security-policy recaptcha-policy –-global
  1. در کنسول، به منوی ناوبری > امنیت شبکه > ابر زرهی بروید.
  2. روی recaptcha-policy کلیک کنید . policy شما باید شبیه به موارد زیر باشد:

74852618aaa96786.png

۹. اعتبارسنجی مدیریت ربات با Cloud Armor

  1. یک مرورگر باز کنید و آدرس http://[LB_IP_v4]/index.html را وارد کنید. به قسمت "Visit allow link" بروید. باید به شما اجازه عبور داده شود -

edf3e6ca238d2ee7.png

  1. برای اطمینان از اینکه یک جلسه جدید داریم، یک پنجره جدید در حالت ناشناس باز کنید. آدرس اینترنتی http://[LB_IP_v4]/index.html را وارد کنید و به قسمت "بازدید از لینک مسدود شده" بروید. باید خطای HTTP 403 دریافت کنید -

ecef5655b291dbb0.png

  1. برای اطمینان از اینکه یک جلسه جدید داریم، یک پنجره جدید در حالت ناشناس باز کنید. آدرس اینترنتی http://[LB_IP_v4]/index.html را وارد کنید و به "لینک تغییر مسیر بازدید" بروید. شما باید تغییر مسیر به Google reCAPTCHA و صفحه چالش دستی را مانند زیر مشاهده کنید -

53ed2b4067b55436.png

لاگ‌های Cloud Armor را تأیید کنید

برای تأیید صحت عملکرد مدیریت ربات مطابق انتظار، گزارش‌های مربوط به سیاست‌های امنیتی را بررسی کنید.

  1. در کنسول، به منوی ناوبری > امنیت شبکه > ابر زرهی بروید.
  2. روی recaptcha-policy کلیک کنید.
  3. روی گزارش‌ها کلیک کنید.

۴۶fd۸۲۵d۸۵۰۶d۳۵۵.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.ExpandforcedSecurityPolicy را باز کنید.

b7b1712642cf092b.png

  1. همین کار را برای http://[LB_IP_v4]/bad-score.html و http://[LB_IP_v4]/median-score.html تکرار کنید.

c28f96d83056725a.png

8c4803d75a77142c.png

توجه داشته باشید که عمل پیکربندی‌شده روی ALLOW، DENY یا GOOGLE_RECAPTCHA با نام recaptcha-policy تنظیم شده است.

تبریک! شما این آزمایشگاه در مورد مدیریت ربات با Cloud Armor را به پایان رساندید.

©2020 Google LLC تمامی حقوق محفوظ است. گوگل و لوگوی گوگل علائم تجاری Google LLC هستند. سایر نام‌های شرکت‌ها و محصولات ممکن است علائم تجاری شرکت‌های مربوطه باشند که با آنها مرتبط هستند.

۱۰. تمیز کردن آزمایشگاه

  1. به Network Security >> Cloud Armor >> %POLICY NAME% بروید و گزینه delete را انتخاب کنید -

۲۶۴۶f۹c۱df۰۹۳f۹۰.png

  1. به Networking >> Network services >> Load Balancing بروید. متعادل‌کننده‌ی بار (load balancer) که ایجاد کرده‌اید را انتخاب کنید و روی حذف کلیک کنید.

8ad4f55dc06513f7.png

سرویس backend و بررسی سلامت را به عنوان منابع اضافی برای حذف انتخاب کنید -

f6f02bb56add6420.png

  1. به منوی ناوبری بروید ( منوی اصلی.png ) > موتور محاسبه > گروه‌های نمونه. گروه نمونه مدیریت‌شده را انتخاب کرده و روی حذف کلیک کنید -

2116b286954fd6.png

با تایپ کردن "delete" در کادر متن، حذف را تأیید کنید.

منتظر بمانید تا گروه نمونه مدیریت‌شده حذف شود. این کار، نمونه موجود در گروه را نیز حذف می‌کند. شما می‌توانید الگوها را تنها پس از حذف گروه نمونه حذف کنید.

  1. از پنل سمت چپ به Instance templates بروید. الگوی نمونه را انتخاب کرده و روی حذف کلیک کنید.
  2. به منوی ناوبری بروید ( منوی اصلی.png ) > شبکه VPC > فایروال . قوانین default-allow-health-check و allow-ssh را انتخاب کرده و روی حذف کلیک کنید.
  3. به منوی ناوبری بروید ( منوی اصلی.png ) > امنیت > reCAPTCHA Enterprise. کلیدهایی که ایجاد کردیم را انتخاب کرده و آن را حذف کنید. با تایپ کردن "DELETE" در کادر متن، حذف را تأیید کنید.

e71ecd11baf262ca.png

۱۱. تبریک می‌گویم!

شما با موفقیت مدیریت ربات را با Cloud Armor پیاده‌سازی کردید. یک متعادل‌کننده بار HTTP را پیکربندی کردید. سپس، کلید سایت توکن نشست reCAPTCHA را در یک صفحه وب ایجاد و پیاده‌سازی کردید. همچنین یاد گرفتید که یک کلید سایت صفحه چالش ایجاد کنید. سیاست مدیریت ربات Cloud Armor را تنظیم کردید و نحوه رسیدگی آنها به درخواست‌ها را بر اساس قوانین تأیید کردید. شما توانستید گزارش‌های سیاست امنیتی را بررسی کنید تا مشخص کنید که چرا ترافیک مجاز، مسدود یا هدایت شده است.

آنچه ما پوشش داده‌ایم

  • نحوه تنظیم قالب‌های نمونه و ایجاد گروه‌های نمونه مدیریت‌شده.
  • نحوه تنظیم متعادل کننده بار HTTP.
  • نحوه ایجاد یک سیاست مدیریت ربات Cloud Armor.
  • نحوه ایجاد و پیاده‌سازی کلید سایت توکن جلسه reCAPTCHA.
  • نحوه ایجاد و پیاده‌سازی کلید سایت صفحه چالش reCAPTCHA.
  • چگونه می‌توان تأیید کرد که سیاست مدیریت ربات طبق برنامه کار می‌کند.

مراحل بعدی

  • سعی کنید توکن‌های اکشن reCAPTCHA را تنظیم کنید.