১. ভূমিকা ও সংক্ষিপ্ত বিবরণ
ইনফোব্লক্স দ্বারা চালিত ডিএনএস আর্মার একটি সম্পূর্ণ পরিচালিত পরিষেবা, যা আপনার গুগল ক্লাউড ওয়ার্কলোডগুলির জন্য ডিএনএস-স্তরের নিরাপত্তা প্রদান করে। এর উন্নত থ্রেট ডিটেক্টরটি কোনো অতিরিক্ত পরিচালনগত জটিলতা বা পারফরম্যান্সের উপর চাপ না বাড়িয়েই, আক্রমণ শৃঙ্খলের একেবারে প্রাথমিক পর্যায়ে—অর্থাৎ ডিএনএস কোয়েরিতেই—ক্ষতিকর কার্যকলাপ শনাক্ত করার জন্য ডিজাইন করা হয়েছে।
এই কোডল্যাবটি ডিএনএস আর্মার সার্ভিসটি কনফিগার এবং পরীক্ষা করার জন্য ধাপে ধাপে নির্দেশাবলী প্রদান করে। আপনি প্রয়োজনীয় নেটওয়ার্ক পরিকাঠামো স্থাপন করবেন, থ্রেট ডিটেক্টর তৈরি করবেন, ডিএনএস থ্রেট সিমুলেট করে সার্ভিসটি পরীক্ষা করবেন এবং সবশেষে, একটি কাস্টম ক্লাউড মনিটরিং ড্যাশবোর্ড ব্যবহার করে থ্রেট লগগুলো ভিজ্যুয়ালাইজ ও বিশ্লেষণ করবেন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি নিম্নলিখিত রিসোর্সগুলো সরবরাহ করবেন:
-
us-east4এবংus-central1অঞ্চলে সাবনেট ও ভার্চুয়াল মেশিনসহ একটি VPC নেটওয়ার্ক (network-a)। - ডিএনএস কোয়েরি পরীক্ষা করার জন্য কনফিগার করা একটি ডিএনএস আর্মার অ্যাডভান্সড থ্রেট ডিটেক্টর।
- ডিএনএস থ্রেট লগের উপর ভিত্তি করে লগ-ভিত্তিক মেট্রিক্স।
- ডিএনএস হুমকি লগগুলো দেখার জন্য একটি কাস্টম ড্যাশবোর্ড।

আপনি যা শিখবেন
- ভিপিসি এবং ভার্চুয়াল মেশিন সহ প্রয়োজনীয় নেটওয়ার্কিং রিসোর্সগুলো কীভাবে সরবরাহ করবেন।
- কীভাবে একটি উন্নত হুমকি শনাক্তকারী যন্ত্র স্থাপন করবেন এবং নির্দিষ্ট নেটওয়ার্কগুলোকে বাদ দেবেন।
- থ্রেট সিমুলেশন স্ক্রিপ্ট ব্যবহার করে থ্রেট ডিটেকশন কনফিগারেশন কীভাবে যাচাই করা যায়।
- লগ-ভিত্তিক মেট্রিক্স এবং কাস্টম ড্যাশবোর্ড ব্যবহার করে কীভাবে ডিএনএস থ্রেট লগগুলো দেখা যায়।
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্রকল্প।
-
gcloudকমান্ড-লাইন টুলে প্রবেশাধিকার।
২. পূর্বশর্তসমূহ
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
- আপনার গুগল ক্লাউড প্রজেক্টটি প্রয়োজনীয় অর্গানাইজেশন পলিসি সীমাবদ্ধতাগুলো পূরণ করে কিনা তা যাচাই করুন।
- নিশ্চিত করুন যে আপনার ব্যবহারকারী অ্যাকাউন্টে প্রয়োজনীয় IAM রোল এবং অনুমতি রয়েছে।
- এই কোডল্যাবের জন্য প্রয়োজনীয় গুগল ক্লাউড এপিআইগুলো সক্রিয় করুন।
- Compute Engine Service Account-কে
roles/logging.viewerIAM রোলটি বরাদ্দ করুন।
সংগঠনের নীতিগত সীমাবদ্ধতা
এই কোডল্যাবটি সফলভাবে সম্পন্ন করতে, অনুগ্রহ করে আপনার প্রোজেক্টে প্রয়োগ করা অর্গানাইজেশন পলিসি সীমাবদ্ধতাগুলো যাচাই করুন। কিছু পলিসি প্রয়োজনীয় রিসোর্স সরবরাহে বাধা সৃষ্টি করতে পারে। নিম্নলিখিত সীমাবদ্ধতাগুলো এই কোডল্যাবের কনফিগারেশনকে প্রভাবিত করতে পারে:
-
constraints/gcp.resourceLocations: যে অঞ্চলগুলিতে আপনি রিসোর্স তৈরি করতে পারবেন তা সীমাবদ্ধ করে; কোডল্যাবের জন্যus-east4এবংus-central1প্রয়োজন। -
constraints/compute.vmExternalIpAccess: পাবলিক আইপি অ্যাড্রেস সহ ভার্চুয়াল মেশিন তৈরি করা প্রতিরোধ করে, যা সেটআপে সমস্যা তৈরি করতে পারে যদি আপনি কোডল্যাবের--no-addressফ্ল্যাগের ব্যবহার অনুসরণ না করেন। -
constraints/compute.shieldedVm: শিল্ডেড ভিএম (Shielded VM) তৈরি করা বাধ্যতামূলক করে, যা কোডল্যাবের ভিএম তৈরির কমান্ডগুলোতে উল্লেখ করা নেই এবং এর ফলে একটি ত্রুটি দেখা দিতে পারে। -
constraints/gcp.restrictServiceUsage: কোন কোন গুগল ক্লাউড এপিআই (Google Cloud API) চালু করা যাবে তা সীমিত করে, এবং যদিcompute.googleapis.com,networksecurity.googleapis.com,logging.googleapis.com, এবংmonitoring.googleapis.comঅনুমতি না দেওয়া হয়, তাহলে এটি কোডল্যাবটিকে ব্লক করে দিতে পারে।
IAM ভূমিকা এবং অনুমতি
এই কোডল্যাবটি সফলভাবে সম্পন্ন করার জন্য, অনুগ্রহ করে আপনার ব্যবহারকারীকে প্রদত্ত IAM রোল এবং অনুমতিগুলো যাচাই করুন। এই কোডল্যাবটি সম্পন্ন করার জন্য নিম্নলিখিত IAM রোল এবং অনুমতিগুলো প্রয়োজন।
- সার্ভিস ইউসেজ অ্যাডমিন (
roles/serviceusage.serviceUsageAdmin): কোডল্যাবের জন্য প্রয়োজনীয় গুগল ক্লাউড এপিআই (API) সক্রিয় করতে। - কম্পিউট নেটওয়ার্ক অ্যাডমিন (
roles/compute.networkAdmin): VPC নেটওয়ার্ক, সাবনেট এবং ক্লাউড NAT তৈরি ও পরিচালনা করার জন্য। - কম্পিউট সিকিউরিটি অ্যাডমিন (
roles/compute.securityAdmin): ভার্চুয়াল মেশিনগুলিতে SSH অ্যাক্সেসের জন্য ফায়ারওয়াল নিয়মাবলী কনফিগার করতে। - কম্পিউট ইনস্ট্যান্স অ্যাডমিন (v1) (
roles/compute.instanceAdmin.v1): ল্যাবের জন্য প্রয়োজনীয় ভার্চুয়াল মেশিন তৈরি এবং পরিচালনা করার জন্য। - আইএপি-সুরক্ষিত টানেল ব্যবহারকারী (
roles/iap.tunnelResourceAccessor): আইডেন্টিটি-অ্যাওয়্যার প্রক্সি (IAP)-এর মাধ্যমে SSH ব্যবহার করে ভার্চুয়াল মেশিনগুলিতে সংযোগ করার জন্য। - নেটওয়ার্ক সিকিউরিটি অ্যাডমিন (
roles/networksecurity.admin): ডিএনএস আর্মার থ্রেট ডিটেক্টর তৈরি এবং পরিচালনা করার জন্য। - লগস ভিউয়ার (
roles/logging.viewer): লগস এক্সপ্লোরারে থ্রেট লগগুলো দেখতে ও বিশ্লেষণ করতে।
গুগল ক্লাউড এপিআই
অনুগ্রহ করে নিশ্চিত করুন যে আপনার প্রজেক্টে প্রয়োজনীয় গুগল ক্লাউড এপিআইগুলো সক্রিয় করা আছে।
১. প্রয়োজনীয় API-গুলো সক্রিয় করতে , ক্লাউড শেলের মধ্যে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
২. এপিআইগুলো সক্রিয় আছে কিনা তা যাচাই করতে , ক্লাউড শেলের মধ্যে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud services list --enabled
কম্পিউট ইঞ্জিন পরিষেবা অ্যাকাউন্ট
থ্রেট সিমুলেশন স্ক্রিপ্টটির জন্য ক্লাউড লগিং থেকে তৈরি হওয়া থ্রেট লগগুলো পড়া এবং সেগুলোর ওপর রিপোর্ট করার অনুমতি প্রয়োজন। যেহেতু স্ক্রিপ্টটি ডিফল্ট কম্পিউট ইঞ্জিন সার্ভিস অ্যাকাউন্ট ব্যবহার করে একটি ভিএম (VM) থেকে চালানো হবে, তাই এই সার্ভিস অ্যাকাউন্টটিতে roles/logging.viewer IAM রোলটি অবশ্যই অ্যাসাইন করতে হবে।
১. এনভায়রনমেন্ট ভেরিয়েবল সেট করুন এবং ক্লাউড শেলের মধ্যে নিম্নলিখিত কমান্ডগুলো চালান।
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
২. Compute Engine SA-কে লগিং ভিউয়ার রোলটি প্রদান করুন । Cloud Shell-এর মধ্যে নিম্নলিখিত gcloud কমান্ডগুলি চালান।
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
৩. নেটওয়ার্ক এবং কম্পিউট রিসোর্সের সংস্থান
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
- কাস্টম সাবনেট সহ
network-aতৈরি করুন। -
network-aতে ইন্টারনেট বহির্গমনের জন্য ক্লাউড রাউটার এবং ক্লাউড ন্যাট কনফিগার করুন। -
network-aএর জন্য IAP-এর IP রেঞ্জ থেকে VM-গুলোতে SSH অ্যাক্সেসের অনুমতি দিতে ফায়ারওয়াল নিয়ম তৈরি করুন। -
network-aতে পাবলিক আইপি অ্যাড্রেস ছাড়া লিনাক্স ভার্চুয়াল মেশিন সরবরাহ করুন।
ভিপিসি এবং সাবনেট তৈরি করুন
১. us-east4 এবং us-central1 রিজিয়নগুলিতে নেটওয়ার্ক-এ এবং এর সাবনেটগুলি তৈরি করুন । ক্লাউড শেলের মধ্যে নিম্নলিখিত gcloud কমান্ডগুলি চালান।
gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1
ইন্টারনেট বহির্গমন কনফিগার করুন
১. পাবলিক আইপি ছাড়া ভিএম-গুলোর ইন্টারনেট ব্যবহারের অনুমতি দেওয়ার জন্য network-a জন্য ক্লাউড রাউটার এবং ক্লাউড ন্যাট তৈরি করুন ।
gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1
ফায়ারওয়াল নিয়ম কনফিগার করুন
১. IAP-এর IP রেঞ্জ থেকে SSH অ্যাক্সেসের অনুমতি দেওয়ার জন্য network-a এর জন্য ফায়ারওয়াল নিয়ম তৈরি করুন । ক্লাউড শেলের মধ্যে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
ভার্চুয়াল মেশিন তৈরি করুন
১. network-a. এ লিনাক্স ভিএম তৈরি করুন ।
gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform
৪. ডিএনএস থ্রেট ডিটেক্টর তৈরি করুন
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
- হুমকি শনাক্তকারীটি তৈরি করুন।
- হুমকি শনাক্তকারীকে তালিকাভুক্ত করুন।
VPC, সাবনেট এবং ভার্চুয়াল মেশিনগুলো এখন প্রস্তুত হয়ে গেলে, পরবর্তী ধাপ হলো DNS থ্রেট ডিটেক্টর তৈরি করা।
১. gcloud beta network-security dns-threat-detectors create কমান্ডটি ব্যবহার করে থ্রেট ডিটেক্টরটি তৈরি করুন ।
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox
২. তৈরি নিশ্চিত করতে থ্রেট ডিটেক্টরটি তালিকাভুক্ত করুন ।
gcloud beta network-security dns-threat-detectors list --location=global
৫. লগ-ভিত্তিক মেট্রিক তৈরি করুন
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
- লগ এন্ট্রি বোঝা।
-
config.yamlফাইলটি তৈরি করুন। - লগ-ভিত্তিক মেট্রিকটি তৈরি করুন।
১. লগ এন্ট্রি বোঝা । আপনি থ্রেট লগস ডকুমেন্টেশনে ডিএনএস আর্মার লগের সমস্ত ফিল্ডের একটি টেবিল পর্যালোচনা করতে পারেন। এই বিভাগটি সেই নির্দিষ্ট ফিল্ডগুলির উপর আলোকপাত করে যা লগ-ভিত্তিক মেট্রিক্স তৈরি করতে ব্যবহৃত হবে।
লগ-ভিত্তিক মেট্রিক তৈরি করতে নিম্নলিখিত ফিল্ডগুলি ব্যবহার করা হবে:
- vmInstanceId: Compute Engine VM ইনস্ট্যান্সের নাম, যা শুধুমাত্র Compute Engine VM দ্বারা শুরু করা কোয়েরির ক্ষেত্রে প্রযোজ্য।
- queryName: ডিএনএস কোয়েরির নাম।
- তীব্রতা: শনাক্তকৃত হুমকির সাথে সম্পর্কিত তীব্রতা (উচ্চ, মাঝারি, নিম্ন, বা তথ্য)। আরও তথ্যের জন্য, ইনফোব্লক্স-এর তীব্রতার স্তরের সংজ্ঞা দেখুন।
- অবস্থান: গুগল ক্লাউড অঞ্চল যেখান থেকে প্রতিক্রিয়াটি পরিবেশন করা হয়েছিল।
- হুমকি: শনাক্তকৃত হুমকির নাম।
- threatId: হুমকির অনন্য শনাক্তকারী।
২. config.yaml ফাইলটি তৈরি করুন। প্রথমে, touch কমান্ড ব্যবহার করে একটি খালি config.yaml ফাইল তৈরি করুন।
touch config.yaml
৩. config.yaml ফাইলটি পূরণ করুন। এই ফাইলটি নির্ধারণ করে যে DNS Armor থ্রেট লগের জন্য কীভাবে একটি লগ-ভিত্তিক মেট্রিক তৈরি করতে হবে। এটি নির্দিষ্ট করে দেয় কোন লগ এন্ট্রিগুলো ফিল্টার করতে হবে, সেই এন্ট্রিগুলো থেকে কী লেবেল বের করতে হবে এবং মেট্রিকটির নিজস্ব বৈশিষ্ট্যগুলো কী হবে।
আপনার পছন্দের যেকোনো টেক্সট এডিটরে config.yaml ফাইলটি খুলুন এবং নিচের কন্টেন্টটি পেস্ট করুন।
filter: |
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.projectNumber="PROJECT_NUMBER"
labelExtractors:
InstanceId: EXTRACT(jsonPayload.dnsQuery.vmInstanceId)
QueryName: EXTRACT(jsonPayload.dnsQuery.queryName)
Severity: EXTRACT(jsonPayload.threatInfo.severity)
region: EXTRACT(jsonPayload.dnsQuery.location)
threat: EXTRACT(jsonPayload.threatInfo.threat)
threatId: EXTRACT(jsonPayload.threatInfo.threatId)
metricDescriptor:
labels:
- key: InstanceId
- key: threat
- key: Severity
- key: threatId
- key: region
- key: QueryName
metricKind: DELTA
unit: '1'
valueType: INT64
৪. প্রজেক্ট নম্বর আপডেট করুন । PROJECT_NUMBER প্লেসহোল্ডারটিকে আপনার এনভায়রনমেন্ট ভেরিয়েবলের মান দিয়ে প্রতিস্থাপন করতে নিম্নলিখিত sed কমান্ডটি ব্যবহার করুন।
sed -i "s/PROJECT_NUMBER/$PROJECT_NUMBER/g" config.yaml
৫. লগ-ভিত্তিক মেট্রিক তৈরি করুন। সবশেষে, মেট্রিকটি তৈরি করার জন্য ক্লাউড শেল-এর মধ্যে নিম্নলিখিত gcloud কমান্ডটি চালান।
gcloud logging metrics create dns-armor-log-based-metric --config-from-file=config.yaml
৬. কাস্টম ড্যাশবোর্ড তৈরি করুন
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
-
dashboard.jsonফাইলটি তৈরি করুন। - কাস্টম ড্যাশবোর্ড তৈরি করুন
১. dashboard.json ফাইলটি তৈরি করুন। প্রথমে, touch কমান্ড ব্যবহার করে একটি খালি dashboard.json ফাইল তৈরি করুন।
touch dashboard.json
২. dashboard.json ফাইলটি পূরণ করুন। dashboard.json ফাইলটি কাস্টম মনিটরিং ড্যাশবোর্ড কনফিগার করে, যা উইজেট, ডিসপ্লে প্রোপার্টি এবং লগ-ভিত্তিক মেট্রিকগুলো কীভাবে ভিজ্যুয়ালাইজ, অ্যাগ্রিগেট ও ফিল্টার করা হবে তা নির্ধারণ করে।
আপনার পছন্দের কোনো টেক্সট এডিটরে dashboard.json ফাইলটি খুলুন এবং নিচের বিষয়বস্তু পেস্ট করুন।
{
"displayName": "DNS Armor - Custom Dashboard",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs per region",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"yPos": 20,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Threat",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 20,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - ThreatID",
"timeSeriesTable": {
"columnSettings": [
{
"column": "threatId",
"visible": true
},
{
"column": "threat",
"visible": true
},
{
"column": "project_id",
"visible": false
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threatId\"",
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
}
}
}
],
"metricVisualization": "BAR"
}
}
},
{
"yPos": 40,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Severity",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"Severity\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 40,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - Source",
"id": "",
"timeSeriesTable": {
"columnSettings": [
{
"column": "InstanceId",
"visible": true
},
{
"column": "region",
"visible": true
},
{
"column": "project_id",
"visible": true
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"tableTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"InstanceId\"",
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
},
"unitOverride": ""
}
}
],
"displayColumnType": false,
"metricVisualization": "BAR"
}
}
},
{
"yPos": 60,
"height": 20,
"width": 48,
"widget": {
"title": "Group by Domains",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"QueryName\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
}
]
}
}
২. কাস্টম ড্যাশবোর্ড তৈরি করুন । ক্লাউড শেল-এর মধ্যে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud monitoring dashboards create --config-from-file=dashboard.json
৭. অনুকৃত ক্ষতিকারক ডিএনএস কোয়েরি তৈরি করা
এই অংশে, আপনি নিম্নলিখিত কাজগুলো সম্পাদন করবেন:
- ভিএমগুলোতে SSH করুন।
- ভিএমগুলোতে গিট ইনস্টল করুন।
- ইনফোব্লক্স থ্রেট ডিটেকশন সিমুলেটর রিপোজিটরিটি ক্লোন করুন।
- স্ক্রিপ্টটি চালান এবং উৎপন্ন আউটপুট বিশ্লেষণ করুন।
আপনার ভিএমগুলো থেকে অনুকৃত ক্ষতিকারক ডিএনএস কোয়েরি তৈরি করে সেটআপটি যাচাই করুন।
১. vm-a-use4-এ SSH করুন । ক্লাউড শেলের ভেতরে নিম্নলিখিত gcloud কমান্ডগুলো চালান।
gcloud compute ssh vm-a-use4 --zone=us-east4-c
২. ভিএম-এ গিট ইনস্টল করুন ।
sudo apt-get install git -y
৩. ইনফোব্লক্স থ্রেট ডিটেকশন সিমুলেটর রিপোজিটরিটি ক্লোন করুন ।
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
৪. সিমুলেটরের ডিরেক্টরিতে যান ।
cd ib-threat-detection-simulator/threat_detection_simulator/
৫. স্ক্রিপ্টটি চালান এবং উৎপন্ন আউটপুট বিশ্লেষণ করুন।
স্ক্রিপ্টটিকে নির্বাহযোগ্য করুন।
chmod +x run.sh
স্ক্রিপ্টটি চালান।
./run.sh info basic
৬. নমুনা আউটপুট
নিম্নলিখিত চিত্রটিতে network-a এর অন্তর্গত একটি ভিএম-এ (VM) প্রদর্শিত স্ক্রিপ্টটির আউটপুটের একটি অংশ দেখানো হয়েছে। এই আউটপুটে পরীক্ষা স্ক্রিপ্টটি দ্বারা অনুকৃত বিভিন্ন ডিএনএস (DNS) হুমকি প্রকারের সনাক্তকরণের হার বিস্তারিতভাবে বর্ণনা করা হয়েছে।

৭. SSH সেশন থেকে প্রস্থান করে ক্লাউড শেলে ফিরে যান ।
exit
৮. কাস্টম ড্যাশবোর্ড দেখুন
ড্যাশবোর্ড দেখুন
১. গুগল ক্লাউড কনসোলের উপরের সার্চ ফিল্ডে ‘Dashboards’ টাইপ করুন , তারপর প্রথম দিকের ফলাফলগুলোর মধ্যে থাকা ‘Dashboards’- এ ক্লিক করুন।

২. সার্চ ফিল্ডে DNS Armor - Custom Dashboard লিখে সার্চ করুন এবং তারপর ড্যাশবোর্ডটি খোলার জন্য DNS Armor - Custom Dashboard এ ক্লিক করুন।

৩. ড্যাশবোর্ডটি দেখুন ।

ড্যাশবোর্ডের উইজেটগুলি
এই বিভাগে কাস্টম ড্যাশবোর্ডে উপলব্ধ বিভিন্ন উইজেটের রূপরেখা দেওয়া হয়েছে এবং সেগুলোর কার্যকারিতা ও উপস্থাপিত ডেটার একটি সংক্ষিপ্ত বিবরণ প্রদান করা হয়েছে।
- থ্রেট লগ: একটি স্ট্যাকড বার চার্ট যা একটি নির্দিষ্ট সময়সীমার মধ্যে কোনো প্রকল্পের অন্তর্ভুক্ত সমস্ত নেটওয়ার্কের জন্য তৈরি হওয়া থ্রেট লগগুলো প্রদর্শন করে।
- অঞ্চলভিত্তিক হুমকি লগ: একটি স্ট্যাকড বার চার্ট যা একটি নির্দিষ্ট সময়সীমার মধ্যে অঞ্চল অনুসারে শ্রেণীবদ্ধ হুমকি লগগুলো তুলে ধরে।
- হুমকি অনুযায়ী গ্রুপ করুন: একটি পাই চার্ট যা একটি নির্দিষ্ট সময়সীমার মধ্যে হুমকির প্রকারভেদের উপর ভিত্তি করে থ্রেট লগগুলিকে শ্রেণীবদ্ধ করে।
- শীর্ষ তালিকা - থ্রেট আইডি : একটি নির্দিষ্ট সময়সীমার মধ্যে শীর্ষ ৩০টি থ্রেট আইডি প্রদর্শনকারী একটি তালিকা।
- তীব্রতা অনুসারে গোষ্ঠীভুক্তকরণ: একটি পাই চার্ট যা একটি নির্দিষ্ট সময়সীমার মধ্যে তীব্রতার স্তর অনুসারে হুমকির লগগুলিকে গোষ্ঠীভুক্ত করে।
- শীর্ষ তালিকা - উৎস: একটি নির্দিষ্ট সময়সীমার মধ্যে শীর্ষ ৩০টি ইনস্ট্যান্স আইডি (উৎস ভিএম)-এর তালিকা।
- ডোমেইন অনুসারে গ্রুপ করুন: একটি স্ট্যাকড বার চার্ট যা কোয়েরিতে পাওয়া ডোমেইন নাম অনুসারে থ্রেট লগগুলিকে গ্রুপ করে।
৯. পরিচ্ছন্নতা
ভবিষ্যতে কোনো চার্জ এড়ানোর জন্য, এই কোডল্যাবে তৈরি করা রিসোর্সগুলো ডিলিট করে দিন। ক্লিনআপ কমান্ডগুলো চালানোর সময় অবশ্যই ভিএম-এর শেল থেকে বেরিয়ে ক্লাউড শেলে ফিরে আসবেন।
১. কাস্টম ড্যাশবোর্ডটি মুছে ফেলুন।
যেহেতু ড্যাশবোর্ড আইডি তৈরির সময় স্বয়ংক্রিয়ভাবে তৈরি হয়, তাই আপনাকে প্রথমে এর ডিসপ্লে নেম ব্যবহার করে রিসোর্স নেমটি সংগ্রহ করতে হবে।
DASHBOARD_NAME=$(gcloud monitoring dashboards list --filter="displayName='DNS Armor - Custom Dashboard'" --format='value(name)')
gcloud monitoring dashboards delete $DASHBOARD_NAME --quiet
২. লগ-ভিত্তিক মেট্রিকটি মুছে ফেলুন।
gcloud logging metrics delete dns-armor-log-based-metric --quiet
৩. ভিএমগুলো মুছে ফেলুন।
gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet
৪. ফায়ারওয়াল নিয়মগুলো মুছে ফেলুন।
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
৫. ক্লাউড NAT গেটওয়েগুলো মুছে ফেলুন।
gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet
৬. ক্লাউড রাউটারগুলো মুছে ফেলুন।
gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
৭. সাবনেটগুলো মুছে ফেলুন।
gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
৮. ডিএনএস থ্রেট ডিটেক্টরটি মুছে ফেলুন।
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
৯. ভিপিসিগুলো মুছে ফেলুন।
gcloud compute networks delete network-a --quiet
১০. অভিনন্দন
অভিনন্দন! আপনি সফলভাবে ডিএনএস আর্মার থ্রেট ডিটেকশন লগ কনফিগার, ডেপ্লয় এবং ভিজ্যুয়ালাইজ করেছেন। আপনি ডিএনএস-ভিত্তিক হুমকি থেকে আপনার গুগল ক্লাউড এনভায়রনমেন্টকে সুরক্ষিত রাখা এবং নিরাপত্তা সংক্রান্ত তথ্যের জন্য একটি কাস্টম মনিটরিং সলিউশন তৈরি করার ক্ষেত্রে বাস্তব অভিজ্ঞতা অর্জন করেছেন।
এই কোডল্যাবে আপনার জন্য রয়েছে:
- VPC, সাবনেট এবং ভার্চুয়াল মেশিন সহ একটি নেটওয়ার্ক পরিবেশ প্রস্তুত করা হয়েছে।
- ক্লাউড ন্যাট ব্যবহার করে প্রাইভেট ভিএমগুলির জন্য ইন্টারনেট বহির্গমন কনফিগার করা হয়েছে।
- একটি ডিএনএস আর্মার থ্রেট ডিটেক্টর স্থাপন করা হয়েছে।
- অনুকৃত ডিএনএস হুমকি তৈরি করা হয়েছে এবং হুমকি শনাক্তকরণ কনফিগারেশন যাচাই করা হয়েছে।
- ডিএনএস থ্রেট লগ থেকে একটি কাস্টম লগ-ভিত্তিক মেট্রিক্স তৈরি করা হয়েছে।
- ডিএনএস হুমকিগুলো পর্যবেক্ষণ ও বিশ্লেষণ করার জন্য একটি কাস্টম ক্লাউড মনিটরিং ড্যাশবোর্ড তৈরি করা হয়েছে।