1. مقدمة ونظرة عامة
DNS Armor، المستندة إلى Infoblox، هي خدمة مُدارة بالكامل توفّر أمانًا على مستوى نظام أسماء النطاقات لأحمال العمل في Google Cloud. تم تصميم أداة رصد التهديدات المتقدّمة لرصد الأنشطة الضارة في أقرب نقطة في سلسلة الهجوم، أي طلب نظام أسماء النطاقات، بدون إضافة تعقيد تشغيلي أو زيادة في الأداء.
يقدّم هذا الدرس التطبيقي حول الترميز تعليمات مفصّلة خطوة بخطوة لإعداد خدمة DNS Armor واختبارها. ستعمل على إعداد البنية الأساسية اللازمة للشبكة، وإنشاء أداة رصد التهديدات، واختبار الخدمة من خلال محاكاة تهديدات نظام أسماء النطاقات، وأخيرًا، تحليل سجلّات التهديدات باستخدام "مستكشف السجلات".
ما ستنشئه
في هذا الدرس البرمجي، ستوفّر الموارد التالية:
- شبكتان من شبكات VPC:
network-aوnetwork-b - ستشمل
network-aالشبكات الفرعية والأجهزة الافتراضية في منطقتَيus-east4وus-central1. - ستتضمّن
network-bشبكة فرعية وجهازًا افتراضيًا فيus-east4فقط. - أداة رصد التهديدات المتقدّمة في DNS Armor تم ضبطها لفحص طلبات بحث نظام أسماء النطاقات

ما ستتعلمه
- كيفية توفير موارد الشبكات اللازمة، بما في ذلك شبكات VPC والأجهزة الافتراضية
- كيفية نشر أداة متقدّمة لرصد التهديدات واستبعاد شبكات معيّنة
- كيفية التحقّق من صحة إعدادات رصد التهديدات باستخدام نص برمجي لمحاكاة التهديدات
- كيفية تحليل سجلّات التهديدات في "مستكشف السجلات"
المتطلبات
- مشروع Google Cloud
- إذن الوصول إلى أداة سطر الأوامر
gcloud
2. المتطلبات الأساسية
في هذا القسم، ستنفّذ المهام التالية:
- تأكَّد من أنّ مشروعك على Google Cloud يستوفي القيود اللازمة في "سياسة المؤسسة".
- تأكَّد من أنّ حسابك يتضمّن أدوار وأذونات "إدارة الهوية وإمكانية الوصول" المطلوبة.
- فعِّل واجهات Google Cloud APIs الأساسية لهذا الدرس العملي.
- امنح حساب خدمة Compute Engine دور
roles/logging.viewerفي "إدارة الهوية وإمكانية الوصول".
قيود سياسات المؤسسة
لإكمال هذا الدرس البرمجي بنجاح، يُرجى التحقّق من قيود "سياسة المؤسسة" المطبّقة على مشروعك. قد تعيق بعض السياسات توفير الموارد اللازمة. قد تؤثر القيود التالية في إعداد هذا الدرس العملي:
constraints/gcp.resourceLocations: تقيّد المناطق التي يمكنك إنشاء الموارد فيها، ويتطلّب الدرس التطبيقيus-east4وus-central1.-
constraints/compute.vmExternalIpAccess: يمنع إنشاء أجهزة افتراضية مزوّدة بعناوين IP عامة، ما قد يتعارض مع عملية الإعداد إذا لم تتّبع استخدام العلامة--no-addressفي الدرس العملي . constraints/compute.shieldedVm: تفرض هذه السمة إنشاء أجهزة Shielded VM، وهو ما لا تحدّده أوامر إنشاء الأجهزة الافتراضية في برنامج التدريب العملي، ما قد يتسبب في حدوث خطأ.constraints/gcp.restrictServiceUsage: يحدّد واجهات برمجة التطبيقات من Google Cloud التي يمكن تفعيلها، وقد يحظر نموذج البرمجة إذا لم يسمح باستخدامcompute.googleapis.comوnetworksecurity.googleapis.comوlogging.googleapis.comوmonitoring.googleapis.com.
أدوار وأذونات إدارة الهوية وإمكانية الوصول
لإكمال هذا الدرس التطبيقي حول الترميز بنجاح، يُرجى التحقّق من أدوار وأذونات "إدارة الهوية وإمكانية الوصول" الممنوحة للمستخدم. يجب توفّر أدوار وأذونات "إدارة الهوية وإمكانية الوصول" التالية لإكمال هذا الدرس البرمجي.
- مشرف استخدام الخدمة (
roles/serviceusage.serviceUsageAdmin): لتفعيل واجهات Google Cloud API المطلوبة في الدرس العملي. - مشرف شبكة Compute (
roles/compute.networkAdmin): لإنشاء شبكات VPC والشبكات الفرعية وCloud NAT وإدارتها - مشرف أمان Compute (
roles/compute.securityAdmin): لضبط قواعد جدار الحماية للوصول إلى الأجهزة الافتراضية باستخدام SSH - Compute Instance Admin (الإصدار الأوّل) (
roles/compute.instanceAdmin.v1): لإنشاء الأجهزة الافتراضية المطلوبة في الدرس التطبيقي وإدارتها - مستخدم النفق الآمن من خلال IAP (
roles/iap.tunnelResourceAccessor): للاتصال بالأجهزة الافتراضية باستخدام بروتوكول النقل الآمن (SSH) من خلال خدمة Identity-Aware Proxy (IAP). - مشرف أمان الشبكة (
roles/networksecurity.admin): لإنشاء أداة رصد التهديدات في DNS Armor وإدارتها - عارض السجلات (
roles/logging.viewer): لعرض سجلات التهديدات وتحليلها في "مستكشف السجلات"
Google Cloud APIs
يُرجى التأكّد من تفعيل واجهات Google Cloud APIs المطلوبة في مشروعك.
1. فعِّل واجهات برمجة التطبيقات اللازمة، ونفِّذ أوامر gcloud التالية ضِمن Cloud Shell.
gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com
2. تأكَّد من تفعيل واجهات برمجة التطبيقات، ونفِّذ أوامر gcloud التالية في Cloud Shell.
gcloud services list --enabled
حساب خدمة Compute Engine
يتطلّب النص البرمجي للاختبار أذونات لقراءة سجلّات التهديدات من Cloud Logging. بما أنّه سيتم تنفيذ النص البرمجي من آلة افتراضية تستخدم حساب خدمة Compute Engine التلقائي، يجب منح دور roles/logging.viewer في "إدارة الهوية وإمكانية الوصول" لحساب الخدمة هذا.
1. اضبط متغيّرات البيئة، ونفِّذ الأوامر التالية ضِمن Cloud Shell.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
2. امنح حساب الخدمة في Compute Engine دور "مشاهد سجلّات". نفِّذ أوامر gcloud التالية في Cloud Shell
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"
3- الإعداد الأساسي للبيئة
في هذا القسم، ستنفّذ المهام التالية:
- أنشئ شبكتَي VPC (
network-aوnetwork-b) مع شبكات فرعية مخصّصة. - اضبط Cloud Routers وCloud NAT للخروج من الإنترنت في كل من
network-aوnetwork-b. - أنشئ قواعد جدار الحماية للسماح بالوصول إلى الأجهزة الافتراضية باستخدام بروتوكول SSH من نطاق عناوين IP الخاص بخدمة "الوصول الآمن عبر الإنترنت" لكل من
network-aوnetwork-b. - توفير أجهزة Linux الافتراضية في كل من
network-aوnetwork-bبدون عناوين IP عامة
إنشاء شبكات VPC وشبكات فرعية
1. أنشئ الشبكة (network-a) وشبكاتها الفرعية في المنطقتَين us-east4 وus-central1. نفِّذ أوامر gcloud التالية في Cloud Shell.
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
2. أنشئ الشبكة network-b وشبكتها الفرعية في المنطقة us-east4. نفِّذ أوامر gcloud التالية في Cloud Shell.
gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4
ضبط حركة الخروج من الإنترنت
1. أنشئ Cloud Router وCloud NAT لـ network-a للسماح بخروج الإنترنت للأجهزة الافتراضية بدون عناوين IP عامة.
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
2. أنشئ Cloud Router وCloud NAT لـ network-b للسماح بخروج الإنترنت للأجهزة الافتراضية بدون عناوين IP عامة.
gcloud compute routers create router-b-use4 \
--network=network-b \
--region=us-east4
gcloud compute routers nats create nat-b-use4 \
--router=router-b-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
ضبط قواعد جدار الحماية
1. أنشئ قواعد جدار الحماية لـ network-a للسماح بالوصول إلى SSH من نطاق عناوين IP الخاص بخدمة "الوصول إلى الإنترنت عبر بروتوكول SSH". نفِّذ أوامر gcloud التالية في Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
2. أنشئ قواعد جدار الحماية لـ network-b للسماح بالوصول إلى SSH من نطاق عناوين IP الخاص بخدمة "الوصول إلى الإنترنت عبر بروتوكول SSH". نفِّذ أوامر gcloud التالية في Cloud Shell.
gcloud compute firewall-rules create allow-ssh-iap-b \
--network=network-b \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
إنشاء أجهزة افتراضية
1. إنشاء أجهزة Linux الافتراضية في 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
2. إنشاء جهاز Linux افتراضي في network-b
gcloud compute instances create vm-b-use4 \
--zone=us-east4-c \
--network=network-b \
--subnet=subnet-b-use4 \
--no-address \
--scopes=cloud-platform
4. إنشاء أداة رصد التهديدات في نظام أسماء النطاقات
في هذا القسم، ستنفّذ المهام التالية:
- أنشئ أداة رصد التهديدات.
- أدرِج أداة رصد التهديدات.
- قدِّم وصفًا للمرجع.
بعد توفير شبكات VPC والشبكات الفرعية والأجهزة الافتراضية، تتمثّل الخطوة التالية في إنشاء أداة رصد التهديدات في نظام أسماء النطاقات.
1. أنشئ أداة رصد التهديدات باستخدام الأمر gcloud beta network-security dns-threat-detectors create. استخدِم العلامة --excluded-networks لاستبعاد network-b.
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox \
--excluded-networks=projects/$PROJECT_ID/global/networks/network-b
2. أدرِج أداة رصد التهديدات لتأكيد الإنشاء.
gcloud beta network-security dns-threat-detectors list --location=global
3. قدِّم وصفًا للمرجع للتأكّد من إدراج network-b بشكل صحيح ضمن excludedNetworks.
gcloud beta network-security dns-threat-detectors describe my-dns-threat-detector --location=global
مثال على الناتج:
createTime: '2025-08-06T17:06:30.297586089Z' excludedNetworks: - projects/dns-armor-demo-project/global/networks/network-b name: projects/dns-armor-demo-project/locations/global/dnsThreatDetectors/my-dns-threat-detector provider: INFOBLOX updateTime: '2025-08-27T01:14:09.666357239Z'
5- اختبار عملية الإعداد
في هذا القسم، ستنفّذ المهام التالية:
- استخدِم بروتوكول النقل الآمن (SSH) للوصول إلى الأجهزة الافتراضية.
- ثبِّت Git على الأجهزة الافتراضية.
- أنشئ نسخة طبق الأصل من مستودع محاكي رصد التهديدات في Infoblox.
- نفِّذ النص البرمجي وحلِّل الناتج الذي تم إنشاؤه.
تحقَّق من صحة الإعداد من خلال إنشاء طلبات بحث ضارة محاكية لنظام أسماء النطاقات من الأجهزة الافتراضية. يجب أن تلاحظ إدخالات السجلّ لطلبات البحث الواردة من network-a، بينما لن يتم إنشاء أي سجلّات من network-b..
1. استخدِم بروتوكول SSH للدخول إلى vm-a-use4. نفِّذ أوامر gcloud التالية في Cloud Shell.
gcloud compute ssh vm-a-use4 --zone=us-east4-c
2. ثبِّت Git على الجهاز الظاهري.
sudo apt-get install git -y
3. أنشئ نسخة طبق الأصل من مستودع محاكي رصد التهديدات في Infoblox.
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. غيِّر الدليل إلى دليل المحاكي.
cd ib-threat-detection-simulator/threat_detection_simulator/
5. نفِّذ النص البرمجي وحلِّل الناتج الذي تم إنشاؤه.
اجعل النص البرمجي قابلاً للتنفيذ.
chmod +x run.sh
شغِّل النص البرمجي.
./run.sh info basic
6- مثال على الناتج
تعرض لقطة الشاشة أدناه جزءًا من ناتج النص البرمجي من جهاز افتراضي في الشبكة أ. تُظهر النتائج أنّه تم رصد% 100 من التهديدات.

تعرض لقطة الشاشة أدناه جزءًا من ناتج النص البرمجي من جهاز افتراضي في الشبكة ب. تُظهر النتيجة أنّه لم يتم رصد أي من التهديدات. وهذا متوقّع لأنّه تم استبعاد network-b أثناء إنشاء أداة رصد التهديدات.

7- ارجع إلى Cloud Shell من خلال الخروج من جلسة SSH.
exit
6. عرض سجلّات التهديدات في "مستكشف السجلات"
يمكن الاطّلاع على سجلّات التهديدات التي تم إنشاؤها في "مستكشف السجلّات" بعد تشغيل نص الاختبار، حيث يتمّ تسجيلها في Cloud Logging.
نموذج إدخال السجلّ
يقدّم هذا القسم نموذجًا لإدخال سجلّ لتهديد تم رصده في نظام أسماء النطاقات، ما يوضّح المعلومات التفصيلية التي تم التقاطها بواسطة DNS Armor، بما في ذلك عنوان IP المصدر والنطاق الذي تم الاستعلام عنه وفئة التهديد. وهي بمثابة مرجع لفهم بنية وسياق السجلات التي ستعمل على تحليلها.
{
"insertId": "1izjkneb44",
"jsonPayload": {
"partnerId": "Infoblox",
"detectionTime": "2025-08-08T01:49:54.092250101Z",
"dnsQuery": {
"authAnswer": false,
"rdata": "random.malicious-domain.com.\t300\tIN\ta\t196.251.118.39",
"protocol": "UDP",
"projectNumber": "1234567890",
"responseCode": "NOERROR",
"queryType": "A",
"location": "us-east4",
"sourceIp": "10.10.0.2",
"queryName": "random.malicious-domain.com.",
"vmProjectNumber": "1234567890",
"vmInstanceId": "01234567899876543210",
"destinationIp": "",
"queryTime": "2025-08-08T01:49:53.712692495Z"
},
"threatInfo": {
"severity": "HIGH",
"confidence": "HIGH",
"threatDescription": "",
"category": "EmergentDomain",
"threatId": "Suspicious_EmergentDomain",
"type": "Suspicious",
"threatIndicator": "izumisv1.cc",
"threatIndicatorType": "FQDN",
"threat": "Suspicious",
"threatFeed": "suspicious-noed"
}
},
"resource": {
"type": "networksecurity.googleapis.com/DnsThreatDetector",
"labels": {
"resource_container": "projects/1234567890",
"id": "",
"location": "us-east4"
}
},
"timestamp": "2025-08-08T01:49:54.092250101Z",
"severity": "INFO",
"logName": "projects/dns-armor-demo-project/logs/networksecurity.googleapis.com%2Fdns_threat_events",
"receiveTimestamp": "2025-08-08T01:49:55.290965780Z"
}
عرض السجلات في "مستكشف السجلات"
1. انتقِل إلى القسم Monitoring في Google Cloud Console، ثم اختَر Logs explorer.

2. للفلترة بحثًا عن جميع سجلّات التهديدات في DNS Armor، استخدِم طلب البحث التالي. تتم فلترة السجلات استنادًا إلى نوع المورد في "أداة رصد التهديدات في نظام أسماء النطاقات".
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
3. فلترة السجلات حسب المنطقة us-east4، وإضافة فلتر للموقع الجغرافي سيعرض هذا الطلب التهديدات التي تم رصدها في منطقة us-east4 فقط.
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
resource.labels.location="us-east4"
4. فلترة السجلات حسب شبكة المصدر: فلترة السجلات استنادًا إلى عنوان IP المصدر لطلب نظام أسماء النطاقات (DNS) من أجل الاطّلاع على التهديدات الواردة من شبكة VPC معيّنة
لعرض السجلّات من network-a (الشبكات الفرعية 10.10.0.0/24 و10.10.1.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
(jsonPayload.dnsQuery.sourceIp:"10.10.0." OR jsonPayload.dnsQuery.sourceIp:"10.10.1.")
لعرض السجلّات من network-b (الشبكات الفرعية 10.20.0.0/24):
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.sourceIp:"10.20.0."
7. تنظيف
لتجنُّب تكبُّد رسوم مستقبلية، احذف الموارد التي تم إنشاؤها في هذا الدرس البرمجي. احرص على الخروج من واجهة الجهاز الافتراضي والعودة إلى Cloud Shell عند تنفيذ أوامر التنظيف.
1. احذف الأجهزة الافتراضية.
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 instances delete vm-b-use4 --zone=us-east4-c --quiet
2. احذف قواعد جدار الحماية.
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
gcloud compute firewall-rules delete allow-ssh-iap-b --quiet
3. احذف بوابات Cloud 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 nats delete nat-b-use4 --router=router-b-use4 --region=us-east4 --quiet
4. حذف أجهزة توجيه Cloud Router
gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
gcloud compute routers delete router-b-use4 --region=us-east4 --quiet
5. احذف الشبكات الفرعية.
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 compute networks subnets delete subnet-b-use4 --region=us-east4 --quiet
6- احذف أداة رصد التهديدات في نظام أسماء النطاقات.
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
7- احذف شبكات VPC.
gcloud compute networks delete network-a --quiet
gcloud compute networks delete network-b --quiet
8. تهانينا
تهانينا! لقد نجحت في إعداد أداة رصد التهديدات DNS Armor ونشرها واختبارها. اكتسبت خبرة عملية في حماية بيئة Google Cloud من التهديدات المستندة إلى نظام أسماء النطاقات.
في هذا الدرس التطبيقي حول الترميز، لديك:
- توفير بيئة شبكة تتضمّن شبكات VPC متعددة وشبكات فرعية وآلات افتراضية
- تم ضبط خروج الإنترنت للأجهزة الافتراضية الخاصة باستخدام Cloud NAT.
- تم نشر أداة رصد التهديدات DNS Armor، وتم التعرّف على كيفية استبعاد شبكات معيّنة.
- محاكاة تهديدات نظام أسماء النطاقات والتحقّق من صحة إعدادات رصد التهديدات
- تم تحليل سجلّات التهديدات في "مستكشف السجلات" لتحديد نشاط نظام أسماء النطاقات الضار وفهمه.