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="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Sunucusu</a> > <a href="http://httpd.apache.org/docs/">Belgeleme</a> > <a href="../">Sürüm 2.4</a> > <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"> en </a> | 25<a href="/fr/misc/security_tips.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 26<a href="/ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 27<a href="/tr/misc/security_tips.html" title="Türkçe"> tr </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><--#include virtual="..." --></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"><Directory /> 334 AllowOverride None 335</Directory></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"><Directory /> 365 Require all denied 366</Directory></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"><Directory /usr/users/*/public_html> 374 Require all granted 375</Directory> 376<Directory /usr/local/httpd> 377 Require all granted 378</Directory></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><Directory /></code> 383 erişimi yasaklarken bir <code><Location /></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"><Files ".ht*"> 433 Require all denied 434</Files></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"> en </a> | 456<a href="/fr/misc/security_tips.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 457<a href="/ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 458<a href="/tr/misc/security_tips.html" title="Türkçe"> tr </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&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>