ตั้งค่า apache โฮสต์เสมือนให้ถูกต้องด้วยผู้ใช้หลายคน


15

ขอขอบคุณล่วงหน้าสำหรับความช่วยเหลือที่คุณอาจมีให้ ฉันสอนตัวเองด้วยการใช้ linux (Ubuntu), apache, โฮสต์เสมือนและไม่กี่บิตเกี่ยวกับความปลอดภัยแม้ว่าฉันยังไม่ได้รวมสิ่งเหล่านี้เข้าด้วยกันอย่างราบรื่น

ฉันยังได้เรียนรู้วิธีที่ยากลำบากจากความผิดพลาดที่เกิดขึ้นในอดีตเกี่ยวกับการไม่ตั้งค่าบัญชีผู้ใช้และไซต์ / โฮสต์เสมือนอย่างถูกต้อง ฉัน ssh เข้าไปในเซิร์ฟเวอร์ในฐานะรูท (ฉันรู้ว่าแย่มาก) และสร้างโฮสต์เสมือนและไฟล์ทั้งหมดด้วยตนเองดังนั้นทั้งหมดจะถูกเป็นเจ้าของโดยรูท ฉันมี joomla รุ่นเก่าที่มีช่องโหว่และใส่รหัสสแปมในโฮสต์เสมือนอื่นของฉันทั้งหมด

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

เซิร์ฟเวอร์ปัจจุบันของเราคือรุ่น 10.04 แต่เซิร์ฟเวอร์ใหม่เป็นรุ่น 12.04 ไฟล์เว็บไซต์ทั้งหมดถูกติดตั้งภายใต้

/home/www/site1.com

/home/www/site2.com

/home/www/site3.com

ฯลฯ

ในระยะสั้นฉันเดาว่านี่คือสิ่งที่ฉันตามมา

  1. ฉันจะตั้งค่าโฮสต์เสมือนและผู้ใช้ได้อย่างถูกต้องเพื่อให้มีการเข้าถึงไฟล์ของตัวเองเท่านั้นและไม่ได้โฮสต์เสมือนอื่น ๆ บนเซิร์ฟเวอร์ ตัวอย่างเช่นหากไซต์นั้นถูกโจมตีด้วยรหัสที่เป็นอันตรายจะไม่สามารถแพร่เชื้อไปยังไซต์อื่น ๆ บนเซิร์ฟเวอร์

  2. ฉันจะตั้งค่าผู้ใช้เพื่อให้พวกเขาสามารถ ftp ลงในไฟล์ที่กำหนดได้อย่างไรและไม่สามารถเข้าถึงไซต์อื่น ๆ

ดังที่ได้กล่าวไว้ก่อนหน้านี้มีบทความมากมายที่อธิบายรายละเอียดวิธีการทำหนึ่งในขั้นตอนเหล่านี้ แต่ไม่มีสิ่งใดที่จะนำมารวมกันได้อย่างลงตัว

ขอขอบคุณสำหรับความช่วยเหลือที่ทุกคนสามารถให้ได้ โปรดสอบถามข้อมูลเพิ่มเติมใด ๆ ที่คุณอาจต้องให้คำแนะนำ ขณะนี้ฉันกำลังติดตามบทเรียนเพื่อตั้งค่า chroot แต่ฉันกลัวว่าฉันจะไม่ทำอย่างถูกต้องเนื่องจากฉันได้รับความไม่สอดคล้องกันมาบ้างแล้ว กำลังสืบสวนการคุมขังด้วย

คำตอบ:


6

เนื่องจากคำถามคือผลการค้นหาอันดับต้น ๆ ใน google เมื่อถูกถามว่า "apache virtual host แยกผู้ใช้" ฉันต้องการให้คำตอบที่ซับซ้อนยิ่งขึ้นตามคำตอบนี้ คำตอบของฉันไม่ครอบคลุม usecase ของ PHP และ CGI (คุณจะใช้ suPHP) มันมุ่งเน้นไปที่ PHP เมื่อใช้เป็นโมดูล Apache

คุณสามารถใช้ Apache โมดูลapache2-MPM-itk มันสามารถใช้ได้สำหรับ apache รุ่นปัจจุบัน 2.4 AssignUserIDมันมาพร้อมกับคำสั่ง คำสั่งนี้กำหนดผู้ใช้และกลุ่มที่จัดการกับคำขอของโฮสต์เสมือน นี่เป็นตัวอย่างของการกำหนดค่าไซต์ apache ที่ฉันได้รับ:

<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /home/www/site1.com
AssignUserID site1 www-data
php_admin_value open_basedir /home/www/site1.com
...
</VirtualHost>

แน่นอนว่าสิ่งนี้จะปรับปรุงความปลอดภัยตราบใดที่ DocumentRoots แต่ละรายการเป็นของผู้ใช้ที่เกี่ยวข้องและไม่ได้เป็นกลุ่มที่สามารถเข้าถึงได้ เพื่อความปลอดภัยเพิ่มเติมเกี่ยวกับ PHP สคริปต์จะถูกจำคุกDocumentRootด้วยข้อ จำกัด open_basedir สำหรับการเข้าถึงไฟล์แบ็กเอนด์ผมชอบSFTP กับ chroot

หมายเหตุ: apache2-mpm-itk เข้ากันไม่ได้กับโมดูล http2 ของ Apache


1

ฉันไม่คิดว่านี่เป็นคำตอบสำหรับคำถามของคุณเอง แต่เนื่องจากฉันยังไม่สามารถแสดงความคิดเห็นได้ฉันต้องเขียนในพื้นที่ "คำตอบ" ฉันทำการจัดการเว็บตามฤดูกาลวิธีหนึ่งสำหรับฉันในการทดสอบและทดลองใช้อย่างปลอดภัยคือการตั้งค่าสภาพแวดล้อมการทดสอบในเครื่องเสมือน (เช่น VirtualBox) หรือคอมพิวเตอร์เดสก์ท็อป "เก่า" หนึ่งในปัญหาที่พบบ่อยมากของผู้ดูแลเว็บโฮสต์มือใหม่คือการเข้าใจว่าโปรแกรมเว็บเซิร์ฟเวอร์ทำงานอย่างไร ในกรณีนี้ฉันถือว่าคุณต้องเข้าใจว่า Apache ทำงานอย่างไรและอย่างน้อยก็เข้าใจไฟล์กำหนดค่า ฉันพบว่าWebminเป็นเครื่องมือที่มีประโยชน์มากสำหรับมือใหม่ในการจัดการ Apache และบริการอื่น ๆ คุณต้องใช้เวลาลองสิ่งต่างๆในสภาพแวดล้อมการทดสอบเพื่อให้สิ่งต่าง ๆ ชัดเจนขึ้นสำหรับคุณ

กลับมาที่คำถามของคุณฉันคิดว่าคำตอบอาจเป็นบทความเกี่ยวกับการสอนหรือหนังสือเล่มเล็ก ๆ ตรวจสอบบทความเหล่านี้เพื่อเริ่มต้น:

https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

http://www.servermom.org/build-ubuntu-server-a-complete-guide/


ขอบคุณ biocyberman นี่เป็นขั้นตอนพื้นฐานที่ฉันทำตามและคุ้นเคยกับ ความแตกต่างเพียงอย่างเดียวคือฉันไม่ได้ chown'd แต่ละเว็บไซต์ให้กับผู้ใช้ที่แตกต่างกันซึ่งเป็นสิ่งที่ฉันจะลองต่อไป แต่สิ่งนี้จะปลอดภัยโฟลเดอร์ virtualhosts จากกัน? Jailkit ดูเหมือนจะเป็นส่วนหนึ่งของการแก้ปัญหา แต่ฉันไม่แน่ใจ 100% ฉันเคยเล่นกับ webmin มาแล้วดังนั้นจะกลับมาทบทวนอีกครั้งและดูว่าจะช่วยตอบคำถามที่ฉันมีหรือไม่
user249729
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.