1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="tr" xml:lang="tr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>Güvenlik İpuçları - Apache HTTP Sunucusu</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.min.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p>
18<p class="apache">Apache HTTP Sunucusu Sürüm 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Sunucusu</a> &gt; <a href="http://httpd.apache.org/docs/">Belgeleme</a> &gt; <a href="../">Sürüm 2.4</a> &gt; <a href="./">Çeşitli Belgeler</a></div><div id="page-content"><div id="preamble"><h1>Güvenlik İpuçları</h1>
23<div class="toplang">
24<p><span>Mevcut Diller: </span><a href="/en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25<a href="/fr/misc/security_tips.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
26<a href="/ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
27<a href="/tr/misc/security_tips.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
28</div>
29
30    <p>Bir HTTP Sunucusunu ayarlarken dikkat edilmesi gerekenler ve bazı
31    ipuçları.  Öneriler kısmen Apache’ye özel kısmen de genel olacaktır.</p>
32  </div>
33<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#uptodate">Güncel Tutma</a></li>
34<li><img alt="" src="/images/down.gif" /> <a href="#dos">Hizmet Reddi (DoS) Saldırıları</a></li>
35<li><img alt="" src="/images/down.gif" /> <a href="#serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></li>
36<li><img alt="" src="/images/down.gif" /> <a href="#ssi">Sunucu Taraflı İçerik Yerleştirme</a></li>
37<li><img alt="" src="/images/down.gif" /> <a href="#cgi">CGI Genelinde</a></li>
38<li><img alt="" src="/images/down.gif" /> <a href="#nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></li>
39<li><img alt="" src="/images/down.gif" /> <a href="#saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></li>
40<li><img alt="" src="/images/down.gif" /> <a href="#dynamic">Devingen içerikli kaynaklar</a></li>
41<li><img alt="" src="/images/down.gif" /> <a href="#dynamicsec">Devingen içeriğin güvenliği</a></li>
42<li><img alt="" src="/images/down.gif" /> <a href="#systemsettings">Sistem Ayarlarının Korunması</a></li>
43<li><img alt="" src="/images/down.gif" /> <a href="#protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></li>
44<li><img alt="" src="/images/down.gif" /> <a href="#watchyourlogs">Günlüklerin İzlenmesi</a></li>
45<li><img alt="" src="/images/down.gif" /> <a href="#merging">Yapılandırma bölümlerinin birleştirilmesi</a></li>
46</ul><ul class="seealso"><li><a href="#comments_section">Yorum</a></li></ul></div>
47<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
48<div class="section">
49<h2><a name="uptodate" id="uptodate">Güncel Tutma</a></h2>
50
51    <p>Apache HTTP Sunucusu iyi bir güvenlik sicilinin yanında güvenlik
52      konularıyla oldukça ilgili bir geliştirici topluluğuna sahiptir. Fakat,
53      bir yazılımın dağıtılmasının ardından küçük ya da büyük bazı sorunların
54      keşfedilmesi kaçınılmazdır. Bu sebeple, yazılım güncellemelerinden
55      haberdar olmak oldukça önem kazanır. HTTP sunucunuzu doğrudan
56      Apache’den temin ediyorsanız yeni sürümler ve güvenlik güncellemeleri
57      ile ilgili bilgileri tam zamanında alabilmek için <a href="http://httpd.apache.org/lists.html#http-announce">Apache
58      HTTP Sunucusu Duyuru Listesi</a>ne mutlaka üye olmanızı öneririz.
59      Apache yazılımının üçüncü parti dağıtımlarını yapanların da buna benzer
60      hizmetleri vardır.</p>
61
62    <p>Şüphesiz, bir HTTP sunucusu, sunucu kodunda bir sorun olmasa da
63      tehlike altındadır. Eklenti kodları, CGI betikleri hatta işletim
64      sisteminden kaynaklanan sorunlar nedeniyle bu ortaya çıkabilir. Bu
65      bakımdan, sisteminizdeki tüm yazılımların sorunları ve güncellemeleri
66      hakkında bilgi sahibi olmalısınız.</p>
67
68  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
69<div class="section">
70<h2><a name="dos" id="dos">Hizmet Reddi (DoS) Saldırıları</a></h2>
71    
72
73    <p>Tüm ağ sunucuları, istemcilerin sistem kaynaklarından yararlanmalarını
74      engellemeye çalışan hizmet reddi saldırılarına (HRS) maruz kalabilir.
75      Bu tür saldırıları tamamen engellemek mümkün değildir, fakat
76      yarattıkları sorunları azaltmak için bazı şeyler yapabilirsiniz.</p>
77
78    <p>Çoğunlukla en etkili anti-HRS aracı bir güvenlik duvarı veya başka bir
79      işletim sistemi yapılandırmasıdır. Örneğin, çoğu güvenlik duvarı
80      herhangi bir IP adresinden aynı anda yapılan bağlantıların sayısına bir
81      sınırlama getirmek üzere yapılandırılabilir. Böylece basit saldırılar
82      engellenebilir. Ancak bunun dağıtık hizmet reddi saldırılarına (DHRS)
83      karşı bir etkisi olmaz.</p>
84
85    <p>Bunların yanında Apache HTTP Sunucusunun da sorunları azaltıcı
86      tedbirler alınmasını sağlayacak bazı yapılandırmaları vardır:</p>
87
88    <ul>
89      <li><code class="directive"><a href="/mod/mod_reqtimeout.html#requestreadtimeout">RequestReadTimeout</a></code>
90        yönergesi bir istemcinin isteği göndermek için harcadığı zamanı
91        sınırlamayı sağlar.</li>
92
93      <li>HRS’ye maruz kalması olası sitelerde <code class="directive"><a href="/mod/core.html#timeout">TimeOut</a></code> yönergesinin değeri düşürülmelidir. Birkaç
94        saniye gibi mümkün olduğunca düşük bir ayar uygun olabilir. Ancak
95        <code class="directive"><a href="/mod/core.html#timeout">TimeOut</a></code> başka işlemlerde de
96        kullanıldığından çok düşük değerler, örneğin, uzun süre çalışan CGI
97        betiklerinde sorunlar çıkmasına sebep olabilir.</li>
98
99      <li>HRS’ye maruz kalması olası sitelerde <code class="directive"><a href="/mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> yönergesinin değeri de düşürülebilir.
100        Hatta bazı siteler başarımı arttırmak amacıyla <code class="directive"><a href="/mod/core.html#keepalive">KeepAlive</a></code> yönergesi üzerinden kalıcı
101        bağlantıları tamamen kapatabilirler.</li>
102
103      <li>Zaman aşımıyla ilgili yönergeler bakımından diğer modüller de
104        araştırılmalıdır.</li>
105
106      <li><code class="directive"><a href="/mod/core.html#limitrequestbody">LimitRequestBody</a></code>,
107      <code class="directive"><a href="/mod/core.html#limitrequestfields">LimitRequestFields</a></code>,
108      <code class="directive"><a href="/mod/core.html#limitrequestfieldsize">LimitRequestFieldSize</a></code>,
109      <code class="directive"><a href="/mod/core.html#limitrequestline">LimitRequestLine</a></code> ve
110      <code class="directive"><a href="/mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> yönergeleri,
111        istemci girdileri ile tetiklenen özkaynak tüketimini sınırlamak için
112        yapılandırılırken dikkatli olunmalıdır.</li>
113
114      <li>İşletim sisteminiz desteklediği takdirde, işletim sisteminin isteği
115        işleyen kısmını yüksüz bırakmak için <code class="directive"><a href="/mod/core.html#acceptfilter">AcceptFilter</a></code> yönergesinin etkin olmasını sağlamalısınız.
116        Bu, Apache HTTP Sunucusunda zaten öntanımlı olarak etkindir.
117        Yapacağınız şey işletim sistemi çekirdeğini buna göre yapılandırmak
118        olacaktır.</li>
119
120      <li>Sunucu tarafından özkaynakları tüketmeden aynı anda işlenebilecek
121        bağlantıların sayısını sınırlamak için <code class="directive"><a href="/mod/mpm_common.html#maxrequestworkers">MaxRequestWorkers</a></code> yönergesini kullanın. Ayrıca, <a href="perf-tuning.html">başarım arttırma belgesine</a> de
122        bakabilirsiniz.</li>
123
124      <li>HRS’lerin etkilerini azaltmak için aynı andaki bağlantı sayısını
125        arttırabilecek evreli <a href="/mpm.html">MPM</a>’lerden birini
126        kullanmak iyi olabilir. Dahası, <code class="module"><a href="/mod/event.html">event</a></code> MPM’i
127        her bağlantıya yeni bir evre atanmaması için eşzamansız işlem yapar.
128        OpenSSL kütüphanesinin doğası nedeniyle
129        <code class="module"><a href="/mod/event.html">event</a></code> MPM’i <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> ve diğer girdi
130        süzgeçleri ile henüz uyumlu değildir. Bu durumlarda,
131        <code class="module"><a href="/mod/worker.html">worker</a></code> MPM'inin davranışına geri döner.</li>
132
133      <li><a href="http://modules.apache.org/">http://modules.apache.org/</a>
134        adresinde, belli istemci davranışlarını sınırlayacak ve HRS ile
135        ilgili sorunları azaltmaya yardımcı olacak üçüncü parti modüller
136        bulunabilir.</li>
137    </ul>
138  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
139<div class="section">
140<h2><a name="serverroot" id="serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></h2>
141    
142
143    <p>Normalde, Apache root kullanıcı tarafından başlatılır ve hizmetleri
144      sunarken <code class="directive"><a href="/mod/mod_unixd.html#user">User</a></code> yönergesi
145      tarafından tanımlanan kullanıcının aidiyetinde çalışır. Root tarafından
146      çalıştırılan komutlarda olduğu gibi, root olmayan kullanıcıların
147      yapacakları değişikliklerden korunmak konusunda da dikkatli
148      olmalısınız. Dosyaların sadece root tarafından yazılabilir olmasını
149      sağlamak yeterli değildir, bu dizinler ve üst dizinler için de
150      yapılmalıdır. Örneğin, sunucu kök dizininin
151      <code>/usr/local/apache</code> olmasına karar verdiyseniz, bu dizini
152      root olarak şöyle oluşturmanız önerilir:</p>
153
154    <div class="example"><p><code>
155      mkdir /usr/local/apache <br />
156      cd /usr/local/apache <br />
157      mkdir bin conf logs <br />
158      chown 0 . bin conf logs <br />
159      chgrp 0 . bin conf logs <br />
160      chmod 755 . bin conf logs
161    </code></p></div>
162
163    <p><code>/</code>, <code>/usr</code>, <code>/usr/local</code>
164      dizinlerinde sadece root tarafından değişiklik yapılabileceği kabul
165      edilir. <code class="program"><a href="/programs/httpd.html">httpd</a></code> çalıştırılabilirini kurarken de benzer
166      bir önlemin alındığından emin olmalısınız:</p>
167
168    <div class="example"><p><code>
169      cp httpd /usr/local/apache/bin <br />
170      chown 0 /usr/local/apache/bin/httpd <br />
171      chgrp 0 /usr/local/apache/bin/httpd <br />
172      chmod 511 /usr/local/apache/bin/httpd
173    </code></p></div>
174
175    <p>Diğer kullanıcıların değişiklik yapabileceği bir dizin olarak bir
176      <code>htdocs</code> dizini oluşturabilirsiniz. Bu dizine root
177      tarafından çalıştırılabilecek dosyalar konulmamalı ve burada root
178      tarafından hiçbir dosya oluşturulmamalıdır.</p>
179
180    <p>Diğer kullanıcılara root tarafından yazılabilen ve çalıştırılabilen
181      dosyalarda değişiklik yapma hakkını tanırsanız, onlara root
182      kullanıcısını ele geçirilebilme hakkını da tanımış olursunuz. Örneğin,
183      biri <code class="program"><a href="/programs/httpd.html">httpd</a></code> çalıştırılabilirini zararlı bir programla
184      değiştirebilir ve o programı tekrar çalıştırdığınız sırada program
185      yapacağını yapmış olur. Günlükleri kaydettiğiniz dizin herkes
186      tarafından yazılabilen bir dizin olduğu takdirde, birileri bir günlük
187      dosyasını bir sistem dosyasına sembolik bağ haline getirerek root
188      kullanıcısının bu dosyaya ilgisiz şeyler yazmasına sebep olabilir.
189      Günlüklerin dosyaları herkes tarafından yazılabilir olduğu takdirde ise
190      birileri dosyaya yanıltıcı veriler girebilir.</p>
191  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
192<div class="section">
193<h2><a name="ssi" id="ssi">Sunucu Taraflı İçerik Yerleştirme</a></h2>
194    
195
196    <p>SSI sayfaları bir sunucu yöneticisi açısından çeşitli olası risklere
197      kaynaklık edebilir.</p>
198
199    <p>İlk risk, sunucu yükündeki artış olasılığıdır. Tüm SSI sayfaları,  SSI
200      kodu içersin içermesin Apache tarafından çözümlenir. Bu küçük bir artış
201      gibi görünürse de bir paylaşımlı sunucu ortamında önemli bir yük haline
202      gelebilir.</p>
203
204    <p>SSI sayfaları, CGI betikleriyle ilgili riskleri de taşır. <code>exec
205      cmd</code> elemanı kullanılarak bir SSI sayfasından herhangi bir CGI
206      betiğini veya bir sistem programını Apache’nin aidiyetinde olduğu
207      kullanıcının yetkisiyle çalıştırmak mümkündür.</p>
208
209    <p>SSI sayfalarının yararlı özelliklerinden yararlanırken güvenliğini de
210      arttırmanın bazı yolları vardır.</p>
211
212    <p>Sunucu yöneticisi, bir başıbozuk SSI sayfasının sebep olabileceği
213      zararları bertaraf etmek için <a href="#cgi">CGI Genelinde</a>
214      bölümünde açıklandığı gibi <a href="/suexec.html">suexec</a>’i etkin
215      kılabilir.</p>
216
217    <p>SSI sayfalarını <code>.html</code> veya <code>.htm</code>
218      uzantılarıyla etkinleştirmek tehlikeli olabilir. Bu özellikle
219      paylaşımlı ve yüksek trafikli bir sunucu ortamında önemlidir. SSI
220      sayfalarını normal sayfalardan farklı olarak <code>.shtml</code> gibi
221      bildik bir uzantıyla etkinleştirmek gerekir. Bu, sunucu yükünü asgari
222      düzeyde tutmaya ve risk yönetimini kolaylaştırmaya yarar.</p>
223
224    <p>Diğer bir çözüm de SSI sayfalarından betik ve program çalıştırmayı
225      iptal etmektir. Bu, <code class="directive"><a href="/mod/core.html#options">Options</a></code>
226      yönergesine değer olarak <code>Includes</code> yerine
227      <code>IncludesNOEXEC</code> vererek sağlanır. Ancak, eğer betiklerin
228      bulunduğu dizinde <code class="directive"><a href="/mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
229      yönergesiyle CGI betiklerinin çalışması mümkün kılınmışsa,
230      kullanıcıların <code>&lt;--#include virtual="..." --&gt;</code> ile bu
231      betikleri  çalıştırabileceklerine dikkat ediniz.</p>
232
233  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
234<div class="section">
235<h2><a name="cgi" id="cgi">CGI Genelinde</a></h2>
236    
237
238    <p>Herşeyden önce ya CGI betiğini/programını yazanlara ya da kendinizin
239      CGI'deki güvenlik açıklarını (ister kasıtlı olsun ister tesadüfi)
240      yakalama becerinize güvenmek zorundasınız. CGI betikleri esasen
241      sisteminizdeki komutları site kullanıcılarının izinleriyle
242      çalıştırırlar. Bu bakımdan dikkatle denenmedikleri takdirde oldukça
243      tehlikeli olabilirler.</p>
244
245    <p>CGI betiklerinin hepsi aynı kullanıcının aidiyetinde çalışırsa diğer
246      betiklerle aralarında çelişkilerin ortaya çıkması ister istemez
247      kaçınılmazdır. Örneğin A kullanıcısının B kullanıcısına garezi varsa
248      bir betik yazıp B’nin CGI veritabanını silebilir. Bu gibi durumların
249      ortaya çıkmaması için betiklerin farklı kullanıcıların aidiyetlerinde
250      çalışmasını sağlayan ve 1.2 sürümünden beri Apache ile dağıtılan <a href="/suexec.html">suEXEC</a> diye bir program vardır. Başka bir yol
251      da <a href="http://cgiwrap.sourceforge.net/">CGIWrap</a> kullanmaktır.</p>
252
253  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
254<div class="section">
255<h2><a name="nsaliasedcgi" id="nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></h2>
256    
257
258    <p>Kullanıcıların sitenin her yerinde CGI betiklerini çalıştırmalarına
259      izin vermek ancak şu koşullarda mümkün olabilir:</p>
260
261    <ul>
262      <li>Kullanıcılarınızın kasıtlı ya da kasıtsız sistemi saldırıya açık
263        hale getirecek betikler yazmayacaklarına tam güveniniz vardır.</li>
264      <li>Sitenizin güvenliği zaten o kadar kötüdür ki, bir delik daha
265        açılmasının mahzuru yoktur.</li>
266      <li>Sitenizin sizden başka kullanıcısı yoktur ve sunucunuzu sizden
267        başka hiç kimsenin ziyaret etmesi mümkün değildir.</li>
268    </ul>
269
270  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
271<div class="section">
272<h2><a name="saliasedcgi" id="saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></h2>
273    
274
275    <p>CGI’yi belli dizinlerle sınırlamak yöneticiye bu dizinlerde daha iyi
276      denetim imkanı sağlar. Bu kaçınılmaz olarak <code class="directive"><a href="/mod/mod_alias.html#scriptalias">ScriptAlias</a></code>’sız CGI’den çok daha
277      güvenlidir, ancak bu dizinlere yazma hakkı olan kullanıcılarınız
278      güvenilir kişiler olması ve site yöneticisinin de olası güvenlik
279      açıklarına karşı CGI betiklerini ve programlarını denemeye istekli
280      olması şartıyla.</p>
281
282    <p>Çoğu site yöneticisi <code>ScriptAlias</code>’sız CGI yerine bu
283      yaklaşımı seçer.</p>
284
285  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
286<div class="section">
287<h2><a name="dynamic" id="dynamic">Devingen içerikli kaynaklar</a></h2>
288    
289
290    <p>Sunucunun bir parçası gibi çalışan, <code>mod_php</code>,
291      <code>mod_perl</code>, <code>mod_tcl</code> ve <code>mod_python</code>
292      gibi gömülü betik çalıştırma seçenekleri sunucuyu çalıştıran
293      kullanıcının aidiyetinde çalışırlar (<code class="directive"><a href="/mod/mod_unixd.html#user">User</a></code> yönergesine bakınız). Bu bakımdan bu betik
294      yorumlayıcılar tarafından çalıştırılan betikler, sunucu kullanıcısının
295      eriştiği herşeye erişebilirler. Bazı betik yorumlayıcıların getirdiği
296      bazı sınırlamalar varsa da bunlara pek güvenmemek, gerekli sınamaları
297      yine de yapmak gerekir.</p>
298
299  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
300<div class="section">
301<h2><a name="dynamicsec" id="dynamicsec">Devingen içeriğin güvenliği</a></h2>
302    
303
304    <p><code>mod_php</code>, <code>mod_perl</code> veya
305      <code>mod_python</code> gibi devingen içeriği yapılandırırken
306      güvenlikle ilgili değerlendirmelerin çoğu <code>httpd</code>'nin
307      kapsamından çıkar ve bu modüllerin belgelerini incelemek ihtiyacı
308      duyarsınız. Örneğin, PHP çoğu zaman kapalı tutulan
309      <a href="http://www.php.net/manual/en/ini.sect.safe-mode.php">Güvenli
310      Kip</a> ayarını etkin kılmanızı önerir. Daha fazla güvenlik için bir
311      diğer örnek bir PHP eklentisi olan
312      <a href="http://www.hardened-php.net/suhosin/">Suhosin</a>'dir. Bunlar
313      hakkında daha ayrıntılı bilgi için her projenin kendi belgelerine
314      başvurun.</p>
315
316    <p>Apache seviyesinde, <a href="http://modsecurity.org/">mod_security</a>
317      adı verilen modülü bir HTTP güvenlik duvarı gibi ele alabilir, devingen
318      içeriğin güvenliğini arttırmanıza yardımcı olmak üzere inceden inceye
319      yapılandırabilirsiniz.</p>
320
321  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
322<div class="section">
323<h2><a name="systemsettings" id="systemsettings">Sistem Ayarlarının Korunması</a></h2>
324    
325
326    <p>Güvenliği gerçekten sıkı tutmak istiyorsanız, kullanıcılarınızın
327      yapılandırmanızdaki güvenlik ayarlarını geçersiz kılmak için
328      <code>.htaccess</code> dosyalarını kullanabilmelerinin de önüne
329      geçmelisiniz. Bunu yapmanın tek bir yolu vardır.</p>
330
331    <p>Sunucu yapılandırma dosyanıza şunu yerleştirin:</p>
332
333    <pre class="prettyprint lang-config">&lt;Directory /&gt;
334    AllowOverride None
335&lt;/Directory&gt;</pre>
336
337
338    <p>Böylece, belli dizinlerde özellikle etkinleştirilmedikçe bütün
339      dizinlerde <code>.htaccess</code> dosyalarının kullanımını engellemiş
340      olursunuz.</p>
341
342  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
343<div class="section">
344<h2><a name="protectserverfiles" id="protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></h2>
345    
346
347    <p>Apache’nin ister istemez yanlış anlaşılan yönlerinden biri öntanımlı
348      erişim özelliğidir. Yani siz aksine bir şeyler yapmadıkça, sunucu normal
349      URL eşleme kurallarını kullanarak bir dosyayı bulabildiği sürece onu
350      istemciye sunacaktır.</p>
351
352    <p>Örneğin, aşağıdaki durumu ele alalım:</p>
353
354    <div class="example"><p><code>
355      # cd /; ln -s / public_html
356    </code></p></div>
357
358    <p>Ve, tarayıcınıza <code>http://localhost/~root/</code> yazın.</p>
359
360    <p>Böylece, istemcilerin tüm dosya sisteminizi gezmelerine izin vermiş
361      olursunuz. Bu işlemin sonuçlarının önünü almak için sunucu yapılandırma
362      dosyanıza şunları yazın:</p>
363
364    <pre class="prettyprint lang-config">&lt;Directory /&gt;
365    Require all denied
366&lt;/Directory&gt;</pre>
367
368
369    <p>Bu suretle, dosya sisteminize öntanımlı erişimi yasaklamış olursunuz.
370      Erişime izin vermek istediğiniz dizinler için uygun <code class="directive"><a href="/mod/core.html#directory">Directory</a></code> bölümleri eklemeniz yeterli
371      olacaktır. Örnek:</p>
372
373    <pre class="prettyprint lang-config">&lt;Directory /usr/users/*/public_html&gt;
374    Require all granted
375&lt;/Directory&gt;
376&lt;Directory /usr/local/httpd&gt;
377    Require all granted
378&lt;/Directory&gt;</pre>
379
380
381    <p><code class="directive"><a href="/mod/core.html#location">Location</a></code> ve <code class="directive"><a href="/mod/core.html#directory">Directory</a></code> yönergelerinin etkileşimine de
382      özellikle önem vermelisiniz; örneğin <code>&lt;Directory /&gt;</code>
383      erişimi yasaklarken bir <code>&lt;Location /&gt;</code> yönergesi bunu
384      ortadan kaldırabilir.</p>
385
386    <p><code class="directive"><a href="/mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi de size
387      buna benzer bir oyun oynayabilir; yönergeye <code>./</code> atamasını
388      yaparsanız, root kullanıcısı söz konusu olduğunda yukarıda ilk örnekteki
389      durumla karşılaşırız. Sunucu yapılandırma dosyanızda aşağıdaki satırın
390      mutlaka bulunmasını öneririz:</p>
391
392    <pre class="prettyprint lang-config">UserDir disabled root</pre>
393
394
395  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
396<div class="section">
397<h2><a name="watchyourlogs" id="watchyourlogs">Günlüklerin İzlenmesi</a></h2>
398    
399
400    <p>Sunucunuzda olup biteni günü gününe bilmek istiyorsanız <a href="/logs.html">günlük dosyalarına</a> bakmalısınız. Günlük dosyaları
401      sadece olup biteni raporlamakla kalmaz, sunucunuza ne tür saldırılar
402      yapıldığını ve güvenlik seviyenizin yeterli olup olmadığını anlamanızı da
403      sağlarlar.</p>
404
405    <p>Bazı örnekler:</p>
406
407    <div class="example"><p><code>
408      grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log <br />
409      grep "client denied" error_log | tail -n 10
410    </code></p></div>
411
412    <p>İlk örnek, <a href="http://online.securityfocus.com/bid/4876/info/">Apache Tomcat Source.JSP Bozuk İstek Bilgilerini İfşa Açığı</a>nı
413      istismar etmeyi deneyen saldırıların sayısını verirken ikinci örnek,
414      reddedilen son on istemciyi listeler; örnek:</p>
415
416    <div class="example"><p><code>
417      [Thu Jul 11 17:18:39 2002] [error] [client foo.example.com] client denied
418      by server configuration: /usr/local/apache/htdocs/.htpasswd
419    </code></p></div>
420
421    <p>Gördüğünüz gibi günlük dosyaları sadece ne olup bittiğini raporlar, bu
422      bakımdan eğer istemci <code>.htpasswd</code> dosyasına erişebiliyorsa <a href="/logs.html#accesslog">erişim günlüğünüzde</a> şuna benzer bir
423      kayıt görürsünüz:</p>
424
425    <div class="example"><p><code>
426      foo.example.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
427    </code></p></div>
428
429    <p>Bu, sunucu yapılandırma dosyanızda aşağıdaki yapılandırmayı iptal
430      ettiğiniz anlamına gelir:</p>
431
432    <pre class="prettyprint lang-config">&lt;Files ".ht*"&gt;
433    Require all denied
434&lt;/Files&gt;</pre>
435
436
437  </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
438<div class="section">
439<h2><a name="merging" id="merging">Yapılandırma bölümlerinin birleştirilmesi</a></h2>
440
441    
442
443    <p>Yapılandırma bölümlerinin birleştirilmesi karmaşık bir işlem olup bazı
444      durumlarda yönergelere bağlıdır. Yönergeleri bir araya getirirken
445      aralarındaki bağımlılıkları daima sınayın.</p>
446
447    <p><code class="directive">mod_access_compat</code> gibi henüz yönerge katıştırma
448      mantığını gerçeklememiş modüller için sonraki bölümlerdeki davranış, bu
449      modüllerin yönergelerini içerip içermemesine bağlıdır. Yapılandırmada
450      yönergelerin <em>yerleri değiştirildiğinde</em> fakat bir katıştırma
451      yapılmadığında, yapılandırma bir değişiklik yapılana kadar miras
452      alınır.</p>
453  </div></div>
454<div class="bottomlang">
455<p><span>Mevcut Diller: </span><a href="/en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
456<a href="/fr/misc/security_tips.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
457<a href="/ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
458<a href="/tr/misc/security_tips.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
459</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Yorum</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
460<script type="text/javascript"><!--//--><![CDATA[//><!--
461var comments_shortname = 'httpd';
462var comments_identifier = 'http://httpd.apache.org/docs/2.4/misc/security_tips.html';
463(function(w, d) {
464    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
465        d.write('<div id="comments_thread"><\/div>');
466        var s = d.createElement('script');
467        s.type = 'text/javascript';
468        s.async = true;
469        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
470        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
471    }
472    else { 
473        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
474    }
475})(window, document);
476//--><!]]></script></div><div id="footer">
477<p class="apache">Copyright 2014 The Apache Software Foundation.<br /><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> altında lisanslıdır.</p>
478<p class="menu"><a href="/mod/">Modüller</a> | <a href="/mod/directives.html">Yönergeler</a> | <a href="http://wiki.apache.org/httpd/FAQ">SSS</a> | <a href="/glossary.html">Terimler</a> | <a href="/sitemap.html">Site Haritası</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
479if (typeof(prettyPrint) !== 'undefined') {
480    prettyPrint();
481}
482//--><!]]></script>
483</body></html>