ฉันกำลังตั้งค่าเว็บเซิร์ฟเวอร์ที่จะโฮสต์เว็บไซต์ที่แตกต่างกันจำนวนหนึ่งเป็น Apache VirtualHosts แต่ละแห่งจะมีความเป็นไปได้ในการเรียกใช้สคริปต์ (โดยหลักคือ PHP และอื่น ๆ )
คำถามของฉันคือฉันแยกแต่ละ VirtualHosts เหล่านี้ออกจากแต่ละคนและจากส่วนที่เหลือของระบบได้อย่างไร ฉันไม่ต้องการให้เว็บไซต์ X อ่านการกำหนดค่าเว็บไซต์ Y หรือไฟล์ "ส่วนตัว" ของเซิร์ฟเวอร์
ในขณะนี้ฉันได้ติดตั้ง VirtualHosts ด้วย FastCGI, PHP และ SUExec ตามที่อธิบายไว้ที่นี่ ( http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ) แต่ SUExec ป้องกันผู้ใช้จากการแก้ไข / เรียกใช้ไฟล์อื่นที่ไม่ใช่ของตนเองเท่านั้น - ผู้ใช้ยังสามารถอ่านข้อมูลที่ละเอียดอ่อนเช่นไฟล์กำหนดค่า
ฉันคิดว่าจะลบสิทธิ์การอ่านแบบโกลบอลของ UNIX สำหรับไฟล์ทั้งหมดบนเซิร์ฟเวอร์เพราะจะช่วยแก้ไขปัญหาข้างต้นได้ แต่ฉันไม่แน่ใจว่าฉันสามารถทำได้อย่างปลอดภัยหรือไม่โดยไม่รบกวนการทำงานของเซิร์ฟเวอร์
ฉันดูที่การใช้ chroot ด้วย แต่ดูเหมือนว่าสิ่งนี้สามารถทำได้แบบต่อเซิร์ฟเวอร์เท่านั้นไม่ใช่แบบต่อโฮสต์เสมือน
ฉันกำลังมองหาคำแนะนำใด ๆ ที่จะแยก VirtualHosts ของฉันออกจากส่วนที่เหลือของระบบ
PS ฉันใช้เซิร์ฟเวอร์ Ubuntu 12.04
คำตอบของฉัน:ฉันลงเอยด้วยการติดตามการตั้งค่าปัจจุบันของฉัน แต่ทำ chroot คุกสำหรับโฮสต์เสมือนทั้งหมดเช่นมี chroot jail ใน/var/www
แล้วมีข้อมูลผู้ใช้ทั้งหมดในโฟลเดอร์ย่อยแต่ละสิทธิ์กลุ่ม / อื่น ๆ r / w / x พิการ ตัวเลือกนี้เป็นที่ต้องการโดยเฉพาะอย่างยิ่งเพราะเป็นไปได้ทั้งหมดโดยไม่มีการดัดแปลงใด ๆ กับซอร์สโค้ด
ฉันเลือก @Chris 'คำตอบเพราะมันเขียนอย่างละเอียดและยังพิจารณา FTP และ SELinux
mod_userdir
บริการโฮสต์เสมือนของโดเมนแยกต่างหาก นอกจากนี้ฉันมีข้อกังวลเกี่ยวกับความปลอดภัยในแง่ของการแยกตัวเนื่องจากฉันไม่สามารถค้นหาสิ่งใดระหว่างไดเรกทอรีผู้ใช้ภายใน Apache ดูเหมือนว่าจะไม่เสนอคุณสมบัตินั้น