EDIT # 2 ngày 23 tháng 7 năm 2015: Tìm kiếm một câu trả lời mới xác định một mục bảo mật quan trọng bị bỏ lỡ trong thiết lập bên dưới hoặc có thể đưa ra lý do để tin rằng mọi thứ được bảo hiểm.
EDIT # 3 ngày 29 tháng 7 năm 2015: Tôi đặc biệt đang tìm kiếm một cấu hình sai có thể xảy ra như vô tình cho phép một cái gì đó có thể bị khai thác để tránh các hạn chế bảo mật hoặc tệ hơn là để mở một cái gì đó rộng mở.
Đây là thiết lập lưu trữ chia sẻ nhiều trang web và chúng tôi muốn sử dụng một cá thể Apache được chia sẻ (nghĩa là chạy dưới một tài khoản người dùng) nhưng với PHP / CGI chạy khi mỗi người dùng trang web đảm bảo không có trang web nào có thể truy cập các tệp của trang web khác và chúng tôi muốn đảm bảo không có gì bị bỏ lỡ (ví dụ: nếu chúng tôi không biết về phòng chống tấn công symlink).
Đây là những gì tôi có cho đến nay:
- Đảm bảo các tập lệnh PHP chạy dưới dạng tài khoản và nhóm người dùng Linux của trang web và bị bỏ tù (chẳng hạn như sử dụng CageFS) hoặc ít nhất là bị hạn chế sử dụng quyền của hệ thống tệp Linux.
- Sử dụng suexec để đảm bảo rằng các tập lệnh CGI không thể chạy như người dùng Apache.
- Nếu cần phía máy chủ bao gồm hỗ trợ (chẳng hạn như trong tệp shtml), hãy sử dụng
Options IncludesNOEXEC
để ngăn CGI không thể chạy khi bạn không mong đợi (mặc dù điều này không đáng lo ngại nếu sử dụng suexec). - Có bảo vệ tấn công symlink tại chỗ để tin tặc không thể lừa Apache phục vụ các tệp của trang web khác dưới dạng văn bản gốc và tiết lộ thông tin có thể khai thác như mật khẩu DB.
- Định cấu hình
AllowOverride
/AllowOverrideList
chỉ cho phép bất kỳ chỉ thị nào mà tin tặc không thể khai thác. Tôi nghĩ rằng điều này ít quan tâm hơn nếu các mục trên được thực hiện đúng.
Tôi sẽ đi với MPM ITK nếu nó không quá chậm và không chạy bằng root, nhưng chúng tôi đặc biệt muốn sử dụng một Apache được chia sẻ nhưng đảm bảo nó được thực hiện an toàn.
Tôi đã tìm thấy http://httpd.apache.org/docs/2.4/misc/security_tips.html , nhưng nó không toàn diện về chủ đề này.
Nếu nó hữu ích để biết, chúng tôi dự định sử dụng CloudLinux với CageFS và mod_lsapi.
Có bất cứ điều gì khác để đảm bảo làm hoặc biết về?
EDIT ngày 20 tháng 7 năm 2015: Mọi người đã gửi một số giải pháp thay thế tốt có giá trị nói chung, nhưng xin lưu ý rằng câu hỏi này chỉ nhắm mục tiêu bảo mật cho thiết lập Apache được chia sẻ. Cụ thể là có một cái gì đó không được đề cập ở trên có thể cho phép một trang web truy cập các tệp của trang web khác hoặc thỏa hiệp các trang web khác bằng cách nào đó?
Cảm ơn!