suPHP Nedir ? Nasıl Kurulur? | Biryoo
Önçelikle suPHP nedir onun bir açıklamasını yapalım. Ben daha sonra mantığını anlatıcam.
Önçelikle forum.ceviz.net ‘de açılan bir konuda cevaben suPHP nedir ne işe yarar konu olarak açılmış bir başlığın @sdemirkeser verdiği cevabı. suPHP nedir?
php yi modul halinde kurmuşsaniz apache’nin kullanıcı ve grubunu kullanir. Sunucuda systemi exec gibi komutları yasaklamadıysanız bu durumda kullanıcılar apache nin kullanıcı olarak eirşebilecegi her yere linux komutlari yazarak erişebilirler.
Php’nin erişimlerini denetlemek ve hangi virtual hostta calisiyorsa o virtual hostun yetkilerini kullanacak sekilde düzenleme yapan bir modüldür
kötü tarafi bu modülü kullanabilmek için php nin cgi olarak kurulu olması gerekir.
iyi tarafi olarak zaten sunucuda system exec gibi komutlari yasakladıysanız kullanıcı komut calıstıramadıgı icin erişimlerde kendi sınırlı olduğu klasöre erişebilir sadece bundan dolayi sorun olmaz ve geregi yoktur.
phpSuExec veya suPHP
PHPsuExec (sue-eksek olarak telafüz edilir) yürütülebilir dosyalar için daha güvenli bir çevredir. SuPHP aynı şekildedir, her ikiside özellikle PHP için daha yeni bir üründür. Bütün paylaşımlı ve kiralık sunucularımız hem phpSuExec hem de suPHP’ye sahiptir. Sadece kiralıklar bunları kaldırmak için seçeneğe sahiptir..
Bu güvenli çevre 777 dosya izinlerini kabul edilebilir yaparlar, ve php.ini’yi gerekli kılarlar.
suPHP kullanan sunucunuzu doğrulamak için, basit bir ‘php info’ scrpti oluşturunuz. sitenizin public_html klasöründe ‘phpinfo.php’ isimli bir dosya oluşturunuz ve aşagıdaki kodu ekleyiniz.
Dosyayı tarayıcınıza yükleyiniz ve en üst bölümde ‘Server API’ satırını bulunuz. Eğer o ‘CGI’yi gösteriyorsa sunucudaki hesabınız suPHP’lidir. Eğer ‘apache’yi gösteriyorsa suPHP sunucuda değilsiniz demektir.
Aynı zamanda normalde sunucularımızın CGI olarak (apache değil) çalışan PHP’ye sahip olduğunu biliyorsunuzdur..
PHP modları arasındaki fark nedir?
PHP farklı modlarda kullanılabilir. Aşağıda her mod kısa bir açıklamasını gösterir.
(Bu dinamik için kısa Shared Object) DSO veya mod_php en eski ve, bazı, en hızlı PHP işleyicisi derdi. Aslında PHP Apache bir parçası haline getirir. Bu da yapılandırmak en kolay yoldur.
İçinde Apache PHP kodu çalıştırmak yerine bu şimdi bir CGI işlemi olarak çalışır. Diğer bir deyişle, Apache sunucusu dışında bir programda.
suPHP Apache komut dosyası dışında CGI yürütür. Ama komut dosyaları Apache kullanıcısı (muhtemelen dosyaların sahibi olan kullanıcının) daha başka bir kullanıcı olarak yürütülür.
Bu suPHP kullanarak web uygulamanızdaki dosyaları yükleyebilirsiniz anlamına gelir. Ayrıca, çünkü PHP farklı bir kullanıcı olarak çalıştırılır, sitenizdeki herhangi bir güvenlik açığı için sadece birkaç dosya kısıtlanmış olabilir.
FastCGI son önemli PHP birisi. Bu güvenlik suPHP dosyaları dosya sahibi olarak yürüterek vardır. Bu suPHP daha fazla bellek kullanır, ama aynı zamanda çok daha hızlı.
Peki suPHP nin mantığı nedir ?
Örneğin linuxda belirli bir dizin belirttiniz ve buradan yayın yapıyorsunuz. Ve wordpress kullanıyorsunuz wordpress üzerinden yani panel üzerinden update veya herhangi yükleme yada silme işlemi gerçekleştirdiğiniz de bu işlemleri ya sınırlı yada hiç bir şekilde gerçekleştiremezsiniz. Bunun nedeni public_html klasörü ve içerisindekilere klasörlere kullanıcı adı ve grub belirlemiş olsanız bile apache veya phpde tanımlama yapmadığınız için biraz önçe bahsettiğim ve wordpressi örnek verdiğim işlemleri bu nedenle gerçekleştiremezsiniz.
Bu işlemleri gerçekleştirmek için apache ye web sitenizi yayınladığınız dizini apache yede tanıtmanız gerekir ha işte burada bize suPHP olayı bizim işimizi görüyor. suPHP seçimi yaparken cok dikkatli olmak gerekir suPHP işlemini seçim yaparken sunucunuzun performanısnı yada cpu gibi sistemlerini karşılaştırmak yada deneme yanılmasıyla denemek gerekir.
Ben suPHP nin bir modülünü anlatıcam hemen altta ama ben php olarak değilde apachenin kendi modülünden yararlanıcam hem cpu sorunu yaşamazken güvenlik olarak da bir üst yüzeyde olmuş olucak.
suPHP modüllerin bazıları karşılaştırması?
Ben suPHP nin modül olarak apachenin kendi modülünden yararlanıcam. Bende apache2 kurulu ve ek olarak da proftpd ve bircok php bileşenleri kurdum linux da. Bunları yaparken sunucumda değilde deneme olarak yaptığım için windows bilgisayarımda vmware kurulu ubuntu veya debian da deneme olarak yapmaktayım.
Şimdi önçelikle aşağıdaki gibi kurulumu yapalım bu kurulum apache2 içindir.
Daha sonra aktif etmeye ve çalıştıralım.
Eğer sunucunuzda mpm_prefork kurulu ise disaple edelim ve yeni kurduğumuzu aktif edelim aksi halde çalışmayacaktır.
Daha sonra aşağıdaki gibi virtual hostta daha önçe sitemizi ayarladığım yere girelim ve,
localhost kısmına değilde sitenizi ayarladığınız yani virtual komutların arasına log’ların altına aşağıdaki bilgileri kendinize göre düzenleyip yerleştirin.
AssignUserID ftpadi www-data-yada-grub-adi
Buradaki ftp adı ve grub adınıda ftp klasörlerine de vermelisiniz ls -l komutu ile public_html klasörülerini kontrol etmelisiniz.
suphp nasıl kurulur