ক্লাউড সিকিউর ওয়েব প্রক্সি (SWP) কোডল্যাব

1. ভূমিকা

ক্লাউড সিকিউর ওয়েব প্রক্সি

ক্লাউড এসডব্লিউপি হল একটি ক্লাউড-প্রথম পরিষেবা যা আপনাকে নিরাপদ ওয়েব ট্রাফিক (HTTP/S) সাহায্য করার জন্য একটি নিরাপদ ওয়েব প্রক্সি প্রদান করে। আপনি স্পষ্টভাবে একটি প্রক্সি হিসাবে ক্লাউড SWP ব্যবহার করার জন্য আপনার ক্লায়েন্টদের কনফিগার করুন৷ ওয়েব অনুরোধ নিম্নলিখিত উত্স থেকে উদ্ভূত হতে পারে:

  • ভার্চুয়াল মেশিন (VM) উদাহরণ
  • পাত্রে
  • একটি সার্ভারহীন পরিবেশ যা একটি সার্ভারবিহীন সংযোগকারী ব্যবহার করে
  • VPC পিয়ারিং জুড়ে কাজের চাপ
  • ক্লাউড ভিপিএন বা ক্লাউড ইন্টারকানেক্ট দ্বারা সংযুক্ত Google ক্লাউডের বাইরে কাজের চাপ

ক্লাউড SWP ক্লাউড-প্রথম পরিচয় এবং ওয়েব অ্যাপ্লিকেশনের উপর ভিত্তি করে নমনীয় এবং দানাদার নীতিগুলি সক্ষম করে৷

সুবিধা

ক্লাউড এসডব্লিউপি একটি প্রতিষ্ঠানকে প্রদান করতে পারে এমন সুবিধার কিছু উদাহরণ নিচে দেওয়া হল:

Google ক্লাউডে মাইগ্রেশন

ক্লাউড SWP আপনাকে Google ক্লাউডে স্থানান্তর করতে সাহায্য করে যখন আপনার বিদ্যমান নিরাপত্তা নীতি এবং প্রস্থান ওয়েব ট্র্যাফিকের জন্য প্রয়োজনীয়তা বজায় রাখে। আপনি তৃতীয় পক্ষের সমাধানগুলি ব্যবহার করা এড়াতে পারেন যার জন্য অন্য ম্যানেজমেন্ট কনসোল বা ম্যানুয়ালি কনফিগারেশন ফাইলগুলি সম্পাদনা করা প্রয়োজন।

বিশ্বস্ত বাহ্যিক ওয়েব পরিষেবাগুলিতে অ্যাক্সেস

ক্লাউড এসডব্লিউপি আপনাকে আপনার ইগ্রেস ওয়েব ট্র্যাফিকের জন্য দানাদার অ্যাক্সেস নীতি প্রয়োগ করতে দেয় যাতে আপনি আপনার নেটওয়ার্ক সুরক্ষিত করতে পারেন। আপনি কাজের চাপ বা অ্যাপ্লিকেশন আইডেন্টিটি তৈরি করেন এবং শনাক্ত করেন এবং তারপর নীতি প্রয়োগ করেন।

অবিশ্বস্ত ওয়েব পরিষেবাগুলিতে নিরীক্ষণ করা অ্যাক্সেস

আপনি অবিশ্বস্ত ওয়েব পরিষেবাগুলিতে নিরীক্ষণ অ্যাক্সেস প্রদান করতে Cloud SWP ব্যবহার করতে পারেন। ক্লাউড এসডব্লিউপি এমন ট্র্যাফিক সনাক্ত করে যা নীতির সাথে সঙ্গতিপূর্ণ নয় এবং এটিকে ক্লাউড লগিং (লগিং) এ লগ করে। তারপরে আপনি ইন্টারনেট ব্যবহার নিরীক্ষণ করতে পারেন, আপনার নেটওয়ার্কের জন্য হুমকি আবিষ্কার করতে পারেন এবং হুমকির জবাব দিতে পারেন।

Google API-এর জন্য দানাদার নীতি নিয়ন্ত্রণ

আপনি Google API-এর জন্য দানাদার নীতি প্রদান করতে Cloud SWP ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি কমন এক্সপ্রেশন ল্যাঙ্গুয়েজ (সিইএল) ব্যবহার করে বালতি/অবজেক্ট লেভেল নীতি সেট করতে পারেন।

সমর্থিত বৈশিষ্ট্য

Cloud SWP নিম্নলিখিত বৈশিষ্ট্যগুলিকে সমর্থন করে:

স্পষ্ট প্রক্সি পরিষেবা

প্রক্সি সার্ভার ব্যবহার করার জন্য ক্লায়েন্টদের অবশ্যই স্পষ্টভাবে কনফিগার করতে হবে। ক্লাউড SWP প্রক্সি ক্লায়েন্টের পক্ষে নতুন TCP সংযোগ তৈরি করে ইন্টারনেট থেকে ক্লায়েন্টদের বিচ্ছিন্ন করে।

অটোস্কেলিং ক্লাউড SWP দূত প্রক্সি

এনভয় প্রক্সি পুলের আকার এবং একটি অঞ্চলে পুলের ক্ষমতা স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে সমর্থন করে, যা সর্বনিম্ন খরচে উচ্চ-চাহিদার সময়কালে সামঞ্জস্যপূর্ণ কর্মক্ষমতা সক্ষম করে।

মডুলার প্রস্থান অ্যাক্সেস নীতি

ক্লাউড SWP বিশেষভাবে নিম্নলিখিত প্রস্থান নীতিগুলি সমর্থন করে:

  • সুরক্ষিত ট্যাগ, পরিষেবা অ্যাকাউন্ট বা আইপি ঠিকানার উপর ভিত্তি করে উৎস-পরিচয়।
  • URL, হোস্টনামের উপর ভিত্তি করে গন্তব্য।
  • পদ্ধতি, শিরোনাম, বা URL-এর উপর ভিত্তি করে অনুরোধ। তালিকা, ওয়াইল্ডকার্ড বা প্যাটার্ন ব্যবহার করে URL গুলি নির্দিষ্ট করা যেতে পারে।
  • এন্ড-টু-এন্ড এনক্রিপশন: ক্লায়েন্ট-প্রক্সি টানেলগুলি TLS এর মাধ্যমে ট্রানজিট হতে পারে। ক্লাউড SWP গন্তব্য সার্ভারে ক্লায়েন্ট-ইনিশিয়েটেড, এন্ড-টু-এন্ড TLS সংযোগের জন্য HTTP/S কানেক্টকেও সমর্থন করে।

সরলীকৃত ক্লাউড NAT ইন্টিগ্রেশন

Cloud NAT স্বয়ংক্রিয়ভাবে অতিরিক্ত পাবলিক আইপি ঠিকানার ব্যবস্থা করে যখন ক্লাউড SWP ট্রাফিক পরিবেশন করে এমন প্রক্সিগুলির সেট বৃদ্ধি পায়।

ম্যানুয়াল স্ট্যাটিক পাবলিক আইপি ঠিকানাগুলি তাদের জন্য একটি বিকল্প যা ইগ্রেস আইপি জানতে চায়।

ক্লাউড অডিট লগ এবং Google ক্লাউডের অপারেশন স্যুট ইন্টিগ্রেশন

ক্লাউড অডিট লগ এবং Google ক্লাউডের অপারেশন স্যুট প্রশাসনিক কার্যকলাপ এবং ক্লাউড SWP-সম্পর্কিত সংস্থানগুলির অ্যাক্সেসের অনুরোধগুলি রেকর্ড করে৷ তারা প্রক্সি দ্বারা পরিচালিত অনুরোধগুলির জন্য মেট্রিক্স এবং লেনদেনের লগগুলিও রেকর্ড করে৷

TLS পরিদর্শন

সিকিউর ওয়েব প্রক্সি একটি TLS পরিদর্শন পরিষেবা অফার করে যা আপনাকে TLS ট্র্যাফিক আটকাতে, এনক্রিপ্ট করা অনুরোধ পরিদর্শন করতে এবং নিরাপত্তা নীতিগুলি প্রয়োগ করতে দেয়৷

  • সার্টিফিকেট অথরিটি সার্ভিস (CAS) এর সাথে কঠোর ইন্টিগ্রেশন, যা প্রাইভেট CA-এর জন্য অত্যন্ত উপলব্ধ এবং মাপযোগ্য সংগ্রহস্থল।
  • প্রয়োজনে আপনার নিজের বিশ্বাসের মূল ব্যবহার করার ক্ষমতা। এছাড়াও আপনি CAS-এর অধীনে থাকা অধস্তন CA-এর জন্য সাইন করার জন্য একটি বিদ্যমান রুট CA ব্যবহার করতে পারেন। আপনি যদি চান, আপনি CAS-এর মধ্যে একটি নতুন রুট শংসাপত্র তৈরি করতে পারেন।
  • সিকিউর ওয়েব প্রক্সি নীতি নিয়মের মধ্যে SessionMatcher এবং ApplicationMatcher ব্যবহার করে দানাদার ডিক্রিপশনের মানদণ্ড। এই মানদণ্ডে ইউআরএল তালিকা, নিয়মিত এক্সপ্রেশন, আইপি অ্যাড্রেস রেঞ্জ এবং অনুরূপ অভিব্যক্তিতে উপস্থিত মিলিত হোস্ট অন্তর্ভুক্ত রয়েছে। যদি প্রয়োজন হয়, মানদণ্ড বুলিয়ান এক্সপ্রেশনের সাথে একত্রিত করা যেতে পারে।
  • প্রতিটি নিরাপদ ওয়েব প্রক্সি নীতি তার নিজস্ব TLS পরিদর্শন নীতি এবং CA পুল দিয়ে কনফিগার করা যেতে পারে। বিকল্পভাবে, একাধিক সুরক্ষিত ওয়েব প্রক্সি নীতি একটি একক TLS পরিদর্শন নীতি ভাগ করতে পারে।

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

  • কিভাবে ক্লাউড SWP স্থাপন এবং পরিচালনা করতে হয়।

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

  • দৃষ্টান্ত স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
  • ভিপিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান

2. পরীক্ষা পরিবেশ

এই কোডল্যাব একটি একক VPC লাভ করবে। এই পরিবেশে একটি কম্পিউট রিসোর্স ক্লাউড এসডব্লিউপি ব্যবহার করে প্রস্থান করবে যেমনটি নীচের চিত্রে দেখা গেছে।

1264e30caa136365.png

এই ল্যাবে, আমাদের 2টি কাজের চাপ থাকবে।

ক্লায়েন্ট A-কে ক্লাউড SWP-এ সমস্ত HTTP/HTTPS অনুরোধ পাঠানোর জন্য কনফিগার করা হবে।

ক্লায়েন্ট B ক্লাউড SWP-এ স্পষ্টভাবে HTTP/HTTPS অনুরোধ পাঠানোর জন্য কনফিগার করা হবে না , বরং ইন্টারনেট আবদ্ধ ট্রাফিকের জন্য ক্লাউড NAT-এর সুবিধা গ্রহণ করবে।

3. আপনি শুরু করার আগে

কোডল্যাবের জন্য একটি একক প্রকল্প প্রয়োজন।

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

export project_id=`gcloud config list --format="value(core.project)"`
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export region=us-west1
export zone=us-west1-a
export prefix=codelab-swp
export member="serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com"

4. APIs সক্ষম করুন৷

পণ্য ব্যবহার করার জন্য API সক্রিয় করুন

gcloud services enable networksecurity.googleapis.com
gcloud services enable certificatemanager.googleapis.com
gcloud services enable networkservices.googleapis.com

5. ভিপিসি নেটওয়ার্ক, সাবনেট এবং প্রক্সি-শুধু সাবনেট তৈরি করুন

ভিপিসি নেটওয়ার্ক

Codelab-swp-vpc VPC তৈরি করুন:

gcloud compute networks create $prefix-vpc --subnet-mode=custom 

সাবনেট

নির্বাচিত অঞ্চলে সংশ্লিষ্ট সাবনেট তৈরি করুন:

gcloud compute networks subnets create $prefix-vpc-subnet \
   --range=10.10.10.0/24 --network=$prefix-vpc --region=$region

প্রক্সি-শুধু সাবনেট

নির্বাচিত অঞ্চলে একটি প্রক্সি-শুধু সাবনেট তৈরি করুন:

gcloud compute networks subnets create $prefix-proxy-only-subnet --purpose=REGIONAL_MANAGED_PROXY --role=ACTIVE --region=$region --network=$prefix-vpc --range=172.16.0.0/23

6. ফায়ারওয়াল নিয়ম তৈরি করুন

IAP কে আপনার VM দৃষ্টান্তের সাথে সংযোগ করার অনুমতি দিতে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:

  • আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য হতে চান এমন সমস্ত VM দৃষ্টান্তগুলিতে প্রযোজ্য।
  • IP পরিসর 35.235.240.0/20 থেকে ট্র্যাফিক প্রবেশের অনুমতি দেয়। এই পরিসরে সমস্ত আইপি ঠিকানা রয়েছে যা IAP TCP ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।

ক্লাউডশেল থেকে:

gcloud compute firewall-rules create $prefix-allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=$prefix-vpc \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20

7. ক্লাউড রাউটার এবং ক্লাউড NAT তৈরি করুন

Cloud NAT এর জন্য ক্লাউড রাউটার তৈরি করুন।

gcloud compute routers create ${prefix}-cr \
--region=$region \
--network=${prefix}-vpc

ক্লায়েন্ট বি এর জন্য ক্লাউড NAT গেটওয়ে তৈরি করুন।

gcloud compute routers nats create $prefix-nat-gw-$region \
--router=$prefix-cr \
--router-region=$region \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges

8. একটি গেটওয়ে নিরাপত্তা নীতি তৈরি করুন

একটি yaml ফাইল তৈরি করুন যাতে নীতির জন্য প্রাসঙ্গিক তথ্য রয়েছে:

cat > /tmp/policy.yaml << EOF
description: Policy to allow .com traffic, then (/index.html), and finally TLS.
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
EOF

yaml ফাইল থেকে নীতি তৈরি করতে gcloud কমান্ডটি চালান:

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

9. একটি গেটওয়ে নিরাপত্তা নীতি নিয়ম তৈরি করুন

একটি yaml ফাইল তৈরি করুন যাতে নিয়ম রয়েছে। এই নিয়মগুলি কমন এক্সপ্রেশন ল্যাঙ্গুয়েজে (সিইএল) উপস্থাপন করা হয়। এই ল্যাবটি একটি সাধারণ নিয়ম ব্যবহার করবে যা .com ডোমেনে ট্রাফিকের অনুমতি দেবে এবং অন্য সকলকে ব্লক করবে:

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
EOF

এখন আমরা নিয়মটিকে গেটওয়ে নিরাপত্তা নীতিতে আবদ্ধ করতে পারি:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

10. একটি শংসাপত্র তৈরি করুন এবং ক্লাউড সার্টিফিকেট ম্যানেজারে আপলোড করুন৷

কাজের চাপ ট্র্যাফিক বন্ধ করতে একটি শংসাপত্র তৈরি করুন:

openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -subj '/CN=www.codelab-swp.com' -nodes -addext \
  "subjectAltName = DNS:www.codelab-swp.com"

ক্লাউড সার্টিফিকেট ম্যানেজারের কাছে শংসাপত্রটি আপলোড করুন যাতে SWP এটিকে নিরাপত্তা গেটওয়ে নীতিতে উল্লেখ করতে পারে।

gcloud certificate-manager certificates create ${prefix}-cert --location=${region} --private-key-file=/tmp/key.pem --certificate-file=/tmp/cert.pem

11. SWP গেটওয়ে তৈরি করুন

পূর্ববর্তী তথ্য যেমন সার্টিফিকেট, গেটওয়ে নিরাপত্তা নীতি, নেটওয়ার্ক এবং সাবনেট উল্লেখ করতে SWP গেটওয়ের জন্য yaml ফাইল তৈরি করুন।

cat > /tmp/gateway.yaml << EOF
name: projects/${project_id}/locations/${region}/gateways/${prefix}-gateway
type: SECURE_WEB_GATEWAY
addresses: [10.10.10.50]
ports: [443]
certificateUrls: [projects/${project_id}/locations/${region}/certificates/${prefix}-cert]
gatewaySecurityPolicy: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
network: projects/${project_id}/global/networks/${prefix}-vpc
subnetwork: projects/${project_id}/regions/${region}/subnetworks/${prefix}-vpc-subnet
EOF

গেটওয়ে তৈরি করুন:

gcloud network-services gateways import ${prefix}-swp --source=/tmp/gateway.yaml --location=${region}

গেটওয়ে তৈরি করা হয়েছে তা নিশ্চিত করুন:

gcloud network-services gateways describe ${prefix}-swp --location ${region}

12. কম্পিউট ইনস্ট্যান্স তৈরি করুন

যেহেতু ক্লাউড SWP একটি সুস্পষ্ট প্রক্সি, তাই কাজের চাপের ট্রাফিকের জন্য আমাদের স্পষ্টভাবে প্রক্সি আইপি নির্দিষ্ট করতে হবে। কম্পিউট ইনস্ট্যান্স ক্লায়েন্টএ এর পরিবেশ পরিবর্তনশীল সেট থাকবে। ক্লায়েন্টবি হবে না।

কম্পিউট দৃষ্টান্ত ক্লায়েন্টএ এবং ক্লায়েন্টবি তৈরি করুন:

gcloud compute instances create clienta \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.10 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
sudo echo http_proxy=https://10.10.10.50:443/ >> /etc/environment
sudo echo https_proxy=https://10.10.10.50:443/ >> /etc/environment
'
gcloud compute instances create clientb \
   --subnet=$prefix-vpc-subnet \
   --no-address \
   --private-network-ip=10.10.10.200 \
   --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
'

13. টেস্টিং সেশন ম্যাচিং

"ক্লায়েন্টা" কম্পিউট VM-এ SSH সম্প্রতি তৈরি হয়েছে। এই VM-এ ক্লাউড SWP ব্যবহার করার জন্য পরিবেশগত পরিবর্তনশীল সেট রয়েছে।

ক্লাউডশেল থেকে:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

কার্যকারিতা যাচাই করতে কিছু ওয়েব কোয়েরি চালান। আমাদের প্রয়োজন -প্রক্সি-অনিরাপদ কারণ আমরা এই ল্যাবের জন্য একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করেছি:

curl https://google.com --proxy-insecure

প্রত্যাশিত আউটপুট:

davidtu@clienta:~$ curl https://google.com --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

আপনি দেখতে পাচ্ছেন, অনুরোধটি "সফল" ছিল। আশা করা হচ্ছে যে ওয়েবসাইটটি https://www.google.com- এ পুনঃনির্দেশিত হওয়ার কারণে আমরা একটি 301 পুনঃনির্দেশ দেখতে পাব।

নিম্নলিখিত কমান্ডটি চালনা করলে সংযোগ সম্পর্কে বিশদ বিবরণ সহ ভার্বোস লগ প্রদান করবে:

curl https://google.com --proxy-insecure -v

প্রক্সি সংযোগের বিবরণ, শংসাপত্র এবং গন্তব্য দেখানোর জন্য কিছু আউটপুট হাইলাইট করা হচ্ছে।

davidtu@clienta:~$ curl https://google.com --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to google.com:443
> CONNECT google.com:443 HTTP/1.1
> Host: google.com:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 200 OK
< date: Mon, 12 Dec 2022 19:22:04 GMT
< 
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
...

কার্যকারিতা যাচাই করতে নির্দ্বিধায় অন্যান্য .com ডোমেন ব্যবহার করে দেখুন৷

এখন ডিফল্ট ব্লকিং আচরণ যাচাই করতে অন্য কিছু নন-.কম ডোমেন চেষ্টা করা যাক:

curl https://wikipedia.org --proxy-insecure

প্রত্যাশিত আউটপুট:

curl: (56) Received HTTP code 403 from proxy after CONNECT

একইভাবে, ভার্বোস আউটপুট লগিং দেখুন এবং নিশ্চিত করুন যে ক্লাউড SWP এই ট্র্যাফিককে ব্লক করছে:

curl https://wikipedia.org --proxy-insecure -v
davidtu@clienta:~$ curl https://wikipedia.org --proxy-insecure -v
* Uses proxy env variable https_proxy == 'https://10.10.10.50:443/'
*   Trying 10.10.10.50:443...
* Connected to 10.10.10.50 (10.10.10.50) port 443 (#0)
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Proxy certificate:
*  subject: CN=www.codelab-swp.com
*  start date: Dec 12 17:16:35 2022 GMT
*  expire date: Dec 12 17:16:35 2023 GMT
*  issuer: CN=www.codelab-swp.com
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* allocate connect buffer!
* Establish HTTP proxy tunnel to wikipedia.org:443
> CONNECT wikipedia.org:443 HTTP/1.1
> Host: wikipedia.org:443
> User-Agent: curl/7.74.0
> Proxy-Connection: Keep-Alive
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 403 Forbidden
< content-length: 13
< content-type: text/plain
< date: Mon, 12 Dec 2022 19:35:09 GMT
< connection: close
< 
* Received HTTP code 403 from proxy after CONNECT
* CONNECT phase completed!
* Closing connection 0
curl: (56) Received HTTP code 403 from proxy after CONNECT

আচরণ যাচাই করার জন্য অন্য ডোমেনগুলিও চেষ্টা করতে দ্বিধা বোধ করুন।

"ক্লায়েন্টা" এ SSH সেশন থেকে প্রস্থান করুন এবং "clientb" এ একটি নতুন SSH সংযোগ শুরু করুন।

gcloud compute ssh clientb --zone=$zone --tunnel-through-iap

আচরণ পরীক্ষা করতে কিছু কার্ল কমান্ড চালান:

curl https://google.com

এটি প্রত্যাশিত ক্লায়েন্ট ভিএম হিসাবে কাজ করা উচিত:

davidtu@clientb:~$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

একটি org ডোমেনের বিরুদ্ধে পরীক্ষা করা:

curl https://wikipedia.org

এটি প্রত্যাশিত হিসাবে কাজ করে কারণ ক্লায়েন্টবি ক্লাউড এসডব্লিউপিকে সুবিধা দিচ্ছে না:

davidtu@clientb:~$ curl https://wikipedia.org
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.wikipedia.org/">here</a>.</p>
</body></html>

ক্লাউড SWP এর মাধ্যমে স্পষ্টভাবে ট্রাফিক পাঠানোর পরীক্ষা করুন:

curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure 

আমরা দেখতে পাই যে ক্লাউড এসডব্লিউপি নীতির মাধ্যমে এই ট্র্যাফিক অস্বীকার করা হয়েছে:

davidtu@clientb:~$ curl -x https://10.10.10.50:443/ https://wikipedia.org --proxy-insecure
curl: (56) Received HTTP code 403 from proxy after CONNECT

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

ক্লায়েন্টবি থেকে প্রস্থান করুন।

14. ApplicationMatching এর জন্য একটি গেটওয়ে নিরাপত্তা নীতির নিয়ম আপডেট করুন

অ্যাপ্লিকেশন স্তরের বিবরণের সাথে মেলে নিয়ম আপডেট করা যাক। আমরা অনুরোধ পাথ দেখার জন্য একটি নিয়ম তৈরি করব এবং শুধুমাত্র যদি এটি index.html এর সাথে মেলে তবেই এটির অনুমতি দেব৷

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
EOF

এখন আমরা গেটওয়ে নিরাপত্তা নীতিতে আপডেট করা নিয়মকে আবদ্ধ করতে পারি:

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

15. অ্যাপ্লিকেশানম্যাচারের নিয়ম পরীক্ষা করা

ক্লায়েন্টা কম্পিউট VM-এ SSH। এই VM-এ ক্লাউড SWP ব্যবহার করার জন্য পরিবেশগত পরিবর্তনশীল সেট রয়েছে।

ক্লাউডশেল থেকে:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

কার্যকারিতা যাচাই করতে কিছু ওয়েব কোয়েরি চালান। আমাদের প্রয়োজন -প্রক্সি-অনিরাপদ কারণ আমরা এই ল্যাবের জন্য একটি স্ব-স্বাক্ষরিত শংসাপত্র তৈরি করেছি:

curl http://google.com --proxy-insecure

লক্ষ্য করুন যে এই ক্যোয়ারীটি পূর্বে পাস করার সময় ব্যর্থ হবে।

Access denied

"index.html" ব্যতীত যেকোন অনুরোধের পথ একটি 403 দিয়ে ব্লক করা উচিত। এটি আরও পরীক্ষা করতে নির্দ্বিধায়।

পাথ /index.html অন্তর্ভুক্ত করতে ক্যোয়ারী পরিবর্তন করুন

curl http://google.com/index.html --proxy-insecure

এই অনুরোধটি সফল হওয়া উচিত:

davidtu@clienta:~$ curl http://google.com/index.html --proxy-insecure
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

আশা করা হচ্ছে যে ওয়েবসাইটটি http://www.google.com/index.html এ পুনঃনির্দেশিত হওয়ার কারণে আমরা একটি 301 পুনঃনির্দেশ দেখতে পাচ্ছি

লক্ষ্য করুন যে এটি একটি HTTP অনুরোধ। এর পরে, আপনাকে TLS পরিদর্শন ক্ষমতার জন্য SWP সক্ষম করতে হবে।

পরবর্তীতে একই ক্যোয়ারী চালান কিন্তু TLS এর উপরে:

curl -k https://google.com/index.html --proxy-insecure

প্রত্যাশিত আউটপুট:

curl: (56) Received HTTP code 403 from proxy after CONNECT

এই অনুরোধটি ব্যর্থ হওয়া উচিত কারণ SWP টিএলএস পরিদর্শন করার জন্য কনফিগার করা হয়নি এবং অ্যাপ্লিকেশন ম্যাচার নিয়মের বিরুদ্ধে পথ মূল্যায়ন করতে পারে না।

ক্লেন্টা থেকে প্রস্থান করুন।

16. TLS পরিদর্শন সক্ষম করুন৷

TLS পরিদর্শন ছাড়া, অ্যাপ্লিকেশনম্যাচার HTTPS ট্র্যাফিকের সাথে মিলবে না।

"ApplicationMatcher" নিম্নলিখিত ফিল্টার করার অনুমতি দেয়:

  • হেডার ম্যাপের অনুরোধ করুন
  • অনুরোধ পদ্ধতি
  • হোস্ট অনুরোধ
  • পথ অনুরোধ
  • ক্যোয়ারী অনুরোধ করুন
  • অনুরোধ স্কিম
  • সম্পূর্ণ অনুরোধ url
  • ব্যবহারকারীদের অনুরোধ করুন

সার্ভিস অ্যাকাউন্ট তৈরি করুন

এই পরিষেবা অ্যাকাউন্টে SWP TLS পরিদর্শনের জন্য শংসাপত্র তৈরি করার অনুমতি থাকবে।

gcloud beta services identity create \
    --service=networksecurity.googleapis.com \
    --project=$project_id

নিশ্চিত করুন CAS সক্রিয় আছে

gcloud services enable privateca.googleapis.com

একটি CA পুল তৈরি করুন

gcloud privateca pools create $prefix-ca-pool \
    --tier=devops \
    --project=$project_id \
    --location=$region 

রুট CA তৈরি করুন

CA শংসাপত্র স্বাক্ষরের জন্য ব্যবহৃত হয়।

gcloud privateca roots create $prefix-root-ca --pool=$prefix-ca-pool \
  --location=$region \
  --auto-enable \
  --subject="CN=my-swp-ca, O=SWP LLC"

একটি শংসাপত্র প্রদান নীতি ফাইল তৈরি করুন

cat > /tmp/tls-issuance-policy.yaml << EOF
maximumLifetime: 1209600s
baselineValues:
  caOptions:
    isCa: false
  keyUsage:
    extendedKeyUsage:
      serverAuth: true
EOF

TLS পরিদর্শন yaml ফাইল তৈরি করুন

cat > /tmp/tls-inspection-policy.yaml << EOF
caPool: projects/$project_id/locations/$region/caPools/$prefix-ca-pool
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-inspection
EOF

TLS পরিদর্শন নীতি তৈরি করুন

gcloud network-security tls-inspection-policies import $prefix-tls-inspection \
    --source=/tmp/tls-inspection-policy.yaml \
    --location=$region

সার্টিফিকেট প্রদান নীতি ব্যবহার করতে CA পুল আপডেট করুন

gcloud privateca pools update $prefix-ca-pool    --issuance-policy=/tmp/tls-issuance-policy.yaml --location=$region

অনুমতি প্রদান করুন

এটি আপনার পরিষেবা অ্যাকাউন্টকে শংসাপত্র তৈরি করতে CA পুল ব্যবহার করার অনুমতি দেয়।

gcloud privateca pools add-iam-policy-binding $prefix-ca-pool \
    --member=$member \
    --role='roles/privateca.certificateManager' \
    --location=$region

TLS পরিদর্শন অন্তর্ভুক্ত করতে নীতি yaml আপডেট করুন

cat > /tmp/policy.yaml << EOF
description: some policy description
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy
tlsInspectionPolicy: projects/${project_id}/locations/${region}/tlsInspectionPolicies/${prefix}-tls-inspection
EOF

আপডেট করা নীতি প্রয়োগ করুন কমান্ডটি চালান

gcloud network-security gateway-security-policies import ${prefix}-policy --source=/tmp/policy.yaml --location=${region}

TLS পরিদর্শন অন্তর্ভুক্ত করার নিয়ম আপডেট করুন

পরবর্তীতে TLS পরিদর্শন "enabtlsInspectionEnabled: true" পতাকা থাকা উচিত তা নির্দিষ্ট করুন৷

cat > /tmp/rule-com.yaml << EOF
name: projects/${project_id}/locations/${region}/gatewaySecurityPolicies/${prefix}-policy/rules/rule-com
enabled: true
priority: 1
description: Allow .com traffic with path index.html
basicProfile: ALLOW
sessionMatcher: host().endsWith('com')
applicationMatcher: request.path.matches('index.html')
tlsInspectionEnabled: true
EOF

আপডেট করা নিয়ম প্রয়োগ করতে কমান্ডটি চালান

gcloud network-security gateway-security-policies rules import rule-com --source=/tmp/rule-com.yaml --location=${region} --gateway-security-policy=${prefix}-policy

17. পরীক্ষা TLS পরিদর্শন

ক্লায়েন্টা কম্পিউট VM-এ SSH। এই VM-এ ক্লাউড SWP ব্যবহার করার জন্য পরিবেশগত পরিবর্তনশীল সেট রয়েছে।

ক্লাউডশেল থেকে:

gcloud compute ssh clienta --zone=$zone --tunnel-through-iap

SWP পাথ পুনরুদ্ধার করতে TLS পরিদর্শন করছে কিনা তা যাচাই করতে পূর্ববর্তী ওয়েব ক্যোয়ারী চালান

curl -k https://google.com/index.html --proxy-insecure

এইবার, এটি সফল হওয়া উচিত কারণ SWP ApplicationMatcher এর মূল্যায়ন করতে পারে।

প্রত্যাশিত আউটপুট:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/index.html">here</A>.
</BODY></HTML>

আমরা TLS পরিদর্শন করতে এবং অ্যাপ্লিকেশনম্যাচার লজিক মূল্যায়ন করতে সফলভাবে ক্লাউড SWP সেট আপ করেছি!

ক্লায়েন্ট থেকে প্রস্থান করুন।

18. পরিচ্ছন্নতার পদক্ষেপ

ক্লাউড শেল থেকে, SWP গেটওয়ে, নিরাপত্তা নীতি, শংসাপত্র, উদাহরণ, ক্লাউড NAT এবং ক্লাউড রাউটার সরান:

gcloud -q network-services gateways delete ${prefix}-swp --location=${region}

gcloud -q network-security gateway-security-policies rules delete rule-com --location=${region} --gateway-security-policy=${prefix}-policy

gcloud -q network-security gateway-security-policies delete ${prefix}-policy --location=${region}

gcloud -q certificate-manager certificates delete ${prefix}-cert --location=${region}

gcloud -q network-security tls-inspection-policies delete $prefix-tls-inspection --location=$region

gcloud -q privateca roots disable $prefix-root-ca --pool=$prefix-ca-pool --location=$region

gcloud -q privateca roots delete $prefix-root-ca --pool=$prefix-ca-pool --location=$region --ignore-active-certificates --skip-grace-period

gcloud -q privateca pools delete $prefix-ca-pool --location=$region

gcloud -q compute instances delete clienta --zone=$zone

gcloud -q compute instances delete clientb --zone=$zone

gcloud -q compute routers nats delete ${prefix}-nat-gw-${region} \
--router=$prefix-cr --router-region=$region

gcloud -q compute routers delete `gcloud compute routers list --regions=$region --format="value(NAME)" | grep -e swg-autogen -e codelab-swp` --region=$region

সাবনেট, এফডব্লিউ নিয়ম এবং ভিপিসি সরান:

gcloud -q compute networks subnets delete $prefix-vpc-subnet \
    --region $region

gcloud -q compute networks subnets delete $prefix-proxy-only-subnet \
    --region=$region

gcloud -q compute firewall-rules delete $prefix-allow-iap-proxy

gcloud -q compute networks delete $prefix-vpc

19. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন। আপনি Google ক্লাউডে সফলভাবে ক্লাউড সিকিউর ওয়েব প্রক্সি কনফিগার এবং স্থাপন করেছেন।

আমরা কভার করেছি কি

  • ক্লাউড SWP এবং সুবিধা!