สิ่งที่ต้องทำเพื่อให้ได้คะแนนความปลอดภัยระดับ A+ บน Nextcloud

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

ไม่มีมาตรฐาน “A+” สากลเพียงหนึ่งเดียว การตรวจสอบความปลอดภัยอย่างเป็นทางการของ Nextcloud จะประเมินเซิร์ฟเวอร์ Nextcloud ที่เปิดเผยต่อสาธารณะโดยใช้คำแนะนำด้านความปลอดภัยที่ทราบและวิธีการตรวจสอบการเสริมความแข็งแกร่งที่สามารถดำเนินการได้จากภายนอก ในขณะที่ SSL Labs จะให้คะแนนการกำหนดค่า TLS โปรดพิจารณาคะแนนใด ๆ ว่าเป็นผลลัพธ์ ณ จุดเวลาหนึ่ง ไม่ใช่หลักฐานยืนยันว่าเซิร์ฟเวอร์ปลอดภัยหรือรับประกันว่าจะไม่มีช่องโหว่ที่ไม่รู้จัก

1. ระบุเครื่องสแกนและอัปเดตเซิร์ฟเวอร์

ก่อนเปลี่ยนการตั้งค่า โปรดจดบันทึกว่าโปรแกรมสแกนใดให้คะแนนดังกล่าว รายงานการสแกนอย่างเป็นทางการของ Nextcloud จะแสดงช่องโหว่ที่ทราบ เวอร์ชันที่หมดอายุการใช้งาน และปัญหาด้านความปลอดภัยที่มองเห็นได้ คะแนน TLS-only อาจมาจาก SSL Labs แทน แก้ไขคำเตือนจากโปรแกรมสแกนที่คุณใช้ จากนั้นเรียกใช้การสแกนเดิมอีกครั้ง เนื่องจากแต่ละบริการใช้เกณฑ์ที่แตกต่างกัน

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

2. กำหนดให้ใช้ HTTPS และเพิ่ม HSTS

ให้บริการ URL สาธารณะของ Nextcloud ผ่าน HTTPS ด้วยใบรับรองที่ถูกต้อง และเปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ที่ไม่ได้เข้ารหัสไปยัง HTTPS คู่มือการรักษาความปลอดภัยของ Nextcloud แนะนำให้ใช้ HTTPS บนเซิร์ฟเวอร์ที่ใช้งานจริง จากนั้นเพิ่ม HTTP Strict Transport Security (HSTS) ที่เซิร์ฟเวอร์หรือพร็อกซีที่ส่งการตอบสนอง HTTPS สาธารณะ คำเตือนสำหรับผู้ดูแลระบบของ Nextcloud ระบุว่าควรตั้งค่าStrict-Transport-Securitymax-age อย่างน้อย 15,552,000 วินาที

สำหรับ Nginx ให้เพิ่มคำสั่งลักษณะนี้ลงในบล็อกเซิร์ฟเวอร์ TLS ที่ใช้งานอยู่ โดยแทนที่ชื่อโฮสต์และคงการตั้งค่า Nextcloud ที่คุณทราบและใช้งานได้ดีไว้:

add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
บล็อกเซิร์ฟเวอร์ Nginx TLS แสดงส่วนหัว HSTS ที่มีค่า max-age 15,552,000 วินาที และตัวเลือก includeSubDomains
ตั้งค่า HSTS บนบล็อกเซิร์ฟเวอร์ HTTPS ที่ส่งการตอบกลับไปยังผู้เข้าชมทั่วไป

ใช้includeSubDomainsเฉพาะในกรณีที่ทุกโดเมนย่อยสามารถเข้าถึงได้ผ่าน HTTPS เท่านั้น อย่าเพิ่มpreloadแฟล็กเสริมโดยไม่ระมัดระวัง: รายการโหลดล่วงหน้าของเบราว์เซอร์อาจใช้เวลาหลายเดือนในการลบโดเมนหลังจากส่งแล้ว หากพร็อกซีแบบย้อนกลับจัดการ TLS ให้กำหนดค่า HSTS บนพร็อกซีที่เชื่อมต่อกับสาธารณะนั้น การตั้งค่าเฉพาะบนโฮสต์ Nextcloud ภายในอาจไม่เปลี่ยนแปลงส่วนหัวที่เครื่องสแกนเห็น

Nextcloud ส่งเฮดเดอร์พื้นฐานอยู่แล้ว เช่นX-Content-Type-Options, X-Frame-Options, Referrer-Policy, และX-Robots-Tagในสภาพแวดล้อมเริ่มต้น หลีกเลี่ยงการเพิ่มเวอร์ชันที่ซ้ำซ้อนหรือขัดแย้งกันก่อนตรวจสอบการตอบกลับ ตัวอย่างการกำหนดค่า Nginx ของ Nextcloud แสดงวิธีการส่งเฮดเดอร์เหล่านี้จาก Nginx

3. ตั้งค่าพร็อกซีแบบย้อนกลับโดยไม่ต้องเชื่อถือไคลเอ็นต์ทุกราย

หากมีการใช้ Reverse Proxy กับ Nextcloud ให้ระบุเฉพาะที่อยู่ IP จริงหรือช่วงเครือข่ายส่วนตัวของ Proxy นั้นภายใต้ <IP address> เท่านั้นtrusted_proxiesNextcloud จะใช้ส่วนหัว Client-IP ที่ส่งต่อมาเฉพาะกับ Proxy ที่เชื่อถือได้เท่านั้น การเชื่อถือที่อยู่ที่ไม่ถูกต้องอาจทำให้ไคลเอ็นต์ปลอมแปลง IP ที่ปรากฏและบ่อนทำลายการควบคุมการเข้าถึงหรือบันทึกข้อมูลได้

ตัวอย่างเช่น หากพร็อกซีที่ยุติการเชื่อมต่อ TLS อยู่ที่10.0.0.10ให้รวมรายการที่เกี่ยวข้องเข้ากับ$CONFIGอาร์เรย์ที่มีอยู่แล้วในconfig/config.php:

'trusted_proxies' => ['10.0.0.10'],
'overwriteprotocol' => 'https',
ตัวอย่างโค้ดที่แสดงการตั้งค่า trusted_proxies เป็น 10.0.0.10 และ overwriteprotocol เป็น https
นี่เป็นเพียงตัวอย่างการตั้งค่าเท่านั้น โปรดใช้ที่อยู่ IP ของพร็อกซีจริงและผสานรวมเข้ากับโครงสร้างการตั้งค่า Nextcloud ที่มีอยู่แล้ว

ตั้งค่าoverwriteprotocolให้httpsTLS สิ้นสุดที่พร็อกซี และ Nextcloud ตรวจพบการเชื่อมต่อ HTTP ภายในเป็น HTTP สาธารณะ หากพร็อกซีของคุณใช้ส่วนหัว forwarded-IP ที่ไม่เป็นมาตรฐานforwarded_for_headersให้กำหนดค่าให้ตรงกันทุกประการ อย่าตั้งค่าช่วงที่เชื่อถือได้กว้างๆ เช่น0.0.0.0/0หลังจากแก้ไขไฟล์แล้ว ให้ตรวจสอบการกำหนดค่าที่รวมเข้าด้วยกัน และทดสอบการลงชื่อเข้าใช้ การแชร์ และลิงก์ที่สร้างขึ้น

4. ล้างคำเตือนที่เหลือของ Nextcloud

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

  • HSTS หายไป:ตรวจสอบการตอบสนองจากปลายทาง HTTPS สาธารณะ โดยเฉพาะอย่างยิ่งเมื่อพร็อกซีหรือตัวกระจายโหลดทำการยุติการเชื่อมต่อ TLS
  • ดูเหมือนว่าเซิร์ฟเวอร์จะใช้ HTTP:โปรดตรวจสอบว่าได้กำหนดค่า HTTPS ที่ขอบเครือข่ายแล้ว และเมื่อจำเป็น ให้ตั้งค่าoverwriteprotocolสำหรับการตั้งค่าพร็อกซีที่เชื่อถือได้
  • โหมดดีบักเปิดใช้งานแล้ว:ควรปิดdebugใช้งานไว้ในสภาพแงการใช้งานจริง เปิดใช้งานเฉพาะเมื่อต้องการแก้ไขปัญหาเฉพาะจุด และปิดใช้งานอีกครั้ง
  • คำเตือนเกี่ยวกับพร็อกซีหรือ IP ไคลเอ็นต์:โปรดตรวจสอบที่อยู่ต้นทางจริงและส่วนหัวที่ส่งต่อของพร็อกซี ก่อนที่จะเปลี่ยนแปลงการตั้งค่าพร็อกซีที่เชื่อถือได้
  • เวอร์ชันที่ทราบว่ามีช่องโหว่หรือหมดอายุการใช้งาน:อัปเดต Nextcloud และแพ็กเกจเซิร์ฟเวอร์ที่ได้รับผลกระทบผ่านกระบวนการอัปเกรดที่ได้รับการสนับสนุน

จำกัดการดำเนินการของผู้ดูแลระบบเฉพาะallowed_admin_rangesในกรณีที่ผู้ดูแลระบบมีช่วง IP สำหรับการจัดการที่เสถียรและเป็นที่รู้จักเท่านั้น ช่วง IP ที่ไม่ถูกต้องอาจซ่อนฟังก์ชันการดูแลระบบจากผู้ดูแลระบบที่ถูกต้อง คู่มือการรักษาความปลอดภัยของ Nextcloud ยังแนะนำให้ปิดใช้งานการบีบอัด HTTP เพื่อลดความเสี่ยงจาก BREACH ตรวจสอบการกำหนดค่าเว็บเซิร์ฟเวอร์หรือพร็อกซีของคุณว่ามีการเปิดใช้งานการบีบอัดสำหรับหน้าเว็บที่ต้องมีการตรวจสอบสิทธิ์หรือไม่

5. ตรวจสอบการตอบรับจากสาธารณะและทำการสแกนอีกครั้ง

ตรวจสอบว่าไคลเอ็นต์ภายนอกได้รับอะไรบ้าง ไม่ใช่แค่สิ่งที่ระบุไว้ในไฟล์การกำหนดค่า:

curl -I https://cloud.example.com

ตรวจสอบให้แน่ใจว่าการตอบกลับมีส่วนหัว HSTS ที่มีค่า max-age ตามที่ต้องการ และมีส่วนหัวความปลอดภัยพื้นฐานของ Nextcloud อยู่ด้วย เครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์สามารถแสดงส่วนหัวการตอบกลับเดียวกันได้ หากค่าแตกต่างจากการกำหนดค่าของคุณ ให้ตรวจสอบตัวยุติ TLS, พร็อกซี และตำแหน่ง Nginx ที่แคชไว้หรือซ้อนกันอยู่

ตัวอย่างผลลัพธ์จากคำสั่ง curl -I ที่แสดงรายการส่วนหัวการตอบสนอง HSTS, X-Content-Type-Options และ X-Frame-Options ในเทอร์มินัล
ตรวจสอบส่วนหัวที่ส่งกลับมาจาก URL HTTPS สาธารณะ การตั้งค่าเพียงบรรทัดเดียวไม่สามารถยืนยันได้ว่าผู้เข้าชมจะได้รับอะไรบ้าง

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

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

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

เอกสารอย่างเป็นทางการ

ฝากความเห็น

ล้างคำเตือนการล็อกไฟล์ของ Nextcloud ด้วย Redis

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

สิ่งที่ต้องทำเพื่อให้ได้คะแนนความปลอดภัยระดับ A+ บน Nextcloud

สิ่งที่ต้องทำเพื่อให้ได้คะแนนความปลอดภัยระดับ A+ บน Nextcloud

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

เปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์ของ Nextcloud พร้อมวัดผลกระทบ

กำหนดค่า Nextcloud SSE สำหรับพื้นที่จัดเก็บข้อมูลที่ต้องการ ปกป้องคีย์การเข้ารหัส และวัดผลกระทบต่อการถ่ายโอนข้อมูลและ CPU ก่อนที่จะเข้ารหัสไฟล์ที่มีอยู่

เพิ่มระบบค้นหาข้อความเต็มรูปแบบ Elasticsearch ลงใน Nextcloud

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

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

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

ตั้งค่า Nextcloud ให้ลบไฟล์ที่ถูกลบหลังจากระยะเวลาการเก็บรักษาที่กำหนดไว้ กำหนดเวลาการทำงานเบื้องหลังอย่างน่าเชื่อถือ และหลีกเลี่ยงคำสั่งที่ล้างถังขยะของผู้ใช้ทุกคน

ล้างคำเตือนเกี่ยวกับดัชนีฐานข้อมูลที่หายไปของ Nextcloud

ล้างคำเตือนเกี่ยวกับดัชนีฐานข้อมูลที่หายไปของ Nextcloud

เรียกใช้ฟังก์ชันซ่อมแซม OCC ของ Nextcloud อย่างปลอดภัย ดูตัวอย่างการเปลี่ยนแปลงฐานข้อมูล และตรวจสอบว่าเหตุใดคำเตือนจึงยังคงปรากฏอยู่

เพิ่มขีดจำกัดการอัปโหลดเว็บของ Nextcloud ให้เกิน 2 GB

เพิ่มขีดจำกัดการอัปโหลดเว็บของ Nextcloud ให้เกิน 2 GB

อนุญาตให้ Nextcloud อัปโหลดไฟล์ขนาดใหญ่ขึ้นได้โดยการปรับการตั้งค่า PHP, Nginx หรือ Apache, พื้นที่จัดเก็บชั่วคราว และระยะเวลาหมดเวลาให้ตรงกัน และตรวจสอบว่าข้อจำกัดใดที่กำลังบล็อกไฟล์อยู่

ล้างคำเตือนหน่วยความจำ PHP ของ Nextcloud บนเว็บเซิร์ฟเวอร์

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

เชื่อมต่อ Bucket ที่เข้ากันได้กับ S3 กับพื้นที่จัดเก็บข้อมูลภายนอกของ Nextcloud

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

ย้ายข้อมูล Nextcloud ไปยังไดรฟ์ภายนอกโดยไม่ทำให้พื้นที่จัดเก็บข้อมูลเสียหาย

ย้ายข้อมูล Nextcloud ไปยังไดรฟ์ภายนอกโดยไม่ทำให้พื้นที่จัดเก็บข้อมูลเสียหาย

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