EDIT # 2 23 Juli 2015: Mencari jawaban baru yang mengidentifikasi item keamanan penting yang terlewat dalam pengaturan di bawah ini atau dapat memberikan alasan untuk meyakini semuanya tercakup.
EDIT # 3 29 Juli 2015: Saya terutama mencari kemungkinan kesalahan konfigurasi seperti secara tidak sengaja mengizinkan sesuatu yang dapat dieksploitasi untuk menghindari pembatasan keamanan atau lebih buruk lagi tetapi membiarkan sesuatu terbuka lebar.
Ini adalah pengaturan multi-situs / shared hosting dan kami ingin menggunakan contoh Apache bersama (yaitu berjalan di bawah satu akun pengguna) tetapi dengan PHP / CGI berjalan sebagai pengguna setiap situs web untuk memastikan tidak ada situs yang dapat mengakses file situs lain, dan kami ingin pastikan tidak ada yang terlewatkan (mis. jika kita tidak tahu tentang pencegahan serangan symlink).
Inilah yang saya miliki sejauh ini:
- Pastikan skrip PHP dijalankan sebagai akun dan grup pengguna Linux situs web, dan dapat dipenjara (seperti menggunakan CageFS) atau setidaknya dibatasi dengan benar menggunakan izin sistem file Linux.
- Gunakan suexec untuk memastikan bahwa skrip CGI tidak dapat dijalankan sebagai pengguna Apache.
- Jika membutuhkan sisi server termasuk dukungan (seperti dalam file shtml), gunakan
Options IncludesNOEXEC
untuk mencegah CGI agar tidak dapat dijalankan ketika Anda tidak mengharapkannya (meskipun ini seharusnya tidak menjadi masalah jika menggunakan suexec). - Memiliki perlindungan serangan symlink di tempat sehingga seorang hacker tidak bisa menipu Apache untuk menyajikan file situs web lain sebagai plaintext dan mengungkapkan informasi yang dapat dieksploitasi seperti kata sandi DB.
- Konfigurasikan
AllowOverride
/AllowOverrideList
hanya membolehkan arahan yang tidak dapat dieksploitasi oleh peretas. Saya pikir ini kurang menjadi perhatian jika item di atas dilakukan dengan benar.
Saya akan menggunakan MPM ITK jika tidak terlalu lambat dan tidak berjalan sebagai root, tetapi kami secara khusus ingin menggunakan Apache bersama namun memastikan itu dilakukan dengan aman.
Saya menemukan http://httpd.apache.org/docs/2.4/misc/security_tips.html , tetapi itu tidak komprehensif pada topik ini.
Jika Anda tahu, kami berencana menggunakan CloudLinux dengan CageFS dan mod_lsapi.
Apakah ada hal lain yang harus dilakukan atau diketahui?
EDIT 20 Juli 2015: Orang-orang telah mengirimkan beberapa solusi alternatif yang baik yang bernilai secara umum, tetapi harap dicatat bahwa pertanyaan ini hanya ditujukan untuk keamanan pengaturan Apache bersama. Secara khusus adakah sesuatu yang tidak dicakup di atas yang dapat membuat suatu situs mengakses file situs lain atau entah bagaimana membahayakan situs lain?
Terima kasih!