Forum Zero

Web Master Yardım Konuları (No Warez - No Crack) => Webmaster Forumu => Konuyu başlatan: Zero - 12 Şubat 2011, 01:40:30

Başlık: Apache’de Kısa Yolların Performansı
Gönderen: Zero - 12 Şubat 2011, 01:40:30
Merhaba;

Güvenlik ile performans ya da işlevsellik birçok bilgi sistemi varlığında olduğu gibi Apache web sunucusunda da bazı yapılandırma seçeneklerinde karşı karşıya gelmektedir. Bunlardan birisi de FollowSymLinks parametresidir. Apache web sunucusu FollowSymLinks parametresi ile işletim sistemi üzerinde oluşturulmuş kısa yolları takip ederek web üzerinden istemcilere sunabilir. Dizin tabanlı yapılandırmada Options parametresine girdi olarak verilen bu seçenek, aşağıda örneği verilen direktif ile aktif hale getirilir.

Options +FollowSymLinks

Güvenlik bakış açısından düşünüldüğünde, işletim sisteminde oluşturulan kısa yolların takip edilmesi aşağıdaki problemlere yol açabilir:

Saldırgan, herhangi bir açıklığı kullanarak web’den sunulan bir dizine yazma hakkı elde ettiğinde bu dizinde bir kısa yol oluşturabilir ve bu kısa yol ile web sunucusunu çalıştıran kullanıcının işletim sistemi üzerinde okuma hakkına sahip olduğu tüm dosyalara web üzerinden erişim sağlayabilir.
Aynı dizinde Include seçeneği aktif ise farklı dizinlerde yer alan SSI (Server Side Include) dosyalarını, ExecCGI özelliği aktif ise CGI dosyalarını çalıştırarak sistem üzerinde komutlar yürütebilir.
Bu sebeple FollowSymLinks özelliğinin tüm dizinlerden kaldırılması en güvenli çözümdür. Öte yandan bu çözüm aşağıda sıralanan sebeplerden ötürü tercih edilmez.

Öncelikle FollowSymLinks özelliği mod_rewrite modülünün çalışması için gereklidir [1]. Eğer bu modülün kullanılması gerekiyorsa ilgili dizinde FollowSymLinks yerine SymLinksifOwnerMatch özelliği etkinleştirilmelidir. Bu şekilde, erişim sadece kısa yolun sahibi olan kullanıcının sahibi olduğu dosyalara kısıtlanır. Örneğin kısa yol wwwrun kullanıcısı adına oluşturuluyor ise /etc/passwd gibi sahibi root olan bir dosyaya verilen linkler çalışmaz. Böylece risk azaltılmış olur. Aşağıda örnek bir kullanım yer almaktadır.

Options SymLinksifOwnerMatch

RewriteEngine on

RewriteRule forumzero.html$ index.php

İkinci sebep ise FollowSymLinks seçeneğinin kullanılmamasının performansa olan etkileridir [2][3][4]. Kök dizininde (/) FollowSymLinks özelliği kaldırılırsa ya da SymLinksifOwnerMatch özelliği devreye alınırsa /usr/local/apache/htdocs dizini altında yer alan bir dosya, istemci tarafından çağırıldığında Apache

# /usr

# /usr/local

# /usr/local/apache

# /usr/local/apache/htdocs

dizinlerinin her birinin kısa yol olup olmadığının kontrolünü yapar. Bu bilgileri ön bellekte tutmadığı için her çağrıda tekrarlar. Sonuç olarak bir performans problemi yaşanır.

FollowSymLinks parametresinin güvenlik ve performans üzerine olan bu etkileri düşünüldüğünde uygulanacak en iyi çözüm kök dizininde kısa yollara izin verip web’den erişime açık dizinlerde kapatmak, ihtiyaç varsa SymLinksIfOwnerMatch parametresini devreye almaktır. Aşağıda bir örnek yer almaktadır:

DocumentRoot /webroot/docs

Options FollowSymLinks

Options -FollowSymLinks +SymLinksIfOwnerMatch

Gerek Apache konfigürasyon yapılandırmalarında gerekse işletim sistemi seviyesinde kısa yollar hakkında bilinmesi gerekli diğer hususlar şunlardır:

Kısa yolların erişim hakları chmod ya da chown komutları ile düzenlenmek istenirse bu komutların kısa yol üzerinde değil hedef dosya üzerinde çalıştırıldığı unutulmamalıdır [5][6]. Aşağıda örneği gösterilmektedir.
[komut_satiri]# ls -l /hedef_dosya.html link.html

lrwxrwxrwx 1 root root 11 May 18 09:42 link.html -> /hedef_dosya.html

-rw-r–r– 1 root root 1972 Mar 2 11:21 hedef_dosya.html

[komut_satiri]# chown oracle link.html

[komut_satiri]# ls -l /hedef_dosya.html link.html

lrwxrwxrwx 1 root root 11 May 18 09:42 link.html -> /hedef_dosya.html

-rw-r–r– 1 oracle root 1972 Mar 2 11:21 /hedef_dosya.html

Kısa yolun kendisinin erişim haklarını değiştirmek mümkün değildir. Öte yandan kısa yolun kullanıcı ve grup sahipleri değiştirilebilir. Bunun için chown komutu -h parametresiyle çalıştırılmalıdır.
Options parametresinde başında + ya da – olmadan bir seçenek verilirse kök ya da diğer dizin yapılandırmalarından gelen değerler sıfırlanır. Bu işaretlerle beraber kullanılırsa mevcut yapılandırmanın üzerine ekleme ya da çıkarma yapılır.
mod_rewrite modülü aşağıdaki şekilde sadece TRACE metodunu engelleme amacıyla kullanıyorsa FollowSymLinks özelliğinin etkin olmasına gerek yoktur.
RewriteEngine On

RewriteCond %{REQUEST_METHOD} ^TRACE

RewriteRule .* – [F]