ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / APPLICATION SETTINGS

กำหนด Container Firewall

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

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

Image 1: firewall and isolation illustration

เคล็ดลับ:หากคุณต้องการจำกัดการเข้าถึงระหว่าง Environment ในบัญชีเดียวคุณสามารถกำหนดค่าได้โดยอัตโนมัติผ่านทางการแยกเครือข่ายคุณสมบัติ.

การจัดการไฟร์วอลล์คอนเทนเนอร์ผ่าน UI แพลตฟอร์ม

แต่ละ Node บนแพลตฟอร์ม (ไม่รวม customDocker- และหน้าต่าง-based คอนเทนเนอร์) ได้รับการจัดเตรียมด้วยกฎไฟร์วอลล์ที่คุณสามารถตรวจสอบและจัดการได้ในแดชบอร์ดคลิกการตั้งค่าถัดจาก Environment ที่ต้องการแล้วเลือกไฟร์วอลล์.

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

Image 3: firewall environment settingsที่นี่จะมีแท็บต่อไปนี้:

  • ภาพรวม- ให้ข้อมูลทั่วไปเกี่ยวกับคุณสมบัติช่วยให้คุณเปลี่ยนแปลงได้สถานะไฟร์วอลล์(เปิดใช้งานสำหรับคอนเทนเนอร์ทั้งหมดตามค่าเริ่มต้น) และแสดงกลุ่ม Env ที่แยกออกมาซึ่งรวมถึง Environment ในปัจจุบันด้วย
  • กฎขาเข้า- จัดการคำขอที่เข้ามา (การเชื่อมต่อที่ไม่อยู่ในกฎจะถูกปฏิเสธโดยค่าเริ่มต้น)
  • กฎขาออก- จัดการการเชื่อมต่อขาออก (การเชื่อมต่อที่ไม่อยู่ในกฎจะได้รับอนุญาตตามค่าเริ่มต้น)

กฎไฟร์วอลล์เริ่มต้น

เมื่อคุณสร้างคอนเทนเนอร์ใหม่แพลตฟอร์มจะเพิ่มเรกคอร์ดเริ่มต้นให้กับขาเข้าและกฎขาออกส่วนต่างๆเพื่อให้คอนเทนเนอร์สามารถทำงานได้อย่างถูกต้องหากไม่มีกฎเริ่มต้นแพลตฟอร์มจะเพิ่มกฎเหล่านั้นอีกครั้งระหว่างการรีสตาร์ทไฟร์วอลล์

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

Image 5: container firewall inbound rulesกฎจะถูกจัดกลุ่มตามเลเยอร์และเป็นไปตามโครงสร้างนี้:

  • บันทึกแรกสุดจะเป็นสีเทา (เช่นไม่สามารถแก้ไขได้/บังคับ) มีลำดับความสำคัญสูงสุด (1) และอนุญาตให้โครงสร้างพื้นฐานของแพลตฟอร์มเข้าถึงคอนเทนเนอร์จาก:

    • ผู้จัดเตรียมแพลตฟอร์มเพื่อจัดการการดำเนินการทั้งหมดภายใน (รีเซ็ตรหัสผ่านการสร้างการกำหนดค่าการดำเนินการสคริปต์ CS การสร้างคีย์ SSH ฯลฯ)
    • ประตูเอสเอสเอชและเว็บ SSHเพื่อให้สามารถเข้าถึงบริการที่เหมาะสม
    • โหลดบาลานเซอร์ที่ใช้ร่วมกันเพื่ออนุญาตการเชื่อมต่อกับคอนเทนเนอร์โดยไม่มี IP สาธารณะ
  • กฎเริ่มต้น (เกี่ยวข้องกับสแต็ก) และกฎที่ผู้ใช้เพิ่ม (เพิ่มโดยเจ้าของ Environment หรือผู้ทำงานร่วมกัน)

  • อีกบันทึกสีเทาที่ไม่สามารถแก้ไขได้ (บันทึกสุดท้ายเสมอเนื่องจากมีลำดับความสำคัญต่ำสุดของ65535) ที่บล็อกการเชื่อมต่อขาเข้าใดๆที่ไม่ได้รับอนุญาตตามกฎข้างต้น

บันทึก:เปลี่ยนกฎเริ่มต้นเฉพาะเมื่อคุณรู้แน่ชัดว่าคุณกำลังทำอะไรอยู่เรกคอร์ดเหล่านี้จำเป็นสำหรับฟังก์ชันการทำงานเฉพาะสแต็กและการสนับสนุนฟีเจอร์ (เช่นสสส,HTTP,HTTPS, หรือเอฟทีพีการเชื่อมต่อ)

ในขณะที่คุณทำงานกับคอนเทนเนอร์ (เช่นการเพิ่มจุดเชื่อมต่อหรือการติดตั้งโปรแกรมเสริม FTP) แพลตฟอร์มจะสามารถเพิ่มกฎไฟร์วอลล์เริ่มต้นเพื่อให้ตรงกับข้อกำหนดใหม่แต่ละเรกคอร์ดเริ่มต้นจะใช้ขั้นตอนลำดับความสำคัญ 10 จุดดังนั้นคุณจึงสามารถแทรกกฎที่กำหนดเองระหว่างเรกคอร์ดเหล่านั้นได้

การเพิ่มกฎเริ่มต้นของคอนเทนเนอร์

หากจำเป็น (เช่นสำหรับโซลูชั่นระบบอัตโนมัติ) ใช้OPEN_INBOUND_PORTS(เมื่อก่อนรักคอม PaaS_PORTS)ตัวแปร Environmentเพื่อเปิดพอร์ตที่กำหนดเองในไฟร์วอลล์คอนเทนเนอร์เมื่อมีการสร้าง Node

  1. คลิกEnvironment ใหม่ในแดชบอร์ดเลือกกลุ่มซอฟต์แวร์ที่ต้องการและไปที่ตัวแปรกรอบการกำหนดค่า

Image 7: container variables2.จัดเตรียมใหม่OPEN_INBOUND_PORTSตัวแปรในรูปแบบต่อไปนี้:

ข้อความ

"OPEN_INBOUND_PORTS": "{port1}, {port2}, ... , {portN}"

ที่นี่,{พอร์ต N}เป็นพอร์ตเฉพาะ (1234) หรือช่วง (33062-34000) ซึ่งจะถูกเปิดเผยภายในกฎไฟร์วอลล์ขาเข้า (ผ่านทั้ง 2 รายการทีซีพีและudpโปรโตคอล) หลังการสร้างคอนเทนเนอร์

Image 8: inbound ports variable

บันทึก:การเปลี่ยนแปลงเนื่องจากOPEN_INBOUND_PORTSตัวแปรจะถูกใช้เพียงครั้งเดียวระหว่างการติดตั้ง Node ด้วยเหตุนี้.กฎไฟร์วอลล์ควรได้รับการจัดการด้วยตนเอง

  1. หลังจากที่คุณสร้าง Environment แล้วให้ตรวจสอบกฎไฟร์วอลล์บนกฎขาเข้าแท็บ

Image 9: custom default firewall rules

เคล็ดลับ:ด้านล่างนี้คุณสามารถดูตัวอย่างวิธีตั้งค่าตัวแปรนี้ผ่าน Cloud Scripting:

yaml

jpsType: install
name: OPEN_INBOUND_PORTS env variable
nodes:
  nodeType: apache2
  nodeGroup: cp
  env:
    OPEN_INBOUND_PORTS: 3306, 33061, 33062

การจัดการกฎเกณฑ์

แถบเครื่องมือเหนือรายการกฎมีให้เพิ่ม,แก้ไข,ลบ,ปิดการใช้งาน(เปิดใช้งาน), และรีเฟรชปุ่มสำหรับจัดการกฎที่มีอยู่และเพิ่มกฎใหม่

Image 11: firewall rules management buttonsเมื่อเพิ่มกฎไฟร์วอลล์ใหม่ควรกำหนดพารามิเตอร์ต่อไปนี้:

  • Node- เพื่อเลือกเลเยอร์ Environment ที่ต้องการ
  • ชื่อ- เพื่อระบุชื่อบันทึกนี้ (สามารถขยายเพื่อเลือกจากค่าที่ตั้งไว้ที่ใช้กันทั่วไปได้)
  • โปรโตคอล- เพื่อกำหนดประเภทโปรโตคอลที่ต้องการ (TCP,ยูดีพีหรือTCP/UDP)
  • ช่วงพอร์ต- เพื่อกำหนดพอร์ตเฉพาะ (เช่น80) หรือช่วงของมัน (เช่น1024-2048) เพื่อเปิด/ปิดเพื่อเชื่อมต่อ; เว้นช่องนี้ว่างไว้เพื่อใช้กฎกับทั้งหมดพอร์ต
  • แหล่งที่มา- เพื่อเลือกแหล่งที่มาของคำขอ:

    • ที่อยู่ IP ที่กำหนดเอง- รายการที่คั่นด้วยเครื่องหมายจุลภาคของที่อยู่ IPv4 หรือ IPv6 และบล็อก CIDR (เช่น10.0.0.1,10.0.0.0/24หรือ2001:db8::1,2001:db8::/32); ไม่รองรับการผสมที่อยู่ IPv4 และ IPv6 ภายในกฎเดียวกัน
    • ช่วงที่กำหนดไว้ล่วงหน้า -ทั้งหมด,IPv4 ทั้งหมด,IPv6 ทั้งหมด,เครือข่ายท้องถิ่น,อินเทอร์เน็ต (การเข้าถึงสาธารณะ)
    • NodeEnvironment- ประเภท Node (เลเยอร์) จาก Environment ใดๆในบัญชี (ต่อจากนั้นกฎนี้จะถูกเสริม/ลดขนาดโดยอัตโนมัติด้วย IP ที่จำเป็นเมื่อมีการปรับขนาดเลเยอร์ที่เหมาะสมเข้า/ออก)
  • ลำดับความสำคัญ- เพื่อกำหนดลำดับความสำคัญของกฎ (โดยจะใช้กฎที่มีค่าต่ำกว่าก่อน)

  • การกระทำ- เพื่อกำหนดการดำเนินการที่จำเป็นเมื่อได้รับคำขอที่ตรงกัน (อย่างใดอย่างหนึ่งอนุญาตหรือปฏิเสธ)

Image 12: add new inbound ruleถึงแก้ไขกฎเริ่มต้นหรือกฎที่กำหนดเองคุณสามารถปรับพารามิเตอร์ทั้งหมดที่อธิบายไว้ข้างต้นได้ยกเว้นNode(เลเยอร์เป้าหมายไม่สามารถเปลี่ยนแปลงได้) สำหรับการทดสอบให้ปิดการใช้งานกฎชั่วคราวด้วยปิดการใช้งาน/เปิดใช้งานและเปิดใช้งานอีกครั้งในภายหลังคลิกรีเฟรชเพื่ออัปเดตรายการกฎหลังจากเซิร์ฟเวอร์เปลี่ยนแปลง (เช่นการเปลี่ยนแปลงโทโพโลยี) โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์

กรณีการใช้งานไฟร์วอลล์

คุณสามารถควบคุมการเข้าถึง Node ตามพารามิเตอร์คำขอเช่นที่อยู่ IP ต้นทางโปรโตคอลและพอร์ตตัวอย่างด้านล่างบล็อกการเข้าถึงคอนเทนเนอร์จากที่อยู่ IP เฉพาะโดยใช้:

บันทึก:ก่อนที่จะปฏิบัติตามคำแนะนำนี้ตรวจสอบให้แน่ใจว่าได้จัดเตรียมคอนเทนเนอร์ที่เหมาะสมพร้อมกับไอพีสาธารณะที่อยู่.

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

จำกัดการเข้าถึงผ่านทางส่วนต่อประสานผู้ใช้

  1. คลิกการตั้งค่าถัดจาก Environment ที่ต้องการแล้วเปิดไฟร์วอลล์ส่วน. เลือกกฎขาเข้าแท็บแล้วคลิกเพิ่ม. หากต้องการจัดการการรับส่งข้อมูลคอนเทนเนอร์ขาออกแทนให้เปลี่ยนไปใช้กฎขาออกแท็บ; พารามิเตอร์กฎเหมือนกับที่อธิบายไว้ด้านล่าง

Image 15: add new inbound rule2. ในเพิ่มกฎขาเข้ากำหนดค่าวิธีที่คอนเทนเนอร์ประมวลผลคำขอที่เข้ามา

Image 16: firewall rule to deny access from ipหากต้องการปฏิเสธการเชื่อมต่อจาก IP ใดโดยเฉพาะให้กรอกข้อมูลในช่องดังต่อไปนี้:

  • Node- เลือกคอนเทนเนอร์ที่จะจำกัด (Tomcatในตัวอย่างนี้)
  • ชื่อ- ป้อนชื่อกฎ (เช่นกฎของฉัน)
  • โปรโตคอล- เลือกโปรโตคอลที่ต้องการ (TCP)
  • ช่วงพอร์ต- เว้นช่องนี้ว่างไว้เพื่อปฏิเสธการเข้าถึงพอร์ตทั้งหมด
  • แหล่งที่มา- เลือกที่อยู่ IP ที่กำหนดเองและกรอก IP ในช่วงที่อยู่ IPสนาม (111.111.111.111)
  • ลำดับความสำคัญ- กำหนดลำดับความสำคัญของกฎ (เช่น900เพื่อนำไปใช้ก่อนกฎเริ่มต้น)
  • การกระทำ- เลือกปฏิเสธ

คลิกเพิ่มเพื่อบันทึกและใช้กฎของคุณโดยอัตโนมัติ

  1. เมื่อคุณเชื่อมต่อกับ Node จาก111.111.111.111คุณจะเห็นหน้าต่อไปนี้:

Image 17: prohibited connectionคุณสามารถใช้แนวทางเดียวกันนี้ในการปฏิเสธการเข้าถึงจากที่อยู่ IP ใดๆ

จำกัดการเข้าถึงผ่าน SSH

หรือคุณสามารถกำหนดค่ากฎไฟร์วอลล์สำหรับคอนเทนเนอร์ของคุณผ่านทางเทอร์มินัลเมื่อเข้าถึง Node ผ่านประตูเอสเอสเอช.

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

  1. เปิดเว็บ SSHจากแดชบอร์ดโดยคลิกปุ่มชื่อเดียวกันถัดจาก Node ที่ต้องการเมื่อเชื่อมต่อแล้วให้ตรวจสอบ/etc/Ruk-Com PaaS/metainf.confเพื่อยืนยันว่าเปิดใช้งานไฟร์วอลล์คอนเทนเนอร์แล้ว:

เปลือก

cat /etc/jelastic/metainf.conf

Image 19: checking firewall setting via SSHที่ไฟร์วอลล์_เปิดใช้งานแล้วควรตั้งค่าพารามิเตอร์เป็น “1” หากไม่เป็นเช่นนั้นโปรดติดต่อผู้ให้บริการโฮสต์ของคุณและขอให้เปิดใช้งานการป้องกันไฟร์วอลล์สำหรับบัญชีของคุณ

  1. ถัดไปคุณต้องแก้ไขไฟล์/etc/nftables/ผู้ใช้กำหนด.nftไฟล์ (เช่นด้วย aเป็นกลุ่มแก้ไข) และประกาศกฎไฟร์วอลล์โดยใช้การเขียนสคริปต์ nftableรูปแบบ

เปลือก

vim /etc/nftables/user-defined.nft

ตัวอย่างเช่นหากต้องการปฏิเสธการเข้าถึงจาก IP เฉพาะ (111.111.111.111):

เปลือก

insert rule ip filter INPUT ip saddr 111.111.111.111 ct state new tcp dport 1111 counter drop

Image 20: nftables file to deny access from IP3. ใช้การตั้งค่าไฟร์วอลล์ที่คุณกำหนดเองกับกฎเริ่มต้นของคอนเทนเนอร์:

เปลือก

sudo /usr/bin/jem firewall fwstart

Image 21: apply custom firewall rules4. แสดงรายการกฎไฟร์วอลล์ที่ใช้งานอยู่สำหรับคอนเทนเนอร์ของคุณ:

เปลือก

sudo jem firewall list \;

Image 22: list all firewall rulesกฎที่คุณกำหนดเองปฏิเสธการเข้าถึง111.111.111.111ปรากฏในเอาต์พุตใช้แนวทางเดียวกันเพื่อจำกัดการเข้าถึงจากที่อยู่ IP ใดๆ

การตั้งกฎผ่าน Platform API

สำหรับสคริปต์ที่กำหนดเองระบบอัตโนมัติและงานที่คล้ายกันให้กำหนดค่ากฎไฟร์วอลล์ผ่านEnvironment > ความปลอดภัยวิธีการในเอกสารประกอบ API ของแพลตฟอร์ม:

  • เพิ่มกฎ- สร้างกฎใหม่
  • เพิ่มกฎ- เพิ่มกฎหลายข้อ
  • แก้ไขกฎ- เปลี่ยนพารามิเตอร์ของกฎที่มีอยู่
  • รับกฎ- แสดงรายการกฎเกณฑ์ด้าน Environment
  • ลบกฎ- ลบกฎ
  • ลบกฎ- ลบกฎหลายข้อ
  • ตั้งค่าไฟร์วอลล์เปิดใช้งานแล้ว- เปิดไฟร์วอลล์
  • ตั้งค่ากฎเปิดใช้งานแล้ว- เปิดใช้งานกฎที่มีอยู่
  • ตั้งกฎ- แทนที่กฎที่มีอยู่