From: Nilgun Belma Buguner
Apache HTTP Sunucusunda bilgiyi deÄiÅkenlerde saklamak için ortam deÄiÅkenleri adı verilen bir mekanizma bulunur. Saklanan bu bilgi @@ -347,11 +346,14 @@
force-proxy-request-1.0
,
proxy-nokeepalive
, proxy-sendchunked
ve
- proxy-sendcl
proxy-sendcl
, proxy-chain-auth
,
+ proxy-interim-response
, proxy-initial-not-pooled
+
Bu yönergeler mod_proxy
modülünün normal protokol
davranıÅını deÄiÅtirirler. Daha ayrıntılı bilgi için
- mod_proxy
belgesine bakınız.
mod_proxy
ve mod_proxy_http
+ belgeledirine bakınız.
diff --git a/docs/manual/env.xml.meta b/docs/manual/env.xml.meta
index 65bc59ba6b..30bff621c5 100644
--- a/docs/manual/env.xml.meta
+++ b/docs/manual/env.xml.meta
@@ -10,6 +10,6 @@
Apache HTTP Sunucusu Sürüm 2.3
+Bir HTTP Sunucusunu ayarlarken dikkat edilmesi gerekenler ve bazı + ipuçları. Ãneriler kısmen Apacheâye özel kısmen de genel olacaktır.
+ServerRoot
Dizinlerinin İzinleriScriptAlias
âsız CGIScriptAlias
âlı CGIApache HTTP Sunucusu iyi bir güvenlik sicilinin yanında güvenlik + konularıyla oldukça ilgili bir geliÅtirici topluluÄuna sahiptir. Fakat, + bir yazılımın daÄıtılmasının ardından küçük ya da büyük bazı sorunların + keÅfedilmesi kaçınılmazdır. Bu sebeple, yazılım güncellemelerinden + haberdar olmak oldukça önem kazanır. HTTP sunucunuzu doÄrudan + Apacheâden temin ediyorsanız yeni sürümler ve güvenlik güncellemeleri + ile ilgili bilgileri tam zamanında alabilmek için Apache + HTTP Sunucusu Duyuru Listesine mutlaka üye olmanızı öneririz. + Apache yazılımının üçüncü parti daÄıtımlarını yapanların da buna benzer + hizmetleri vardır.
+ +Åüphesiz, bir HTTP sunucusu, sunucu kodunda bir sorun olmasa da + tehlike altındadır. Eklenti kodları, CGI betikleri hatta iÅletim + sisteminden kaynaklanan sorunlar nedeniyle bu ortaya çıkabilir. Bu + bakımdan, sisteminizdeki tüm yazılımların sorunları ve güncellemeleri + hakkında bilgi sahibi olmalısınız.
+ +Tüm aÄ sunucuları, istemcilerin sistem kaynaklarından yararlanmalarını + engellemeye çalıÅan hizmet reddi saldırılarına (HRS) maruz kalabilir. + Bu tür saldırıları tamamen engellemek mümkün deÄildir, fakat + yarattıkları sorunları azaltmak için bazı Åeyler yapabilirsiniz.
+ +ÃoÄunlukla en etkili anti-HRS aracı bir güvenlik duvarı veya baÅka bir + iÅletim sistemi yapılandırmasıdır. ÃrneÄin, çoÄu güvenlik duvarı + herhangi bir IP adresinden aynı anda yapılan baÄlantıların sayısına bir + sınırlama getirmek üzere yapılandırılabilir. Böylece basit saldırılar + engellenebilir. Ancak bunun daÄıtık hizmet reddi saldırılarına (DHRS) + karÅı bir etkisi olmaz.
+ +Bunların yanında Apache HTTP Sunucusunun da sorunları azaltıcı + tedbirler alınmasını saÄlayacak bazı yapılandırmaları vardır:
+ +TimeOut
yönergesinin deÄeri düÅürülmelidir. Birkaç
+ saniye gibi mümkün olduÄunca düÅük bir ayar uygun olabilir. Ancak
+ TimeOut
baÅka iÅlemlerde de
+ kullanıldıÄından çok düÅük deÄerler, örneÄin, uzun süre çalıÅan CGI
+ betiklerinde sorunlar çıkmasına sebep olabilir.KeepAliveTimeout
yönergesinin deÄeri de düÅürülebilir.
+ Hatta bazı siteler baÅarımı arttırmak amacıyla KeepAlive
yönergesi üzerinden kalıcı
+ baÄlantıları tamamen kapatabilirler.LimitRequestBody
,
+ LimitRequestFields
,
+ LimitRequestFieldSize
,
+ LimitRequestLine
ve
+ LimitXMLRequestBody
yönergeleri,
+ istemci girdileri ile tetiklenen özkaynak tüketimini sınırlamak için
+ yapılandırılırken dikkatli olunmalıdır.AcceptFilter
yönergesinin etkin olmasını saÄlamalısınız.
+ Bu, Apache HTTP Sunucusunda zaten öntanımlı olarak etkindir.
+ YapacaÄınız Åey iÅletim sistemi çekirdeÄini buna göre yapılandırmak
+ olacaktır.MaxClients
yönergesini kullanın. Ayrıca, baÅarım arttırma belgesine de
+ bakabilirsiniz.event
MPMâi
+ her baÄlantıya yeni bir evre atanmaması için eÅzamansız iÅlem yapar.
+ Ancak bu çalıÅma henüz tamamlanmamıÅtır. Ãzellikle de,
+ event
MPMâi mod_ssl
ve diÄer girdi
+ süzgeçleri ile henüz uyumlu deÄildir.ServerRoot
Dizinlerinin İzinleriNormalde, Apache root kullanıcı tarafından baÅlatılır ve hizmetleri
+ sunarken User
yönergesi
+ tarafından tanımlanan kullanıcının aidiyetinde çalıÅır. Root tarafından
+ çalıÅtırılan komutlarda olduÄu gibi, root olmayan kullanıcıların
+ yapacakları deÄiÅikliklerden korunmak konusunda da dikkatli
+ olmalısınız. Dosyaların sadece root tarafından yazılabilir olmasını
+ saÄlamak yeterli deÄildir, bu dizinler ve üst dizinler için de
+ yapılmalıdır. ÃrneÄin, sunucu kök dizininin
+ /usr/local/apache
olmasına karar verdiyseniz, bu dizini
+ root olarak Åöyle oluÅturmanız önerilir:
+ mkdir /usr/local/apache
+ cd /usr/local/apache
+ mkdir bin conf logs
+ chown 0 . bin conf logs
+ chgrp 0 . bin conf logs
+ chmod 755 . bin conf logs
+
/
, /usr
, /usr/local
+ dizinlerinde sadece root tarafından deÄiÅiklik yapılabileceÄi kabul
+ edilir. httpd
çalıÅtırılabilirini kurarken de benzer
+ bir önlemin alındıÄından emin olmalısınız:
+ cp httpd /usr/local/apache/bin
+ chown 0 /usr/local/apache/bin/httpd
+ chgrp 0 /usr/local/apache/bin/httpd
+ chmod 511 /usr/local/apache/bin/httpd
+
DiÄer kullanıcıların deÄiÅiklik yapabileceÄi bir dizin olarak bir
+ htdocs
dizini oluÅturabilirsiniz. Bu dizine root
+ tarafından çalıÅtırılabilecek dosyalar konulmamalı ve burada root
+ tarafından hiçbir dosya oluÅturulmamalıdır.
DiÄer kullanıcılara root tarafından yazılabilen ve çalıÅtırılabilen
+ dosyalarda deÄiÅiklik yapma hakkını tanırsanız, onlara root
+ kullanıcısını ele geçirilebilme hakkını da tanımıŠolursunuz. ÃrneÄin,
+ biri httpd
çalıÅtırılabilirini zararlı bir programla
+ deÄiÅtirebilir ve o programı tekrar çalıÅtırdıÄınız sırada program
+ yapacaÄını yapmıŠolur. Günlükleri kaydettiÄiniz dizin herkes
+ tarafından yazılabilen bir dizin olduÄu takdirde, birileri bir günlük
+ dosyasını bir sistem dosyasına sembolik baÄ haline getirerek root
+ kullanıcısının bu dosyaya ilgisiz Åeyler yazmasına sebep olabilir.
+ Günlüklerin dosyaları herkes tarafından yazılabilir olduÄu takdirde ise
+ birileri dosyaya yanıltıcı veriler girebilir.
SSI sayfaları bir sunucu yöneticisi açısından çeÅitli olası risklere + kaynaklık edebilir.
+ +İlk risk, sunucu yükündeki artıŠolasılıÄıdır. Tüm SSI sayfaları, SSI + kodu içersin içermesin Apache tarafından çözümlenir. Bu küçük bir artıŠ+ gibi görünürse de bir paylaÅımlı sunucu ortamında önemli bir yük haline + gelebilir.
+ +SSI sayfaları, CGI betikleriyle ilgili riskleri de taÅır. exec
+ cmd
elemanı kullanılarak bir SSI sayfasından herhangi bir CGI
+ betiÄini veya bir sistem programını Apacheânin aidiyetinde olduÄu
+ kullanıcının yetkisiyle çalıÅtırmak mümkündür.
SSI sayfalarının yararlı özelliklerinden yararlanırken güvenliÄini de + arttırmanın bazı yolları vardır.
+ +Sunucu yöneticisi, bir baÅıbozuk SSI sayfasının sebep olabileceÄi + zararları bertaraf etmek için CGI Genelinde + bölümünde açıklandıÄı gibi suexecâi etkin + kılabilir.
+ +SSI sayfalarını .html
veya .htm
+ uzantılarıyla etkinleÅtirmek tehlikeli olabilir. Bu özellikle
+ paylaÅımlı ve yüksek trafikli bir sunucu ortamında önemlidir. SSI
+ sayfalarını normal sayfalardan farklı olarak .shtml
gibi
+ bildik bir uzantıyla etkinleÅtirmek gerekir. Bu, sunucu yükünü asgari
+ düzeyde tutmaya ve risk yönetimini kolaylaÅtırmaya yarar.
DiÄer bir çözüm de SSI sayfalarından betik ve program çalıÅtırmayı
+ iptal etmektir. Bu, Options
+ yönergesine deÄer olarak Includes
yerine
+ IncludesNOEXEC
vererek saÄlanır. Ancak, eÄer betiklerin
+ bulunduÄu dizinde ScriptAlias
+ yönergesiyle CGI betiklerinin çalıÅması mümkün kılınmıÅsa,
+ kullanıcıların <--#include virtual="..." -->
ile bu
+ betikleri çalıÅtırabileceklerine dikkat ediniz.
HerÅeyden önce ya CGI betiÄini/programını yazanlara ya da kendinizin + CGI'deki güvenlik açıklarını (ister kasıtlı olsun ister tesadüfi) + yakalama becerinize güvenmek zorundasınız. CGI betikleri esasen + sisteminizdeki komutları site kullanıcılarının izinleriyle + çalıÅtırırlar. Bu bakımdan dikkatle denenmedikleri takdirde oldukça + tehlikeli olabilirler.
+ +CGI betiklerinin hepsi aynı kullanıcının aidiyetinde çalıÅırsa diÄer + betiklerle aralarında çeliÅkilerin ortaya çıkması ister istemez + kaçınılmazdır. ÃrneÄin A kullanıcısının B kullanıcısına garezi varsa + bir betik yazıp Bânin CGI veritabanını silebilir. Bu gibi durumların + ortaya çıkmaması için betiklerin farklı kullanıcıların aidiyetlerinde + çalıÅmasını saÄlayan ve 1.2 sürümünden beri Apache ile daÄıtılan suEXEC diye bir program vardır. BaÅka bir yol + da CGIWrap kullanmaktır.
+ +ScriptAlias
âsız CGIKullanıcıların sitenin her yerinde CGI betiklerini çalıÅtırmalarına + izin vermek ancak Åu koÅullarda mümkün olabilir:
+ +ScriptAlias
âlı CGICGIâyi belli dizinlerle sınırlamak yöneticiye bu dizinlerde daha iyi
+ denetim imkanı saÄlar. Bu kaçınılmaz olarak ScriptAlias
âsız CGIâden çok daha
+ güvenlidir, ancak bu dizinlere yazma hakkı olan kullanıcılarınız
+ güvenilir kiÅiler olması ve site yöneticisinin de olası güvenlik
+ açıklarına karÅı CGI betiklerini ve programlarını denemeye istekli
+ olması Åartıyla.
ÃoÄu site yöneticisi ScriptAlias
âsız CGI yerine bu
+ yaklaÅımı seçer.
Sunucunun bir parçası gibi çalıÅan, mod_php
,
+ mod_perl
, mod_tcl
ve mod_python
+ gibi gömülü betik çalıÅtırma seçenekleri sunucuyu çalıÅtıran
+ kullanıcının aidiyetinde çalıÅırlar (User
yönergesine bakınız). Bu bakımdan bu betik
+ yorumlayıcılar tarafından çalıÅtırılan betikler, sunucu kullanıcısının
+ eriÅtiÄi herÅeye eriÅebilirler. Bazı betik yorumlayıcıların getirdiÄi
+ bazı sınırlamalar varsa da bunlara pek güvenmemek, gerekli sınamaları
+ yine de yapmak gerekir.
GüvenliÄi gerçekten sıkı tutmak istiyorsanız, kullanıcılarınızın
+ yapılandırmanızdaki güvenlik ayarlarını geçersiz kılmak için
+ .htaccess
dosyalarını kullanabilmelerinin de önüne
+ geçmelisiniz. Bunu yapmanın tek bir yolu vardır.
Sunucu yapılandırma dosyanıza Åunu yerleÅtirin:
+ +
+ <Directory />
+
+ AllowOverride None
+
+ </Directory>
+
Böylece, belli dizinlerde özellikle etkinleÅtirilmedikçe bütün
+ dizinlerde .htaccess
dosyalarının kullanımını engellemiÅ
+ olursunuz.
Apacheânin ister istemez yanlıŠanlaÅılan yönlerinden biri öntanımlı eriÅim özelliÄidir. Yani siz aksine bir Åeyler yapmadıkça, sunucu normal URL eÅleme kurallarını kullanarak bir dosyayı bulabildiÄi sürece onu istemciye sunacaktır.
+ +ÃrneÄin, aÅaÄıdaki durumu ele alalım:
+ +
+ # cd /; ln -s / public_html
+
Ve, tarayıcınıza http://localhost/~root/
yazın.
Böylece, istemcilerin tüm dosya sisteminizi gezmelerine izin vermiÅ olursunuz. Bu iÅlemin sonuçlarının önünü almak için sunucu yapılandırma dosyanıza Åunları yazın:
+ +
+ <Directory />
+
+ Order Deny,Allow
+ Deny from all
+
+ </Directory>
+
Bu suretle, dosya sisteminize öntanımlı eriÅimi yasaklamıŠolursunuz. EriÅime izin vermek istediÄiniz dizinler için uygun Directory
bölümleri eklemeniz yeterli olacaktır. Ãrnek:
+ <Directory /usr/users/*/public_html>
+
+ Order Deny,Allow
+ Allow from all
+
+ </Directory>
+ <Directory /usr/local/httpd>
+
+ Order Deny,Allow
+ Allow from all
+
+ </Directory>
+
Location
ve Directory
yönergelerinin etkileÅimine de özellikle önem vermelisiniz; örneÄin <Directory />
eriÅimi yasaklarken bir <Location />
yönergesi bunu ortadan kaldırabilir.
UserDir
yönergesi de size buna benzer bir oyun oynayabilir; yönergeye ./
atamasını yaparsanız, root kullanıcısı söz konusu olduÄunda yukarıda ilk örnekteki durumla karÅılaÅırız. Apache 1.3 veya üstünü kullanıyorsanız, sunucu yapılandırma dosyanızda aÅaÄıdaki satırın mutlaka bulunmasını öneririz:
+ UserDir disabled root
+
Sunucunuzda olup biteni günü gününe bilmek istiyorsanız günlük dosyalarına bakmalısınız. Günlük dosyaları sadece olup biteni raporlamakla kalmaz, sunucunuza ne tür saldırılar yapıldıÄını ve güvenlik seviyenizin yeterli olup olmadıÄını anlamanızı da saÄlarlar.
+ +Bazı örnekler:
+ +
+ grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log
+ grep "client denied" error_log | tail -n 10
+
İlk örnek, Apache Tomcat + Source.JSP Bozuk İstek Bilgilerini İfÅa AçıÄını istismar etmeyi deneyen saldırıların sayısını verirken ikinci örnek, reddedilen son on istemciyi listeler; örnek:
+ +
+ [Thu Jul 11 17:18:39 2002] [error] [client falan.filan.dom] client denied
+ by server configuration: /usr/local/apache/htdocs/.htpasswd
+
GördüÄünüz gibi günlük dosyaları sadece ne olup bittiÄini raporlar, bu bakımdan eÄer istemci .htpasswd
dosyasına eriÅebiliyorsa eriÅim günlüÄünüzde Åuna benzer bir kayıt görürsünüz:
+ falan.filan.dom - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
+
Bu, sunucu yapılandırma dosyanızda aÅaÄıdaki yapılandırmayı iptal ettiÄiniz anlamına gelir:
+ +
+ <Files ~ "^\.ht">
+
+ Order allow,deny
+ Deny from all
+
+ </Files>
+