กำหนด Container Firewall
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง
ที่ไฟร์วอลล์คอนเทนเนอร์คุณสมบัติช่วยให้คุณควบคุมความพร้อมใช้งานของ Node จากภายในและภายนอกแพลตฟอร์มโดยจะประเมินพารามิเตอร์ต่างๆเช่นแหล่งที่มาของคำขอขาเข้าโปรโตคอลและพอร์ต Node เป้าหมายเพื่อจัดการการเข้าถึงคอนเทนเนอร์ผ่านกฎการเชื่อมต่อ
เคล็ดลับ:หากคุณต้องการจำกัดการเข้าถึงระหว่าง Environment ในบัญชีเดียวคุณสามารถกำหนดค่าได้โดยอัตโนมัติผ่านทางการแยกเครือข่ายคุณสมบัติ.
การจัดการไฟร์วอลล์คอนเทนเนอร์ผ่าน UI แพลตฟอร์ม
แต่ละ Node บนแพลตฟอร์ม (ไม่รวม customDocker- และหน้าต่าง-based คอนเทนเนอร์) ได้รับการจัดเตรียมด้วยกฎไฟร์วอลล์ที่คุณสามารถตรวจสอบและจัดการได้ในแดชบอร์ดคลิกการตั้งค่าถัดจาก Environment ที่ต้องการแล้วเลือกไฟร์วอลล์.
บันทึก:ความพร้อมของไฟร์วอลล์คอนเทนเนอร์UI ขึ้นอยู่กับการตั้งค่าผู้ให้บริการโฮสต์เฉพาะของคุณหากคุณไม่มีส่วนนี้โปรดติดต่อฝ่ายสนับสนุนแพลตฟอร์มของคุณและขอเปิดใช้งานฟีเจอร์สำหรับบัญชีของคุณ
- ภาพรวม- ให้ข้อมูลทั่วไปเกี่ยวกับคุณสมบัติช่วยให้คุณเปลี่ยนแปลงได้สถานะไฟร์วอลล์(เปิดใช้งานสำหรับคอนเทนเนอร์ทั้งหมดตามค่าเริ่มต้น) และแสดงกลุ่ม Env ที่แยกออกมาซึ่งรวมถึง Environment ในปัจจุบันด้วย
- กฎขาเข้า- จัดการคำขอที่เข้ามา (การเชื่อมต่อที่ไม่อยู่ในกฎจะถูกปฏิเสธโดยค่าเริ่มต้น)
- กฎขาออก- จัดการการเชื่อมต่อขาออก (การเชื่อมต่อที่ไม่อยู่ในกฎจะได้รับอนุญาตตามค่าเริ่มต้น)
กฎไฟร์วอลล์เริ่มต้น
เมื่อคุณสร้างคอนเทนเนอร์ใหม่แพลตฟอร์มจะเพิ่มเรกคอร์ดเริ่มต้นให้กับขาเข้าและกฎขาออกส่วนต่างๆเพื่อให้คอนเทนเนอร์สามารถทำงานได้อย่างถูกต้องหากไม่มีกฎเริ่มต้นแพลตฟอร์มจะเพิ่มกฎเหล่านั้นอีกครั้งระหว่างการรีสตาร์ทไฟร์วอลล์
เคล็ดลับ:กฎเหล่านี้จะขึ้นอยู่กับเปิดเผยพอร์ตที่ประกาศไว้ในอิมเมจ Dockerfile ดูการสร้างคอนเทนเนอร์แบบกำหนดเองคำแนะนำสำหรับรายละเอียด
กฎจะถูกจัดกลุ่มตามเลเยอร์และเป็นไปตามโครงสร้างนี้:
-
บันทึกแรกสุดจะเป็นสีเทา (เช่นไม่สามารถแก้ไขได้/บังคับ) มีลำดับความสำคัญสูงสุด (1) และอนุญาตให้โครงสร้างพื้นฐานของแพลตฟอร์มเข้าถึงคอนเทนเนอร์จาก:
- ผู้จัดเตรียมแพลตฟอร์มเพื่อจัดการการดำเนินการทั้งหมดภายใน (รีเซ็ตรหัสผ่านการสร้างการกำหนดค่าการดำเนินการสคริปต์ CS การสร้างคีย์ SSH ฯลฯ)
- ประตูเอสเอสเอชและเว็บ SSHเพื่อให้สามารถเข้าถึงบริการที่เหมาะสม
- โหลดบาลานเซอร์ที่ใช้ร่วมกันเพื่ออนุญาตการเชื่อมต่อกับคอนเทนเนอร์โดยไม่มี IP สาธารณะ
-
กฎเริ่มต้น (เกี่ยวข้องกับสแต็ก) และกฎที่ผู้ใช้เพิ่ม (เพิ่มโดยเจ้าของ Environment หรือผู้ทำงานร่วมกัน)
- อีกบันทึกสีเทาที่ไม่สามารถแก้ไขได้ (บันทึกสุดท้ายเสมอเนื่องจากมีลำดับความสำคัญต่ำสุดของ65535) ที่บล็อกการเชื่อมต่อขาเข้าใดๆที่ไม่ได้รับอนุญาตตามกฎข้างต้น
บันทึก:เปลี่ยนกฎเริ่มต้นเฉพาะเมื่อคุณรู้แน่ชัดว่าคุณกำลังทำอะไรอยู่เรกคอร์ดเหล่านี้จำเป็นสำหรับฟังก์ชันการทำงานเฉพาะสแต็กและการสนับสนุนฟีเจอร์ (เช่นสสส,HTTP,HTTPS, หรือเอฟทีพีการเชื่อมต่อ)
ในขณะที่คุณทำงานกับคอนเทนเนอร์ (เช่นการเพิ่มจุดเชื่อมต่อหรือการติดตั้งโปรแกรมเสริม FTP) แพลตฟอร์มจะสามารถเพิ่มกฎไฟร์วอลล์เริ่มต้นเพื่อให้ตรงกับข้อกำหนดใหม่แต่ละเรกคอร์ดเริ่มต้นจะใช้ขั้นตอนลำดับความสำคัญ 10 จุดดังนั้นคุณจึงสามารถแทรกกฎที่กำหนดเองระหว่างเรกคอร์ดเหล่านั้นได้
การเพิ่มกฎเริ่มต้นของคอนเทนเนอร์
หากจำเป็น (เช่นสำหรับโซลูชั่นระบบอัตโนมัติ) ใช้OPEN_INBOUND_PORTS(เมื่อก่อนรักคอม PaaS_PORTS)ตัวแปร Environmentเพื่อเปิดพอร์ตที่กำหนดเองในไฟร์วอลล์คอนเทนเนอร์เมื่อมีการสร้าง Node
- คลิกEnvironment ใหม่ในแดชบอร์ดเลือกกลุ่มซอฟต์แวร์ที่ต้องการและไปที่ตัวแปรกรอบการกำหนดค่า
2.จัดเตรียมใหม่OPEN_INBOUND_PORTSตัวแปรในรูปแบบต่อไปนี้:
ข้อความ
"OPEN_INBOUND_PORTS": "{port1}, {port2}, ... , {portN}"
ที่นี่,{พอร์ต N}เป็นพอร์ตเฉพาะ (1234) หรือช่วง (33062-34000) ซึ่งจะถูกเปิดเผยภายในกฎไฟร์วอลล์ขาเข้า (ผ่านทั้ง 2 รายการทีซีพีและudpโปรโตคอล) หลังการสร้างคอนเทนเนอร์
บันทึก:การเปลี่ยนแปลงเนื่องจากOPEN_INBOUND_PORTSตัวแปรจะถูกใช้เพียงครั้งเดียวระหว่างการติดตั้ง Node ด้วยเหตุนี้.กฎไฟร์วอลล์ควรได้รับการจัดการด้วยตนเอง
- หลังจากที่คุณสร้าง Environment แล้วให้ตรวจสอบกฎไฟร์วอลล์บนกฎขาเข้าแท็บ
เคล็ดลับ:ด้านล่างนี้คุณสามารถดูตัวอย่างวิธีตั้งค่าตัวแปรนี้ผ่าน Cloud Scripting:
yaml
jpsType: install
name: OPEN_INBOUND_PORTS env variable
nodes:
nodeType: apache2
nodeGroup: cp
env:
OPEN_INBOUND_PORTS: 3306, 33061, 33062
การจัดการกฎเกณฑ์
แถบเครื่องมือเหนือรายการกฎมีให้เพิ่ม,แก้ไข,ลบ,ปิดการใช้งาน(เปิดใช้งาน), และรีเฟรชปุ่มสำหรับจัดการกฎที่มีอยู่และเพิ่มกฎใหม่
เมื่อเพิ่มกฎไฟร์วอลล์ใหม่ควรกำหนดพารามิเตอร์ต่อไปนี้:
- 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 ที่จำเป็นเมื่อมีการปรับขนาดเลเยอร์ที่เหมาะสมเข้า/ออก)
-
ลำดับความสำคัญ- เพื่อกำหนดลำดับความสำคัญของกฎ (โดยจะใช้กฎที่มีค่าต่ำกว่าก่อน)
- การกระทำ- เพื่อกำหนดการดำเนินการที่จำเป็นเมื่อได้รับคำขอที่ตรงกัน (อย่างใดอย่างหนึ่งอนุญาตหรือปฏิเสธ)
ถึงแก้ไขกฎเริ่มต้นหรือกฎที่กำหนดเองคุณสามารถปรับพารามิเตอร์ทั้งหมดที่อธิบายไว้ข้างต้นได้ยกเว้นNode(เลเยอร์เป้าหมายไม่สามารถเปลี่ยนแปลงได้) สำหรับการทดสอบให้ปิดการใช้งานกฎชั่วคราวด้วยปิดการใช้งาน/เปิดใช้งานและเปิดใช้งานอีกครั้งในภายหลังคลิกรีเฟรชเพื่ออัปเดตรายการกฎหลังจากเซิร์ฟเวอร์เปลี่ยนแปลง (เช่นการเปลี่ยนแปลงโทโพโลยี) โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์
กรณีการใช้งานไฟร์วอลล์
คุณสามารถควบคุมการเข้าถึง Node ตามพารามิเตอร์คำขอเช่นที่อยู่ IP ต้นทางโปรโตคอลและพอร์ตตัวอย่างด้านล่างบล็อกการเข้าถึงคอนเทนเนอร์จากที่อยู่ IP เฉพาะโดยใช้:
บันทึก:ก่อนที่จะปฏิบัติตามคำแนะนำนี้ตรวจสอบให้แน่ใจว่าได้จัดเตรียมคอนเทนเนอร์ที่เหมาะสมพร้อมกับไอพีสาธารณะที่อยู่.
เมื่อคุณทำให้งานวงจรการใช้งานคอนเทนเนอร์เป็นแบบอัตโนมัติคุณสามารถนำการเปลี่ยนแปลงไฟร์วอลล์ไปใช้ผ่านทางAPI ของแพลตฟอร์ม. ดูวิธีการที่เกี่ยวข้องในข้อมูลอ้างอิงที่เชื่อมโยง
จำกัดการเข้าถึงผ่านทางส่วนต่อประสานผู้ใช้
- คลิกการตั้งค่าถัดจาก Environment ที่ต้องการแล้วเปิดไฟร์วอลล์ส่วน. เลือกกฎขาเข้าแท็บแล้วคลิกเพิ่ม. หากต้องการจัดการการรับส่งข้อมูลคอนเทนเนอร์ขาออกแทนให้เปลี่ยนไปใช้กฎขาออกแท็บ; พารามิเตอร์กฎเหมือนกับที่อธิบายไว้ด้านล่าง
2. ในเพิ่มกฎขาเข้ากำหนดค่าวิธีที่คอนเทนเนอร์ประมวลผลคำขอที่เข้ามา
หากต้องการปฏิเสธการเชื่อมต่อจาก IP ใดโดยเฉพาะให้กรอกข้อมูลในช่องดังต่อไปนี้:
- Node- เลือกคอนเทนเนอร์ที่จะจำกัด (Tomcatในตัวอย่างนี้)
- ชื่อ- ป้อนชื่อกฎ (เช่นกฎของฉัน)
- โปรโตคอล- เลือกโปรโตคอลที่ต้องการ (TCP)
- ช่วงพอร์ต- เว้นช่องนี้ว่างไว้เพื่อปฏิเสธการเข้าถึงพอร์ตทั้งหมด
- แหล่งที่มา- เลือกที่อยู่ IP ที่กำหนดเองและกรอก IP ในช่วงที่อยู่ IPสนาม (111.111.111.111)
- ลำดับความสำคัญ- กำหนดลำดับความสำคัญของกฎ (เช่น900เพื่อนำไปใช้ก่อนกฎเริ่มต้น)
- การกระทำ- เลือกปฏิเสธ
คลิกเพิ่มเพื่อบันทึกและใช้กฎของคุณโดยอัตโนมัติ
- เมื่อคุณเชื่อมต่อกับ Node จาก111.111.111.111คุณจะเห็นหน้าต่อไปนี้:
คุณสามารถใช้แนวทางเดียวกันนี้ในการปฏิเสธการเข้าถึงจากที่อยู่ IP ใดๆ
จำกัดการเข้าถึงผ่าน SSH
หรือคุณสามารถกำหนดค่ากฎไฟร์วอลล์สำหรับคอนเทนเนอร์ของคุณผ่านทางเทอร์มินัลเมื่อเข้าถึง Node ผ่านประตูเอสเอสเอช.
บันทึก:แม้ว่าการกำหนดค่าไฟร์วอลล์ส่วนใหญ่สามารถทำได้ผ่านอินเทอร์เฟซผู้ใช้เฉพาะแต่การจัดการผ่าน SSH นั้นมีความยืดหยุ่นมากกว่า (เช่นอนุญาตให้กำหนดค่าการเปลี่ยนเส้นทาง NAT) อย่างไรก็ตามกฎดังกล่าวจะไม่แสดงในรายการ UI แต่จะมีลำดับความสำคัญสูงกว่า
- เปิดเว็บ SSHจากแดชบอร์ดโดยคลิกปุ่มชื่อเดียวกันถัดจาก Node ที่ต้องการเมื่อเชื่อมต่อแล้วให้ตรวจสอบ/etc/Ruk-Com PaaS/metainf.confเพื่อยืนยันว่าเปิดใช้งานไฟร์วอลล์คอนเทนเนอร์แล้ว:
เปลือก
cat /etc/jelastic/metainf.conf
ที่ไฟร์วอลล์_เปิดใช้งานแล้วควรตั้งค่าพารามิเตอร์เป็น “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
3. ใช้การตั้งค่าไฟร์วอลล์ที่คุณกำหนดเองกับกฎเริ่มต้นของคอนเทนเนอร์:
เปลือก
sudo /usr/bin/jem firewall fwstart
4. แสดงรายการกฎไฟร์วอลล์ที่ใช้งานอยู่สำหรับคอนเทนเนอร์ของคุณ:
เปลือก
sudo jem firewall list \;
กฎที่คุณกำหนดเองปฏิเสธการเข้าถึง111.111.111.111ปรากฏในเอาต์พุตใช้แนวทางเดียวกันเพื่อจำกัดการเข้าถึงจากที่อยู่ IP ใดๆ
การตั้งกฎผ่าน Platform API
สำหรับสคริปต์ที่กำหนดเองระบบอัตโนมัติและงานที่คล้ายกันให้กำหนดค่ากฎไฟร์วอลล์ผ่านEnvironment > ความปลอดภัยวิธีการในเอกสารประกอบ API ของแพลตฟอร์ม:
- เพิ่มกฎ- สร้างกฎใหม่
- เพิ่มกฎ- เพิ่มกฎหลายข้อ
- แก้ไขกฎ- เปลี่ยนพารามิเตอร์ของกฎที่มีอยู่
- รับกฎ- แสดงรายการกฎเกณฑ์ด้าน Environment
- ลบกฎ- ลบกฎ
- ลบกฎ- ลบกฎหลายข้อ
- ตั้งค่าไฟร์วอลล์เปิดใช้งานแล้ว- เปิดไฟร์วอลล์
- ตั้งค่ากฎเปิดใช้งานแล้ว- เปิดใช้งานกฎที่มีอยู่
- ตั้งกฎ- แทนที่กฎที่มีอยู่




