เปิดใช้งานเฉพาะการรับส่งข้อมูลเว็บที่เซิร์ฟเวอร์ SLES 15 ของคุณต้องการเท่านั้น

ตัวอย่างสถานการณ์:ลองนึกภาพผู้ดูแลระบบกำลังเตรียมเซิร์ฟเวอร์ SLES 15 สมมติชื่อ web01 เพื่อโฮสต์เว็บไซต์สาธารณะขนาดเล็ก เป้าหมายคือการอนุญาตให้มีการรับส่งข้อมูล HTTP ขาเข้าบนพอร์ต TCP 80 ในขณะที่ยังคงรักษาเส้นทางการดูแลระบบ SSH ที่มีอยู่ไว้ ตัวอย่างนี้เป็นเพียงตัวอย่างประกอบ ไม่ใช่รายงานการทดสอบหรือการอ้างว่าการติดตั้ง SLES 15 ทุกครั้งจะมีชื่ออินเทอร์เฟซหรือบริการเหมือนกัน

ใน SLES 15 นั้นfirewalldfirewalld เป็นเฟรมเวิร์กไฟร์วอลล์เริ่มต้น และfirewall-cmdควบคุมการทำงานของมัน ขั้นแรกให้ระบุโซนที่ใช้งานอยู่และตรวจสอบการเข้าถึงระยะไกล จากนั้นเพิ่มบริการที่จำเป็นขนาดเล็กที่สุดลงในโซนนั้นในการกำหนดค่าถาวรและโหลดใหม่ เอกสารคู่มือความปลอดภัยและการเสริมความแข็งแกร่งของ SUSE SLES 15 SP7 อธิบายโมเดลแบบโซนนี้และความแตกต่างระหว่างกฎขณะทำงานและกฎถาวร ขั้นตอนเหล่านี้สมมติว่าได้ติดตั้งและใช้งาน firewalld แล้ว ระบบที่อัปเกรดเก่ากว่าอาจต้องตรวจสอบการย้ายข้อมูลแยกต่างหาก

1. ตรวจสอบบริการและโซนที่ใช้งานอยู่ก่อนทำการเปลี่ยนแปลงกฎ

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

sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-default-zone

คำสั่งแรกควรรายงานrunningคำสั่ง active-zones จะแสดงรายการโซนที่มีอินเทอร์เฟซหรือที่อยู่ต้นทางที่กำหนดไว้ อาจแสดงมากกว่าหนึ่งรายการ ในตัวอย่าง web01 สมมุติ สมมติว่ามันรายงานpublicอินเทอร์เฟซens192ให้ใช้โซนที่เชื่อมต่อกับอินเทอร์เฟซเครือข่ายขาเข้าในคำสั่งถัดไป อย่าสันนิษฐานว่าอินเทอร์เฟซมีชื่อว่าeth0และอย่าสันนิษฐานว่าpublicทำงานอยู่เพียงเพราะเป็นค่าเริ่มต้นทั่วไป

ภาพแสดงมุมมองเทอร์มินัลที่แสดงให้เห็น firewalld กำลังทำงานและอินเทอร์เฟซ ens192 ถูกกำหนดให้กับโซนสาธารณะ
ภาพแสดงมุมมองเทอร์มินัลสำหรับการตรวจสอบเบื้องต้น: firewalld รายงานว่ากำลังทำงาน และ ens192 ปรากฏอยู่ภายใต้โซนสาธารณะ

หากบริการไม่ได้ทำงานอยู่ ให้ตรวจสอบสถานะก่อนเริ่มใช้งาน: sudo systemctl status firewalldในการติดตั้ง SLES 15 มาตรฐาน firewalld จะถูกติดตั้งและเปิดใช้งานโดยค่าเริ่มต้น แต่โปรไฟล์รูปภาพ การอัปเกรด หรือนโยบายภายในเครื่องอาจแตกต่างกันไป หากติดตั้งแล้วแต่หยุดทำงาน ให้เริ่มและเปิดใช้งานหลังจากยืนยันแล้วว่านโยบายปัจจุบันจะรักษาสิทธิ์การเข้าถึงที่คุณต้องการไว้: sudo systemctl enable --now firewalldบนโฮสต์ที่จัดการจากระยะไกล ให้ยืนยันการเข้าถึงคอนโซลและการอนุญาต SSH ของคุณก่อนเปิดใช้งานไฟร์วอลล์ที่ไม่ทราบกฎปัจจุบัน

2. ยืนยันคำจำกัดความของบริการและรักษาการตั้งค่า SSH ไว้

บริการ firewalld คือกลุ่มของพอร์ตและโปรโตคอลที่มีชื่อ โปรดตรวจสอบการกำหนดค่าในเครื่องก่อนเปิดใช้งาน:

sudo firewall-cmd --info-service=http
sudo firewall-cmd --zone=public --list-all

บน SLES httpบริการที่กำหนดไว้ล่วงหน้าจะตรงกับพอร์ต TCP 80 รายการโซนช่วยให้คุณตรวจสอบบริการและพอร์ตที่อนุญาตในปัจจุบันได้ แทนที่publicด้วยโซนที่ใช้งานอยู่ที่คุณพบ หากคุณใช้ SSH ในการจัดการเซิร์ฟเวอร์ โปรดตรวจสอบให้แน่ใจว่าsshได้รับอนุญาตในโซนนั้นก่อนดำเนินการต่อ พฤติกรรมการติดตั้ง SLES และนโยบายที่มีอยู่สามารถแตกต่างกันได้ ดังนั้นควรตรวจสอบให้แน่ใจแทนที่จะใช้การคาดเดา หากเดมอน SSH ที่ติดตั้งไว้รับฟังบนพอร์ตที่ไม่ใช่มาตรฐานsshรายการบริการทั่วไปอาจไม่ตรงกัน โปรดตรวจสอบพอร์ตการรับฟังจริงของเดมอนและนโยบายไฟร์วอลล์ที่มีอยู่ก่อน

ภาพแสดงมุมมองเทอร์มินัลที่แสดงให้เห็นบริการ HTTP ที่กำหนดไว้ล่วงหน้าซึ่งรวมถึงพอร์ต TCP 80
ตัวอย่างการตรวจสอบบริการ: คำจำกัดความของบริการ HTTP ระบุพอร์ต TCP 80

3. เพิ่ม HTTP อย่างถาวร จากนั้นโหลดกฎที่บันทึกไว้

Firewalld จะเก็บรักษาการกำหนดค่าระหว่างการทำงานและการกำหนดค่าถาวรแยกจากกัน คำสั่งปกติจะเปลี่ยนเฉพาะกฎการทำงานที่ใช้งานอยู่เท่านั้น โดย--permanentจะบันทึกการกำหนดค่าไว้ แต่จะไม่เปิดใช้งานการเปลี่ยนแปลงนั้นทันที สำหรับ web01 ให้เพิ่มบริการ HTTP ลงในโซนที่เป็นเจ้าของอินเทอร์เฟซสาธารณะ:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload

ระบุ--zoneอย่างชัดเจนเพื่อป้องกันไม่ให้กฎไปอยู่ในโซนเริ่มต้นที่ไม่ต้องการ การรีโหลดจะใช้กฎถาวรกับการทำงานในขณะรันไทม์ การเปลี่ยนแปลงเฉพาะในขณะรันไทม์ที่ไม่ได้บันทึกไว้จะถูกทิ้งไปในระหว่างการรีโหลด ดังนั้นควรตรวจสอบและเก็บรักษากฎชั่วคราวใดๆ ที่คุณต้องการใช้ก่อนที่จะรัน เพื่อทดสอบบริการก่อนที่จะทำให้เป็นแบบถาวร คุณสามารถรันsudo firewall-cmd --zone=public --add-service=httpโดยไม่มีตัวเลือก ก่อน --permanentหากใช้งานได้ ให้เพิ่มกฎถาวรและรีโหลด การทดสอบเฉพาะในขณะรันไทม์จะหายไปหลังจากการรีโหลดหรือรีสตาร์ทไฟร์วอลล์

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

หากคุณต้องการพอร์ตเดียวแทนที่จะเป็นบริการที่กำหนดไว้ล่วงหน้า ให้ระบุทั้งพอร์ตและโปรโตคอล เช่น--add-port=8080/tcpทำเช่นนี้เฉพาะเมื่อแอปพลิเคชันกำลังรับฟังบนพอร์ตนั้นจริง ๆ เท่านั้น การอนุญาตไฟร์วอลล์ไม่ได้เป็นการเริ่มต้นเว็บเซิร์ฟเวอร์ สร้างกฎกลุ่มความปลอดภัยบนคลาวด์ หรือกำหนดค่าเราเตอร์ต้นทาง เลเยอร์เครือข่ายทั้งหมดต้องอนุญาตการรับส่งข้อมูล

4. ตรวจสอบสิทธิ์การเข้าถึงและลบกฎที่คุณไม่ต้องการอีกต่อไป

ตรวจสอบการตั้งค่าที่กำลังทำงานและที่บันทึกไว้:

sudo firewall-cmd --zone=public --list-services
sudo firewall-cmd --permanent --zone=public --list-services
sudo firewall-cmd --check-config

ผลลัพธ์ควรแสดงอยู่httpในรายการบริการทั้งสองรายการ และการตรวจสอบการกำหนดค่าควรเสร็จสมบูรณ์โดยไม่รายงานข้อผิดพลาด นอกจากนี้ ให้ตรวจสอบว่าแอปพลิเคชันกำลังทำงานอยู่บนเครื่องโลคอล ตัวอย่างเช่น ด้วยคำสั่ง `npm run listen` sudo ss -lntpและทดสอบเว็บไซต์จากไคลเอ็นต์บนเครือข่ายที่ต้องการ รายการไฟร์วอลล์ยืนยันกฎ ไม่ใช่การเข้าถึงแบบ end-to-end: DNS, ไฟร์วอลล์บนคลาวด์, การกำหนดเส้นทาง และเว็บเซิร์ฟเวอร์เองยังคงสามารถบล็อกหรือทำให้คำขอไม่สำเร็จได้

ภาพแสดงมุมมองเทอร์มินัลที่แสดง HTTP ในรายการบริการโซนสาธารณะควบคู่ไปกับ SSH
ตัวอย่างผลการตรวจสอบ: HTTP ปรากฏอยู่ในกลุ่มบริการสาธารณะ ในขณะที่ SSH ยังคงอยู่ในรายการ

หากไม่จำเป็นต้องใช้ HTTP อีกต่อไป ให้ลบกฎที่บันทึกไว้แล้วโหลดใหม่: sudo firewall-cmd --permanent --zone=public --remove-service=httpตามด้วยsudo firewall-cmd --reloadตรวจสอบรายการรันไทม์และรายการถาวรอีกครั้งหลังจากนั้น หลีกเลี่ยงการล้างกฎทั้งหมดหรือการเปลี่ยนไปใช้โซนที่เชื่อถือได้เพื่อแก้ไขปัญหาการเข้าถึงเพียงปัญหาเดียว การเปลี่ยนแปลงในวงกว้างเหล่านั้นอาจทำให้บริการที่ไม่เกี่ยวข้องได้รับผลกระทบ

หมายเหตุแหล่งที่มา

สำหรับคำแนะนำเฉพาะรุ่น โปรดดูคู่มือความปลอดภัยและการเสริมความแข็งแกร่งของ SUSE SLES 15 SP7สำหรับพฤติกรรมของคำสั่งในเวอร์ชัน firewalld ต่างๆ โปรดดูเอกสาร firewall-cmdและข้อมูลอ้างอิงเกี่ยวกับการกำหนดค่าขณะทำงานเทียบกับการกำหนดค่าถาวรตัวเลือกที่มีให้ใช้งานอาจแตกต่างกันไปตามเวอร์ชัน firewalld ที่มาพร้อมกับ service pack ของ SLES ดังนั้นโปรดตรวจสอบความช่วยเหลือในพื้นที่firewall-cmd --helpหากคำสั่งนั้นไม่สามารถใช้งานได้

ฝากความเห็น

รีเซ็ตรหัสผ่านผู้ดูแลระบบ Nextcloud ที่ลืมไปโดยใช้ OCC

ใช้คำสั่ง OCC ของ Nextcloud เพื่อรีเซ็ตรหัสผ่านผู้ดูแลระบบจากเชลล์เซิร์ฟเวอร์ พร้อมคำแนะนำสำหรับชื่อผู้ใช้ สิทธิ์ และผู้ให้บริการเข้าสู่ระบบภายนอก

เพิ่มส่วนหัว HSTS ที่ปลายทาง HTTPS ที่ให้บริการ Nextcloud

ล้างคำเตือน HSTS ของ Nextcloud โดยการตั้งค่าส่วนหัวที่ Apache, NGINX หรือพร็อกซี TLS ของคุณ จากนั้นตรวจสอบการตอบสนอง HTTPS สาธารณะอย่างปลอดภัย

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

แก้ไขปัญหาการติดตั้งแอป Nextcloud ที่แจ้งว่าไม่มีการเชื่อมต่ออินเทอร์เน็ต

ตรวจสอบหาสาเหตุของการติดตั้งแอปจาก App Store ที่ล้มเหลว ไม่ว่าจะเป็นปัญหาจาก DNS, HTTPS, พร็อกซี, TLS หรือปัญหาการตั้งค่าจากเซิร์ฟเวอร์ Nextcloud เอง

แก้ปัญหา CPU กระชากเร็วใน Nextcloud Preview ด้วยคิวที่กำหนดเวลาไว้

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

รับการซิงค์ข้อมูลบนเดสก์ท็อป Nextcloud โดยไม่ต้องแสดงสถานะ “กำลังประมวลผลไฟล์” อีกต่อไป

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

ล้างคำเตือน Nextcloud OPcache โดยการปรับขีดจำกัดให้ถูกต้อง

ค้นหาข้อจำกัดของ PHP OPcache ที่ทำให้เกิดคำเตือนของ Nextcloud อัปเดตการตั้งค่า PHP สำหรับเว็บให้ถูกต้อง รีสตาร์ทอย่างปลอดภัย และตรวจสอบผลลัพธ์

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เชื่อมต่อ Nextcloud กับ CODE Docker: การตั้งค่าและข้อดีข้อเสีย

เปรียบเทียบ CODE ที่ติดตั้งมากับระบบและ CODE ที่ใช้ Docker จากนั้นเชื่อมต่อ Collabora Online กับ Nextcloud ผ่านพร็อกซีแบบย้อนกลับ HTTPS ที่ปลอดภัย

สร้างคลัสเตอร์ Nextcloud ที่ทนทานด้วย Galera

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

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

กำหนดค่าและตรวจสอบรีเลย์ TURN ที่สามารถเข้าถึงได้สำหรับ Nextcloud Talk เมื่อไฟร์วอลล์หรือ NAT ที่จำกัดปิดกั้นสื่อการโทรโดยตรง

ล้างคำเตือนเกี่ยวกับความสมบูรณ์ของข้อมูลใน Nextcloud โดยการกู้คืนไฟล์ที่ถูกต้อง

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