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

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

RUK-COM PAAS / APPLICATION SETTINGS

กำหนด Container Firewall

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

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

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

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

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

Image 1: firewall and isolation illustration

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

การจัดการ Container Firewall ผ่าน UI Platform

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

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

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

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

กฎ Firewall เริ่มต้น

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

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

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

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

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

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

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

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

การเพิ่มกฎเริ่มต้นของ Container

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

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

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

ข้อความ

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

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

Image 8: inbound ports variable

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

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

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

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

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

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

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

    • ที่อยู่ 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 (Layer) จาก Environment ใดๆในบัญชี (ต่อจากนั้นกฎนี้จะถูกเสริม/ลดขนาดโดยอัตโนมัติด้วย IP ที่จำเป็นเมื่อมีการปรับขนาด Layer ที่เหมาะสมเข้า/ออก)
  • ลำดับความสำคัญ- เพื่อกำหนดลำดับความสำคัญของกฎ (โดยจะใช้กฎที่มีค่าต่ำกว่าก่อน)

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

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

กรณีการใช้งาน Firewall

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

เปลือก

cat /etc/jelastic/metainf.conf

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

  1. ถัดไปคุณต้องแก้ไขไฟล์/etc/nftables/ผู้ใช้กำหนด.nftไฟล์ (เช่นด้วย aเป็นกลุ่มแก้ไข) และประกาศกฎ Firewall โดยใช้การเขียน Script 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. ใช้การตั้งค่า Firewall ที่คุณกำหนดเองกับกฎเริ่มต้นของ Container:

เปลือก

sudo /usr/bin/jem firewall fwstart

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

เปลือก

sudo jem firewall list \;

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

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

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

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