THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

Apache Güvenlik Yapılandırması

Shift-TR® - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
05/2012
Nereden:
Designer.psd
Mesajlar:
2.838
Konular:
494
Teşekkür (Etti):
1227
Teşekkür (Aldı):
1253
Ticaret:
(0) %
12-06-2013 11:28
#1
Exclamation
Apache Güvenlik Yapılandırması
Apache dünyanın en çok kullanılan açık kaynak kodlu web sunucusudur. Netcraft firmasının Temmuz 2010[1] istatisiğine göre dünya üzerindeki web sunucuların %54’ü Apache’dir. Dolayısıyla bu sunucunun güvenlik yapılandırmalarının eksik veya yanlış yapılmış olması ya da sunucu kodunda bulunan bir sorun kaynaklı bir açıklık, saldırganlar için gayet geniş bir saldırı yüzeyi anlamına gelmektedir.
Bu yazı 2 kısımdan oluşan ve Apache web sucusunun temel güvenlik yapılandırma adımlarına yer veren bir yazıdır. Daha ayrıntılı bilgi için referanslar bölümündeki kaynaklara başvurulabilir.
Zamana Ayak Uydurmak

Güvenlik konusunda ilk söylenebilecek şey günü yakalayabilmenin gerekliliğidir. Düzenli güncellemesi yapılmamış bir sistemin bütünsel güvenliğinden söz etmek güçtür. Aynı şekilde Apache güvenliği konusunda da atılacak ilk adım en son güncellemelerin yapılmasıdır. Böylece en iyi bilinen ve ya en yeni açıklıklara karşı korunma sağlanmış olunur. Sonrasında yapılacak ayarlar ve düzeltmeler ile de güvenlik sıkılaştırması bir adım ileriye ***ürülecektir.
Apache Yapılandırma Dosyaları

Apache web sunucusunda genel yapılandırma dosyası httpd.conf dosyasıdır. Ancak farklı işletim sistemleri ya da dağıtımlar kendine özgü yapılandırma dosyaları kullanıyor olabilirler (Örn. apache2.conf).Genel yapılandırma dosyaları "Include" paramteresiyle birlikte farklı yapılandırma dosyalarını da dahil edebilir. Dolayısıyla diğer yapılandırma dosyalarının da incelenmesi gerekmektedir. Bölüm bazlı (klasör bazlı), kısıtlama ve yapılandırmaları yapmak için ise o bölüme ait .htaccess dosyasında gerekli düzenlemeler ve ayarlamalar yapılabilir. Ama .htaccess dosyalarının kullanımı, o klasöre ait genel yapılandırma dosyasının ayarlarında bozulmaya sebep olabileceğinden yapılandırma işlemleri için .htaccess kullanılması çok tercih edilen bir durum değildir.
Minimum Bilgi Prensibi

Güvenlik denince akla gelen en önemli prensiplerden biri de kullanıcının bilmesi gereken kadar bilgi göstermek ya da bildirmek, yani minimum bilgi prensibidir. Kullanıcıya gereğinden fazla gösterilen bir bilgi saldırı zemini hazırlanması için kullanılabileceğinden kısıtlanması güvenlik açısından önem arzetmektedir. Minimum bilgi prensibinin web sunucusunu ilgilendiren kısmı da sunucu imzası (ServerSignature) yani sunucu hakkında bilgi içeren ve HTTP yanıtlarında “Server” başlığı ile gönderilen bilginin kısıtlanmasıdır. Server başlığı ile birlikte Apache versiyon bilgisi, işletim sistemi ve kullanılan apache modüllerinin bilgisi kullanıcıya gösterilmektedir. Bu bilgiler kullanılarak sunucu, işletim sistemi ve modüllere uygun saldırı tekniklerinin kullanılması, bilinen uygun açıklıkların denenmesi ile saldırının hızlandırılması ve gerçeklenmesi kolaylaştırılmış olur. Sunucu bilgisinin kısıtlanması için ise yapılması gereken şey yapılandırma dosyasına
Kod:
ServerSignature Off
ServerTokens Prod
yazılmasıdır.
ServerSignature Off ile hata sayfalarındaki ve benzeri sunucu tarafından üretilen sayfalardaki sunucu bilgisinin gizlenmesi sağlanır.
ServerTokens Prod ile de sadece kullanılan sunucunun adı kullanıcıya gösterilir, geri kalan bütün bilgiler gizlenir. Prod, ProductOnly’nin kısaltmasıdır. Bunun yanı sıra Major, Minor Minimal, OS ve Full gibi seçenekler de vardır. Minimal seçeneğinde sunucunun sürüm numarası gösterilir. Major seçeneğinde sürüm numarasının ilk hanesi, Minor seçeneğinde ise sürüm numarasının ikinci hanesi gösterilmektedir. OS ayarında sunucu versiyon bilgisi ile birlikte işletim sistemi hakkında da bilgi gösterilirken Full modda ise kullanılan Apache modülleri dahil tüm bilgiler kullanıcıya gösterilmektedir. (Full modu ile ServerTokens parametresinin hiç belirtilmemesi aynı anlama gelmektedir)[2] Sunucu bilgisi konusunda minimum bilgi prensibine en uygun seçenek Prod olduğundan ServerTokens parametresinin değeri Prod olarak seçilmiştir.
Doğru Kullanıcı ve Doğru Grup

Apache ilk başladığında root kullanıcısı ile başlatılır, daha sonra Apache’yi kullanan kullanıcıya geçiş yapılır. Çünkü Apache çalıştırıldığında başlatılması gereken servisler (örneğin yapılandırma gereği web sunucusunun 80 nolu portu kullanması gibi) root yetkisi gerektirebilmektedir.
Önemli bir güvenlik prensibi de kullanıcı ve grup haklarının düzenlenmesi, uygulamaların da uygun haklara sahip kullanıcı ve grup tarafından çalıştırılmasıdır. Bu bağlamda Apache’nin de uygun haklara sahip bir kullanıcı ile çalıştırılması, diğer uygulamaları çalıştıran kullanıcılardan ayrılması güvenlik açısından olumlu bir davranış olacaktır. Özellikle Apache’nin (yukarıda bahsedilen açılış betiğinin çalıştırılması hariç) root kullanıcısıyla koşturulmaması çok büyük bir önem arzetmektedir. Bu sayede sistemin herhangi bir yerine olan veya herhangi bir uygulamada olan bir açıklığın diğer uygulamaları etkilemesi ve hatta tüm sistemin ele geçirilmesi olasılığının önüne geçilmiş olunur.
Bunun için yapılandırma dosyasına
Kod:
User apache
Group apache
yazılması yeterli olacaktır. Böylece web sunucunun apache kullanıcısı ve apache grubu yetkileri ile işletim sistemi üzerinde işlem yapması sağlanmış olacaktır. (apache kullanıcısı ve grubunun daha önce oluşturulduğu kabul edilmiştir)
Klasör ve Dosya Erişiminin Kısıtlanması

Apache sıkılaştırmasında erişim denetimi önemli bir yer tutar. Apache’nin web kök klasörü dışına erişebilmesi kullanıcılar tarafından sistem dosyaları ve yapılandırma dosyalarının görülebilmesi gibi sonuçlara neden olacağından çok tehlikeli neticeler doğurabilir. Özellikle yanlış veya eksik ayarlanmış sistemlerde bu durum çok daha net görülebilmektedir. Dolayısıyla Apache’nin web kök dizini dışındaki dosyalara erişimi kısıtlanmalıdır. Bunun için iki adım atılmalıdır.
Birinci adımda httpd.conf dosyasına (ya da apache2.conf)
Kod:
<Directory />
Order Deny,Allow
Deny from All
</Directory>
satırları eklenmelidir. Öntanımlı olarak Apache web sucunusu kurulduğunda Allow from All seçeneği ile gelir. Dolayısıyla istenilen tüm adresleri kullanıcıya servis eder. Bu kod parçasınde ise Deny from All ile bütün talepler reddedilmiş olunuyor. [3] Bundan sonraki adımda ise istenilen klasörlere erişim hakkı verilecektir. Yanı kısaca önce tüm erişimi engellenip daha sonra sadece istenilen yelere erişim verilecektir.
İkinci adım da istenilen klasörlere erişim hakkı vermek amacı ile yapılır. Örneğin web dosyalarının bulundugu dizin /webroot olan bir uygulamaya erişim vermek için
Kod:
<Directory /webroot>
Order Allow,Deny
Allow from All
</Directory>
satırının yapılandırma dosyasına eklenmesi yeterli olacaktır. Order parametresi hangi kuralın daha önce uygulanacağını belirtir. Örneğin önceki yapılandırmada engelleme kuralları (Deny Rules), izin verme kurallarından (Allow Rules) daha önce uygulanırken /webroot klasörü için izin verme kuralları, engelleme kurallarından daha önce uygulanır. Bunun anlamı kullanıcının /webroot klasörü için izin verme şartlarını sağlayamaması ya da engelleme kurallarını sağlaması durumunda erişimi yasaklanacaktır.
Bu kısıtlamalar sonucunda Apache /webroot dışında hiçbir klasöre erişmeyecek, böylece erişim denetiminin ilk adımı gerçeklenmiş olacaktır.
Klasör kısıtlamaya ek olarak dosya kısıtlama işlemi de benzer bir şekilde yapılabilir. Örneğin internet üzerinden erişilmesi istenmeyen tek bir dosya için httpd.conf dosyasına

Kod:
<Files private.html>
Order Deny,Allow
Deny from All
</Files>
yazılarak private.html dosyasına erişim engellenmiş olur. Benzer şekilde belirtilen bir uzantıdaki tüm dosyalara erişimi engellemek için yapılandırma dosyasına

Kod:
<Files ~ "/.svn$">
Order Deny,Allow
Deny from All
</Files>
yazılması yeterli olacaktır. Böylece .svn uzantılı dosyalara erişim yasaklanmış olacaktır. Bu tarz kısıtlamalar genellikle klasör bazlı kısıtlama için kullanılan alt yapılandırma dosyası .htaccess dosyasının doğrudan çağırılmasının engellenmesi için kullanılmaktadır.

Kod:
<Files ~ "^/.htacces">
Order Deny,Allow
Deny from All
</Files>
.htaccess Kulanımından Kaçınmak

.htaccess dosyası klasör tabanlı kısıtlama yapmak için kullanılan bir alt yapılandırma dosyasıdır. Ancak bir alt klasör için .htaccess ile yapılan bir değişiklik genel yapılandırma dosyasının ayarlarını bozabilir ve bir güvenlik açığına sebep olabilir. Bu yüzden .htaccess dosyasının genel yapılandırma dosyasının ayarlarını bozmasının önüne geçilmesi için

Kod:
<Directory /webroot>
AllowOverrride None
</Directory>
komutu genel yapılandırma dosyasının içine eklenmelidir.
--------------------- --

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler