Apache, suexec, PHP, suPHP


13

Bir Linux kullanıcısı olarak oldukça rahat olsam da , Linux Yönetici bilgisayarım biraz zayıf. Böylece, burada inşa etmek üzere olduğum bir CentOS sunucusu ile rehberlik arıyorum.

Birkaç müşterimiz için bir Apache2 web sunucusu kurmam gerekiyor. Her istemcinin web içeriğinin USERDIRstatik HTML siteleri için kendi ana dizini altında ( apache.conf, doğru?) Olmasını istiyorum. Apache'nin istemci ( suexec?) Olarak çalışmasını istiyorum . Bazı şeyler PHP uygulamaları olacak ve ben suphpde o zaman bakmak isteyeceğim izlenimi altındayım .

Temelde paylaşılan bir web hosting şirketinin küçük bir versiyonu gibi görünmek istiyorum. Bunların ne kadar yaygın olduğunu göz önünde bulundurarak , kolayca bu kadar güzel bir güncel How-To kılavuzu bulacağımı düşündüm ama şimdiye kadar çok az şansım vardı. Arama kelimelerimin kapalı olduğundan şüpheleniyorum.

Yani sorular (herhangi birini veya hepsini cevaplamaktan çekinmeyin):

  1. Herkes bunu ayarlamak bana yardımcı olacak mevcut / modern kılavuzları bazı sağlam bağlantıları var mı? Hayır, apache dokümantasyon sitesi bir rehber değildir ;-)
  2. Statik sitelerin ve PHP uygulamalarının bir karışımı olduğundan, hem suexec hem de suphp'nin yüklü olmasını ister miyim? Eğer öyleyse, bu bilmem gereken herhangi bir zorluk getiriyor mu?
  3. Suexec ve suphp yerine diğer seçeneklere bakmalı mıyım?

Son kullanıcılara öğelerine SSH, SFTP veya SCP erişimi vermeyi planlıyorum (bu bir şeyi etkiliyorsa).

Yardımlarınız için şimdiden teşekkür ederiz.

[Düzenle] Bunu daha önce de belirtmeliydim: Dosya izinleri ve sahiplik ile ilgili paylaşılan bir barındırma sağlayıcısı taklit etme görevimin önemli bir hedefi. Kullanıcılara sadece eklemelerini / değişikliklerini görmek için bu tür şeyleri değiştirmeye ihtiyaç duyduklarını öğretmekten gerçekten kaçınmak istiyorum.

Yanıtlar:


15

Suexec ve suphp kullanmak, varsayılandan farklı bir ayrıcalık ayırma türü uygular.

Varsayılan, kullanıcının iznini web sunucusundan ayırmaktır. Yani, kullanıcı dosyalara sahiptir ve web sunucusuna dosyaları görüntüleme ve değiştirme izni vermelidir.

Suexec / suphp modeli, web sunucusunun (komut dosyalarını çalıştırırken) kullanıcının hesabı altında çalıştığından, web sitesinin kullanıcının izin verdiği her şeyi yapma iznine sahip olmasıdır. Bu, belirli bir dereceye kadar, kullanıcı ile web sunucusu arasındaki ayrımı kaldırır, ancak bunun karşılığında FARKLI bir ayrımı zorlar: yani, bir kullanıcının web sitesi ile aynı kutudaki farklı bir kullanıcının web sitesi arasında.

Varsayılan olarak, PHP her zaman Apache'nin kullanıcı hesabı altında çalışır, böylece bir web sitesinin PHP komut dosyaları başka bir sitenin PHP komut dosyalarının yapabileceği tüm dosyalara erişebilir. Bu nedenle, sunucudaki bir hesap saldırıya uğradığında, enfeksiyon diğerlerine yayılabilir. SuPHP bunu önler.

Ne suexec ne de suphp, apache'nin statik içerik sunma şeklini etkilemez . Tüm eski kurallar hala geçerlidir. Bunun yerine, suexec ve suphp, CGI ve PHP'nin (sırasıyla) altında çalışacağı hesabı değiştirir. Suexec, CGI'yi çalıştırılabilir hesabını sahibinin hesabı altında çalıştırırken, SuPHP PHP betiklerini sahibinin hesabı altında çalıştırır.

Suexec ve SuPHP'nin mutlaka daha iyi olması gerekmez . Onlar sadece farklı . Bir web sitesinin saldırıya uğramasını engellemezler (ve muhtemelen sitenin hacklenmesini kolaylaştırabilirler ), ancak bir sitedeki bir uzlaşmanın diğerlerine yayılmasını önleyeceklerdir. Site yöneticisi için, bu yalıtım tartışmalı olarak daha önemlidir, bu nedenle bazı paylaşılan barındırma sistemleri suexec ve suphp'yi varsayılan yapar.

Son derece yaygın bir "gotcha", SuPHP'nin bir komut dosyasının çalışmadan önce sahipliğini ve izinlerini kontrol etmesidir ve izinler uygun değilse 500 hatası döndürür.

Özellikle:

  • Dosyanın sahibi ve grubu web sitesi sahibiyle eşleşmelidir (apache yapılandırmasında ayar olarak)
  • Dosya dünya çapında yazılabilir olmamalıdır
  • Üst dizin dünya çapında yazılabilir olmamalıdır

Yani, paylaştığım bir hosting modelini taklit etmek istediğimi bilmek (işaret ettiğiniz gibi, kullanıcıları birbirinden tutmak) suexec / suphp modeline gitmek istediğim yol mu yoksa daha iyi seçenekler olduğunu düşünüyor musunuz? Gönderiyi, önemli bir hedefin kullanıcılara yalnızca değişikliklerini veya eklemelerini görmek için dosya izinlerini veya sahiplerini değiştirme zorunluluğunu öğretmekten kaçınmak olduğunu da belirttim.
Chris_K

2
suexec / suphp, peşinde olduğunuz şeyler için iyi bir çözümdür.
tylerl

Suphp'i suexec'e tercih ederim. Bence daha güvenli.
Vladislav Rastrusny

@FraktalizeR: Normalde ikisini de aynı anda kullanırsınız. SuPHP PHP, suexec CGI içindir. PHP'yi CGI olarak çalıştırarak PHP'yi suexec üzerinden çalıştırabilirsiniz, ancak PHP için daha iyi (daha güvenli, daha verimli) seçenekler olduğundan biraz gereksizdir.
tylerl

@tylerl: Cevabınız için çok teşekkür ederim. Bahsettiğiniz PHP için daha güvenli / verimli çözümler nelerdir?
benjamin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.