টিসিপি প্রক্সি কোডল্যাব - টিসিপি প্রক্সি লোড ব্যালেন্সারের সাথে রেট লিমিটিং এবং আইপি অস্বীকার তালিকা

1। পরিচিতি

Google ক্লাউড লোড ব্যালেন্সিং সারা বিশ্বের Google পয়েন্ট অফ উপস্থিতিতে (POP) Google-এর নেটওয়ার্কের প্রান্তে স্থাপন করা হয়। একটি TCP প্রক্সি লোড ব্যালেন্সারের দিকে নির্দেশিত ব্যবহারকারীর ট্র্যাফিক ব্যবহারকারীর সবচেয়ে কাছের POP-এ প্রবেশ করে এবং তারপরে Google-এর গ্লোবাল নেটওয়ার্কের মাধ্যমে ভারসাম্যপূর্ণভাবে নিকটতম ব্যাকএন্ডে লোড করা হয় যার পর্যাপ্ত ক্ষমতা উপলব্ধ।

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

Google ক্লাউড TCP/SSL প্রক্সি লোড ব্যালেন্সারগুলি আপনাকে আপনার ব্যাকএন্ড পরিষেবাগুলির মধ্যে TCP/ SSL প্রকারের ট্র্যাফিক প্রক্সি করার অনুমতি দেয়৷

এই ল্যাবে, আপনি একটি ব্যাকএন্ড পরিষেবা সহ একটি TCP/SSL লোড ব্যালেন্সার তৈরি করবেন এবং লোড ব্যালেন্সারের অ্যাক্সেস শুধুমাত্র ব্যবহারকারী ক্লায়েন্টদের একটি নির্দিষ্ট সেটের জন্য সীমাবদ্ধ করবেন।

be33dadf836374bb.png

আপনি কি শিখবেন

  • কিভাবে একটি TCP/SSL প্রক্সি লোড ব্যালেন্সার তৈরি করবেন
  • ক্লাউড আর্মার সুরক্ষা নীতি কীভাবে তৈরি করবেন
  • ক্লাউড আর্মারে টিসিপি/এসএসএল প্রক্সি লোড ব্যালেন্সারের জন্য কীভাবে আইপি অস্বীকার তালিকার নিয়ম তৈরি করবেন
  • ক্লাউড আর্মারে TCP প্রক্সি লোড ব্যালেন্সারের জন্য একটি হার সীমিত করার নিয়ম কীভাবে তৈরি করবেন
  • কিভাবে একটি TCP/SSL লোড ব্যালেন্সিং ব্যাকএন্ড পরিষেবাতে নিরাপত্তা নীতি যোগ করবেন

আপনি কি প্রয়োজন হবে

  • গুগল কম্পিউট ইঞ্জিনের প্রাথমিক জ্ঞান ( কোডল্যাব )
  • বেসিক নেটওয়ার্কিং এবং TCP/IP জ্ঞান
  • মৌলিক ইউনিক্স/লিনাক্স কমান্ড লাইন জ্ঞান
  • Google ক্লাউডে নেটওয়ার্কিংয়ের সাথে GCP-এ নেটওয়ার্কিং-এর একটি ট্যুর সম্পূর্ণ করা সহায়ক

2. প্রয়োজনীয়তা

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

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

দ্রষ্টব্য: আপনি সহজেই ক্লাউড কনসোল এর URL, যা console.cloud.google.com মুখস্থ করে অ্যাক্সেস করতে পারেন৷

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটিকে পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে৷

দ্রষ্টব্য: আপনি যদি একটি Gmail অ্যাকাউন্ট ব্যবহার করেন, আপনি ডিফল্ট অবস্থানটি কোন প্রতিষ্ঠানে সেট করে রাখতে পারেন। আপনি যদি Google Workspace অ্যাকাউন্ট ব্যবহার করেন, তাহলে এমন একটি লোকেশন বেছে নিন যা আপনার প্রতিষ্ঠানের জন্য উপযুক্ত।

  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

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

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

তুমি শুরু করার আগে

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

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

3. ব্যাকএন্ড পরিষেবা তৈরি করুন

নিম্নরূপ 2টি উদাহরণ তৈরি করুন - us-central1-b জোনে instance1-b1 তৈরি করুন

gcloud compute instances create vm-1-b1 \
    --image-family debian-9 \
    --image-project debian-cloud \
    --tags tcp-lb \
    --zone us-central1-b \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
      sudo service apache2 restart
      echo '<!doctype html><html><body><h1>This is VM1-b1 in central1-b</h1></body></html>' | tee /var/www/html/index.html
      EOF"

জোন us-সেন্ট্রাল1-বি-তে উদাহরণ 1-b2 তৈরি করুন

gcloud compute instances create vm-1-b2 \
    --image-family debian-9 \
    --image-project debian-cloud \
    --tags tcp-lb \
    --zone us-central1-b \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf
      sudo service apache2 restart
      echo '<!doctype html><html><body><h1>This is VM1-b2 in central1-b</h1></body></html>' | tee /var/www/html/index.html
      EOF"

একটি উদাহরণ গ্রুপ vm-ig1 তৈরি করুন

gcloud compute instance-groups unmanaged create vm-ig1  --zone us-central1-b

উদাহরণ গোষ্ঠীর জন্য একটি নামযুক্ত পোর্ট তৈরি করুন। এই ল্যাবের জন্য, আমরা পোর্ট 110 ব্যবহার করব

    gcloud compute instance-groups set-named-ports vm-ig1 \
--named-ports tcp 110:110 --zone us-central1-b

দৃষ্টান্ত গ্রুপে দৃষ্টান্ত যোগ করুন

gcloud compute instance-groups unmanaged add-instances vm-ig1 \
   --instances vm-1-b1,vm-1-b2 --zone us-central1-b

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

পরবর্তী, আমরা একটি স্বাস্থ্য পরীক্ষা তৈরি করব।

gcloud compute health-checks create tcp my-tcp-health-check --port 110

একটি ব্যাকএন্ড পরিষেবা তৈরি করুন

gcloud compute backend-services create my-tcp-lb  --global-health-checks --global \
--protocol TCP --health-checks my-tcp-health-check --timeout 5m --port-name tcp110

ব্যাকএন্ড সার্ভিসে ইনস্ট্যান্স গ্রুপ যোগ করুন

gcloud compute backend-services add-backend my-tcp-lb --global --instance-group \ vm-ig1 --instance-group-zone us-central1-b --balancing-mode UTILIZATION \ --max-utilization 0.8

একটি লক্ষ্য TCP প্রক্সি কনফিগার করুন

gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy --backend-service \ my-tcp-lb --proxy-header NONE

বিশ্বব্যাপী স্ট্যাটিক IPv4 ঠিকানা সংরক্ষণ করুন

আপনার ভারসাম্যপূর্ণ পরিষেবাতে পৌঁছানোর জন্য আপনি এই আইপি ঠিকানাটি ব্যবহার করবেন।

gcloud compute addresses create tcp-lb-static-ipv4  --ip-version=IPV4   --global

এলবি আইপি ঠিকানার জন্য বিশ্বব্যাপী ফরওয়ার্ডিং নিয়মগুলি কনফিগার করুন।

gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \
    --global --target-tcp-proxy my-tcp-lb-target-proxy --address LB_STATIC_IPV4 \ --ports 110

5. TCP প্রক্সি লোড ব্যালেন্সারের জন্য একটি ফায়ারওয়াল নিয়ম তৈরি করা

gcloud compute firewall-rules create allow-tcplb-and-health \
   --source-ranges 130.211.0.0/22,35.191.0.0/16 \
   --target-tags tcp-lb \
   --allow tcp:110

একবার আপনার লোড ব্যালেন্সার তৈরি হয়ে গেলে নিম্নলিখিত কমান্ড দিয়ে পরীক্ষা করুন

Curl LB_IP:110

এরপর LB-তে অ্যাক্সেস অস্বীকারের বৈধতার জন্য VM তৈরি করুন

আপনার 2টি দৃষ্টান্ত তৈরি করা উচিত, প্রতিটিতে একটি পাবলিক আইপি ঠিকানা এবং নাম test-server1 এবং test-server2 সহ

6. ক্লাউড আর্মারে একটি নিরাপত্তা নীতি তৈরি করুন

এই বিভাগে, আপনি ক্লাউড আর্মারের নীতিতে একটি ব্যাকএন্ড নিরাপত্তা নীতি এবং 2টি নিয়ম তৈরি করবেন।

প্রথম নিয়মটি নির্দিষ্ট আইপি অস্বীকার করার জন্য একটি নিরাপত্তা নীতি সেট করে TCP লোড ব্যালেন্সার অ্যাক্সেস করা থেকে IP-এর একটি সীমিত সেটকে অস্বীকার করবে এবং দ্বিতীয় নিয়মটি রেট লিমিটিং সম্পাদন করবে।

  1. ক্লাউড শেল-এ (ক্লাউড শেল কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলীর জন্য "সেটআপ এবং প্রয়োজনীয়তা" এর অধীনে "স্টার্ট ক্লাউড শেল" পড়ুন), নিম্নরূপ রেট-লিমিট-এন্ড-ডিনি-টিসিপি নামে একটি ব্যাকএন্ড পরিষেবা সুরক্ষা নীতি তৈরি করুন
gcloud compute security-policies create rate-limit-and-deny-tcp \
    --description "policy for tcp proxy rate limiting and IP deny"

নিরাপত্তা নীতিতে নিয়ম যোগ করুন

এরপর ক্লাউড আর্মার নীতিতে একটি অস্বীকার তালিকার নিয়ম যোগ করুন "রেট-সীমা-এবং-অস্বীকার-tcp"৷

gcloud compute security-policies rules create 1000 --action deny --security-policy \ rate-limit-and-deny-tcp --description "deny test-server1" --src-ip-ranges \ "enter-test-server-1ip-here"

ক্লাউড আর্মার নিরাপত্তা নীতিতে একটি হার সীমিত করার নিয়ম যোগ করুন "রেট-সীমা-এবং-অস্বীকার-tcp"

gcloud compute security-policies rules create 3000   \ --security-policy=rate-limit-and-deny-tcp  \       
--expression="true"  --action=rate-based-ban  --rate-limit-threshold-count=5  \          
--rate-limit-threshold-interval-sec=60  --ban-duration-sec=300      \         
--conform-action=allow  --exceed-action=deny-404  --enforce-on-key=IP

টিসিপি প্রক্সি ব্যাকএন্ড পরিষেবাতে নীতি সংযুক্ত করুন:

নিরাপত্তা নীতি টিসিপি প্রক্সি ব্যাকএন্ড পরিষেবার সাথে সংযুক্ত রয়েছে তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি চালান৷

gcloud compute backend-services update my-tcp-lb --security-policy \ rate-limit-and-deny-tcp

TCP প্রক্সি লোড ব্যালেন্সারে লগিং সক্ষম করুন৷

gcloud beta compute backend-services update my-tcp-lb \ 
--enable-logging --logging-sample-rate=1

7. তালিকা অস্বীকার করার নিয়ম বৈধ করুন

টেস্ট-সার্ভারে লগ ইন করে অস্বীকার তালিকা নিয়মটি যাচাই করুন যার আইপি অস্বীকার তালিকা নিয়মে নির্দিষ্ট করা হয়েছিল এবং নিম্নলিখিত কমান্ডটি চালান

Curl LB_IP:110

তাত্ক্ষণিক অনুরোধগুলি LB থেকে একটি প্রতিক্রিয়া দিতে পারে তবে কার্ল অনুরোধটি অস্বীকার করা বা বাদ না হওয়া পর্যন্ত অপেক্ষা করুন এবং তারপর ক্লাউড লগিং-এর লগগুলি দেখে নিন যাতে আইপি অস্বীকার করার নিয়মটি ট্রিগার করা হচ্ছে তার জন্য লগ এন্ট্রি যাচাই করতে৷

ক্লাউড লগিং-এ যান এবং রিসোর্সের অধীনে, "tcp_ssl_proxy_rule" হিসাবে রিসোর্স টাইপ নির্বাচন করুন এবং "my-tcp-lb" হিসাবে ব্যাকএন্ড লক্ষ্য সেট করুন।

ফিল্টারিংয়ের জন্য সংজ্ঞায়িত সংস্থানগুলির সাথে, আমরা লগ এন্ট্রিতে 1000-এর অগ্রাধিকার মান থেকে ip অস্বীকার করার নিয়মটি কার্যকর এবং কনফিগার করা ক্রিয়া "DENY" অ্যাকশন কার্যকর রয়েছে কারণ উভয়কেই অস্বীকার করার নিয়ম এবং IP থেকে নির্দেশ দেওয়া হয়েছিল। নীচে দেখানো হিসাবে অস্বীকার করা হচ্ছে

db9b835e0360dcaf.png

8. হার সীমিত নিয়ম বৈধ

সংজ্ঞায়িত থ্রেশহোল্ড (প্রতি মিনিটে 5 অনুরোধ) অতিক্রম করে একটি সংক্ষিপ্ত সময়ের ফ্রেমে অনেক অনুরোধ পাঠিয়ে হারের সীমা নিয়ম কার্যকর রয়েছে তা যাচাই করুন।

এটি হয়ে গেলে, ক্লাউড আর্মার পরিষেবার ভিউ লগগুলিতে ক্লিক করুন এবং এটি আপনাকে ক্লাউড লগিং-এ নিয়ে যাবে যেখানে আপনি লোড ব্যালেন্সার দ্বারা লগগুলিকে ফিল্টার করতে পারেন যাতে ক্লাউড আর্মার লগগুলি আসে সেগুলি দেখতে৷

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

37c76e5d7532623.png

9. পরিবেশ পরিষ্কার করা

অব্যবহৃত পরিকাঠামোর চলমান খরচ এড়াতে তৈরি পরিকাঠামো পরিষ্কার করতে ভুলবেন না।

দ্রুততম উপায় হল জিসিপি-তে পুরো প্রকল্পটি মুছে ফেলা যাতে নিশ্চিত করা যায় যে সেখানে কোনও ঝুলন্ত সংস্থান অযৌক্তিক বাকি নেই৷ তবে নিম্নলিখিত কমান্ডগুলি দিয়ে পৃথক সংস্থানগুলি মুছুন

TCP প্রক্সি লোড ব্যালেন্সার

gcloud compute target-tcp-proxies delete my-tcp-lb

উদাহরণ গ্রুপ

gcloud compute instance-groups unmanaged delete vm-ig1

2 টেস্ট VM দৃষ্টান্ত তৈরি করা হয়েছে

gcloud compute instances delete Instance_name --zone=instance_zone

ব্যাকএন্ড পরিষেবা

gcloud compute backend-services delete BACKEND_SERVICE_NAME

ক্লাউড আর্মার নীতির মধ্যে নিয়ম

gcloud compute security-policies rules delete 1000  \ --security-policy=rate-limit-and-deny-tcp && 
gcloud compute security-policies rules delete 3000  \ --security-policy=rate-limit-and-deny-tcp

মেঘ বর্ম নিরাপত্তা নীতি

gcloud compute security-policies delete rate-limit-and-deny-tcp