How-To Configure Series – Part 5/5

Proxmox VE Distributed Firewall และการทำ Micro-segmentation ด้วย Security Group

คู่มือปฏิบัติการเปิดใช้งานและตั้งค่ากำแพงไฟล์แบบกระจายบน Proxmox VE 9.2 ครอบคลุมโครงสร้างสามระดับของกฎ การใช้ Security Group และ IP Set เพื่อแบ่งส่วนเครือข่ายภายใน หลักการเขียนกฎอย่างปลอดภัยไม่ให้ล็อกตัวเองออกจากระบบ และการตรวจสอบชุดกฎที่ระบบสร้างขึ้นจริง

Proxmox VE distributed firewall micro-segmentation with security groups

ปัญหาและโจทย์

เมื่อเครื่องเสมือนทั้งหมดในศูนย์ข้อมูลเชื่อมต่ออยู่บนเครือข่ายเดียวกันและสามารถติดต่อกันได้โดยเสรี การป้องกันภัยจึงถูกจำกัดอยู่ที่กำแพงไฟล์ชายขอบขององค์กรเท่านั้น หากเครื่องเสมือนใดเครื่องหนึ่งถูกเจาะ การเคลื่อนที่ภายในเครือข่าย (Lateral Movement) ไปยังระบบอื่นจะทำได้แทบจะทันที

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

นอกจากนี้ การทดสอบว่ากฎที่ตั้งไว้ทำงานจริงหรือไม่ มักทำได้เพียงรอให้เกิดเหตุการณ์จริง ซึ่งไม่ใช่แนวทางที่ยอมรับได้ในระบบที่ให้บริการตลอดเวลา

แนวทางการแก้ปัญหา: กำแพงไฟล์ที่ทำงานบนทุกโหนด

Proxmox VE มีระบบกำแพงไฟล์ที่เก็บคอนฟิกไว้บนระบบไฟล์ของคลัสเตอร์ แต่ให้บริการโดยเซอร์วิสที่ทำงานบนทุกโหนด แนวทางนี้ให้การแยกกันระหว่างเครื่องเสมือนอย่างสมบูรณ์ และให้แบนด์วิดท์สูงกว่าการส่งทราฟฟิกทั้งหมดไปยังอุปกรณ์กลาง การรองรับทั้ง IPv4 และ IPv6 ทำได้โดยโปร่งใส ไม่ต้องดูแลชุดกฎสองชุดแยกกัน

1. สามโซนที่กำหนดกฎได้

  • Host Zone: ทราฟฟิกเข้าและออกจากโหนด หรือทราฟฟิกที่โหนดส่งต่อ กำหนดได้ทั้งระดับศูนย์ข้อมูลและระดับโหนด โดยกฎระดับโหนดมีความสำคัญเหนือกว่า
  • VM Zone: ทราฟฟิกของเครื่องเสมือนและคอนเทนเนอร์ กำหนดได้เฉพาะทิศทางเข้าและออก
  • VNet Zone: ทราฟฟิกที่วิ่งผ่านเครือข่าย SDN VNet ซึ่งเป็นทราฟฟิกที่ถูกส่งต่อทั้งหมด จึงกำหนดได้เฉพาะทิศทาง forward

2. ที่เก็บคอนฟิกและส่วนประกอบที่ช่วยลดงาน

  • Security Group: ชุดกฎที่นิยามไว้ระดับคลัสเตอร์ แล้วนำไปเรียกใช้ซ้ำในเครื่องเสมือนหลายเครื่องได้
  • IP Set: กลุ่มของที่อยู่ IP ที่ตั้งชื่อไว้ เพื่อใช้อ้างอิงในกฎแทนการไล่ระบุทีละรายการ
  • IP Alias: ตั้งชื่อให้เครือข่ายหรือที่อยู่ IP แล้วนำชื่อนั้นไปใช้ในกฎและใน IP Set
  • Macro: ชุดกฎสำเร็จรูปสำหรับบริการที่ใช้บ่อย ช่วยลดความผิดพลาดในการเปิดพอร์ตด้วยมือ

ข้อเท็จจริงเรื่อง Backend ที่ต้องเข้าใจก่อนออกแบบ: ระบบกำแพงไฟล์ค่าเริ่มต้นของ Proxmox VE ทำงานบนพื้นฐาน iptables และไม่รองรับกฎทิศทาง forward รวมถึงกฎระดับ VNet ส่วนทางเลือกที่ใช้ nftables ซึ่งอยู่ในสถานะ Tech Preview เป็นตัวที่รองรับกฎสองประเภทนั้น การตั้งกฎ forward หรือกฎบน VNet บน Backend ค่าเริ่มต้นจะไม่ถูกนำไปใช้และไม่มีผลใด ๆ

Proxmox VE firewall three zones host VM VNet and configuration files

ขั้นตอนการตั้งค่ากำแพงไฟล์แบบกระจาย

ขั้นที่ 1: เตรียมความพร้อมก่อนเปิดใช้งาน

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

  • เปิดการเชื่อมต่อ SSH ค้างไว้หนึ่งชุด กับโหนดที่จะแก้ไข เพื่อให้ยังเข้าถึงได้หากมีสิ่งผิดพลาดเกิดขึ้น
  • เตรียมที่อยู่ IP ของผู้ดูแลระบบจากระยะไกล เพื่อสร้างกฎอนุญาตเข้าสู่เว็บอินเทอร์เฟซที่พอร์ต 8006 และ SSH ที่พอร์ต 22
  • ตรวจสอบค่าเครือข่ายท้องถิ่นที่ระบบตรวจพบอัตโนมัติ เพื่อยืนยันว่าระบบใช้ค่าใดในการสร้างกฎอนุญาตสำหรับการสื่อสารของคลัสเตอร์
# ตรวจสอบค่าเครือข่ายท้องถิ่นที่ระบบใช้สร้างกฎพื้นฐานของคลัสเตอร์
pve-firewall localnet

# ตัวอย่างผลลัพธ์
local hostname: node1
local IP address: 192.168.2.100
network auto detect: 192.168.0.0/20
using detected local_network: 192.168.0.0/20

ขั้นที่ 2: เปิดใช้งานกำแพงไฟล์ระดับคลัสเตอร์

คอนฟิกระดับคลัสเตอร์จัดเก็บที่ไฟล์ /etc/pve/firewall/cluster.fw ซึ่งเป็นระบบไฟล์ที่กระจายไปทุกโหนดโดยอัตโนมัติ โครงสร้างของไฟล์ประกอบด้วยส่วนต่าง ๆ ได้แก่ ส่วนตัวเลือก ส่วนกฎ ส่วนนิยาม IP Set ส่วนนิยาม Security Group และส่วนชื่อเรียก IP

# /etc/pve/firewall/cluster.fw

[OPTIONS]
# เปิดใช้งานกำแพงไฟล์ทั้งคลัสเตอร์ (ค่าเริ่มต้นคือปิด)
enable: 1
# นโยบายเริ่มต้นของทราฟฟิกขาเข้าและขาออก
policy_in: DROP
policy_out: ACCEPT

ขั้นที่ 3: สร้าง IP Set สำหรับกลุ่มที่อยู่ที่ใช้บ่อย

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

# /etc/pve/firewall/cluster.fw

[IPSET management]
10.10.0.0/24
203.0.113.15

[ALIASES]
# ตั้งชื่อเรียกเครือข่ายภายในองค์กร
internal_net 10.10.0.0/16

ขั้นที่ 4: สร้าง Security Group เพื่อแบ่งส่วนการเข้าถึง

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

# /etc/pve/firewall/cluster.fw
# นิยามกลุ่มสำหรับเว็บเซิร์ฟเวอร์
[group webserver]
IN  ACCEPT -p tcp -dport 80
IN  ACCEPT -p tcp -dport 443

# /etc/pve/firewall/100.fw
# นำกลุ่มไปใช้กับเครื่องเสมือนรหัส 100
[RULES]
GROUP webserver

ขั้นที่ 5: เขียนกฎระดับเครื่องเสมือนพร้อมตัวกรองที่แม่นยำ

รูปแบบของกฎคือ ทิศทาง ตามด้วยการกระทำ หรือใช้ชื่อ Macro พร้อมการกระทำในวงเล็บ แล้วจึงตามด้วยตัวกรองเพิ่มเติม กฎที่ไม่ต้องการให้ทำงานชั่วคราวสามารถปิดไว้ได้โดยเติมเครื่องหมายขีดตั้งไว้ข้างหน้า

# /etc/pve/firewall/100.fw

[RULES]
# อนุญาต SSH เฉพาะจากที่อยู่ที่กำหนด
IN SSH(ACCEPT) -i net0 -source 10.0.0.1-10.0.0.10
IN SSH(ACCEPT) -i net0 -source +management

# ปิดกฎไว้ชั่วคราวโดยไม่ต้องลบ
|IN SSH(ACCEPT) -i net0

# นโยบายปิดกั้นทราฟฟิกอื่นทั้งหมด
IN DROP
OUT ACCEPT

ตัวกรองที่ใช้บ่อยคือการจำกัดที่อยู่ต้นทางและปลายทาง (รองรับทั้งที่อยู่เดียว ช่วงที่อยู่ รายการที่อยู่ IP Set และชื่อเรียก IP) การจำกัดพอร์ตปลายทางซึ่งรับได้ทั้งชื่อบริการและหมายเลข รวมถึงช่วงพอร์ต การระบุโปรโตคอล และการกำหนดระดับการบันทึกบันทึกของแต่ละกฎ

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

ขั้นที่ 6: ตรวจสอบและแก้ไขปัญหา

ตรวจสอบสถานะของเซอร์วิสกำแพงไฟล์และชุดกฎที่ระบบสร้างขึ้นจริงได้จากบรรทัดคำสั่ง และในกรณีที่ใช้งาน Backend แบบ nftables ซึ่งเป็นทางเลือกในสถานะ Tech Preview จะมีคำสั่งเฉพาะสำหรับตรวจสอบชุดกฎและการดีบัก

# ตรวจสอบสถานะเซอร์วิสกำแพงไฟล์ค่าเริ่มต้น
pve-firewall status
pve-firewall start
pve-firewall stop

# เปิดใช้ Backend แบบ nftables: เพิ่มบรรทัดนี้ใน /etc/pve/nodes//host.fw
[OPTIONS]
nftables: 1

# ตรวจสอบผลการทำงานของ Backend แบบ nftables
systemctl status proxmox-firewall
nft list ruleset

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

ขอบเขตและศักยภาพบริการ: โมเดล Micro-segmentation ที่ใช้ได้จริง

ระดับการแบ่งส่วน วัตถุประสงค์หลัก เครื่องมือที่ใช้ สิ่งที่ต้องทราบ
ระดับโหนด จำกัดการเข้าถึงระบบจัดการโหนด กฎระดับ Host Zone และ IP Set ชื่อ management กฎระดับโหนดมีความสำคัญเหนือกฎระดับศูนย์ข้อมูล
ระดับบทบาทบริการ ให้เครื่องเสมือนกลุ่มเดียวกันใช้นโยบายร่วมกัน Security Group ที่นิยามใน cluster.fw ปรับที่จุดเดียวแล้วมีผลกับทุกเครื่องที่อ้างอิงกลุ่มนั้น
ระดับเครื่องเสมือน ควบคุมทราฟฟิกเข้าและออกของแต่ละเครื่อง กฎใน /etc/pve/firewall/<รหัสเครื่อง>.fw ต้องเปิดใช้งานกำแพงไฟล์ที่ตัวเครื่องและที่การ์ดเครือข่ายแต่ละใบ
ระดับเครือข่าย SDN ควบคุมทราฟฟิกระหว่างเครื่องภายใน VNet กฎทิศทาง forward บนไฟล์คอนฟิกของ VNet ใช้ได้เฉพาะกับ Backend แบบ nftables ซึ่งอยู่ในสถานะ Tech Preview
การควบคุมตามตัวตนเครื่อง ป้องกันการปลอมแปลงที่อยู่และการเปลี่ยน MAC ตัวกรอง ipfilter และ macfilter ในไฟล์ของเครื่องเสมือน ตัวกรอง MAC เปิดใช้เป็นค่าเริ่มต้น ส่วนตัวกรอง IP ต้องเปิดเอง
Proxmox VE micro-segmentation security groups ipset and zone level rules

ผลลัพธ์และประโยชน์

  • จำกัดการลุกลามของเหตุการณ์: เมื่อเครื่องเสมือนถูกเจาะ การเคลื่อนที่ไปยังระบบอื่นถูกจำกัดด้วยนโยบายที่นิยามไว้ล่วงหน้า
  • ลดภาระอุปกรณ์เครือข่าย: การควบคุมเกิดขึ้นที่ระดับโฮสต์ virtualization โดยตรง ไม่ต้องส่งทราฟฟิกไปกรองที่อุปกรณ์กลาง
  • ดูแลนโยบายจากจุดเดียว: การปรับ Security Group มีผลกับทุกเครื่องที่อ้างอิงทันที ลดความคลาดเคลื่อนระหว่างระบบ
  • รองรับ IPv4 และ IPv6 พร้อมกัน: ไม่ต้องดูแลชุดกฎแยกกันสำหรับสองโปรโตคอล

จุดเด่นของเรา

  • วางนโยบายจากผังการเชื่อมต่อจริง: เราสำรวจว่ากระบวนการทางธุรกิจแต่ละกระบวนการต้องสื่อสารกับระบบใด แล้วจึงแปลงเป็น Security Group ที่ตรวจสอบได้
  • ทดสอบก่อนเปิดใช้งานจริง: จำลองการเปิดกำแพงไฟล์บนคลัสเตอร์ทดสอบ เพื่อยืนยันว่าไม่มีช่องทางที่จำเป็นถูกปิดกั้นโดยไม่ตั้งใจ
  • เตรียมแผนกู้คืนการเข้าถึง: จัดทำขั้นตอนฉุกเฉินสำหรับกรณีที่ไม่สามารถเข้าสู่ระบบจัดการได้ พร้อมช่องทางสำรองที่ทดสอบแล้ว
  • เชื่อมโยงกับกรอบความมั่นคงปลอดภัย: ออกแบบนโยบายให้สอดคล้องกับฟังก์ชัน Protect และ Detect ของกรอบ NIST Cybersecurity Framework ที่องค์กรอ้างอิง

ต้องการแบ่งส่วนเครือข่ายภายในระบบเสมือนขององค์กรหรือไม่

หากองค์กรของคุณต้องการจำกัดการเคลื่อนที่ภายในเครือข่าย หรือกำลังเตรียมความพร้อมด้านการควบคุมการเข้าถึงตามข้อกำหนดของอุตสาหกรรม บน Proxmox Virtual Environment ทีมวิศวกรของเราพร้อมร่วมออกแบบนโยบายกำแพงไฟล์แบบกระจายให้สอดคล้องกับโครงสร้างระบบของท่าน

ติดต่อทีมงานผู้เชี่ยวชาญ (Contact Us)