bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / docs / manual / misc / security_tips.html.tr.utf8
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" />
12 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
13 <body id="manual-page"><div id="page-header">
14 <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p>
15 <p class="apache">Apache HTTP Sunucusu Sürüm 2.0</p>
16 <img alt="" src="../images/feather.gif" /></div>
17 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
18 <div id="path">
19 <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.0</a> &gt; <a href="./">Çeşitli Belgeler</a></div><div id="page-content"><div id="preamble"><h1>Güvenlik İpuçları</h1>
20 <div class="toplang">
21 <p><span>Mevcut Diller: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
22 <a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
23 <a href="../tr/misc/security_tips.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
24 </div>
25
26     <p>Bir HTTP Sunucusunu ayarlarken dikkat edilmesi gerekenler ve bazı
27     ipuçları.  Öneriler kısmen Apache’ye özel kısmen de genel olacaktır.</p>
28   </div>
29 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#uptodate">Güncel Tutma</a></li>
30 <li><img alt="" src="../images/down.gif" /> <a href="#serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></li>
31 <li><img alt="" src="../images/down.gif" /> <a href="#ssi">Sunucu Taraflı İçerik Yerleştirme</a></li>
32 <li><img alt="" src="../images/down.gif" /> <a href="#cgi">CGI Genelinde</a></li>
33 <li><img alt="" src="../images/down.gif" /> <a href="#nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></li>
34 <li><img alt="" src="../images/down.gif" /> <a href="#saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></li>
35 <li><img alt="" src="../images/down.gif" /> <a href="#dynamic">Devingen içerikli kaynaklar</a></li>
36 <li><img alt="" src="../images/down.gif" /> <a href="#systemsettings">Sistem Ayarlarının Korunması</a></li>
37 <li><img alt="" src="../images/down.gif" /> <a href="#protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></li>
38 <li><img alt="" src="../images/down.gif" /> <a href="#watchyourlogs">Günlüklerin İzlenmesi</a></li>
39 </ul></div>
40 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
41 <div class="section">
42 <h2><a name="uptodate" id="uptodate">Güncel Tutma</a></h2>
43
44     <p>Apache HTTP Sunucusu iyi bir güvenlik sicilinin yanında güvenlik
45       konularıyla oldukça ilgili bir geliştirici topluluğuna sahiptir. Fakat,
46       bir yazılımın dağıtılmasının ardından küçük ya da büyük bazı sorunların
47       keşfedilmesi kaçınılmazdır. Bu sebeple, yazılım güncellemelerinden
48       haberdar olmak oldukça önem kazanır. HTTP sunucunuzu doğrudan
49       Apache’den temin ediyorsanız yeni sürümler ve güvenlik güncellemeleri
50       ile ilgili bilgileri tam zamanında alabilmek için <a href="http://httpd.apache.org/lists.html#http-announce">Apache
51       HTTP Sunucusu Duyuru Listesi</a>ne mutlaka üye olmanızı öneririz.
52       Apache yazılımının üçüncü parti dağıtımlarını yapanların da buna benzer
53       hizmetleri vardır.</p>
54
55     <p>Şüphesiz, bir HTTP sunucusu, sunucu kodunda bir sorun olmasa da
56       tehlike altındadır. Eklenti kodları, CGI betikleri hatta işletim
57       sisteminden kaynaklanan sorunlar nedeniyle bu ortaya çıkabilir. Bu
58       bakımdan, sisteminizdeki tüm yazılımların sorunları ve güncellemeleri
59       hakkında bilgi sahibi olmalısınız.</p>
60
61   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
62 <div class="section">
63 <h2><a name="serverroot" id="serverroot"><code>ServerRoot</code> Dizinlerinin İzinleri</a></h2>
64     
65
66     <p>Normalde, Apache root kullanıcı tarafından başlatılır ve hizmetleri
67       sunarken <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> yönergesi
68       tarafından tanımlanan kullanıcının aidiyetinde çalışır. Root tarafından
69       çalıştırılan komutlarda olduğu gibi, root olmayan kullanıcıların
70       yapacakları değişikliklerden korunmak konusunda da dikkatli
71       olmalısınız. Dosyaların sadece root tarafından yazılabilir olmasını
72       sağlamak yeterli değildir, bu dizinler ve üst dizinler için de
73       yapılmalıdır. Örneğin, sunucu kök dizininin
74       <code>/usr/local/apache</code> olmasına karar verdiyseniz, bu dizini
75       root olarak şöyle oluşturmanız önerilir:</p>
76
77     <div class="example"><p><code>
78       mkdir /usr/local/apache <br />
79       cd /usr/local/apache <br />
80       mkdir bin conf logs <br />
81       chown 0 . bin conf logs <br />
82       chgrp 0 . bin conf logs <br />
83       chmod 755 . bin conf logs
84     </code></p></div>
85
86     <p><code>/</code>, <code>/usr</code>, <code>/usr/local</code>
87       dizinlerinde sadece root tarafından değişiklik yapılabileceği kabul
88       edilir. <code class="program"><a href="../programs/httpd.html">httpd</a></code> çalıştırılabilirini kurarken de benzer
89       bir önlemin alındığından emin olmalısınız:</p>
90
91     <div class="example"><p><code>
92       cp httpd /usr/local/apache/bin <br />
93       chown 0 /usr/local/apache/bin/httpd <br />
94       chgrp 0 /usr/local/apache/bin/httpd <br />
95       chmod 511 /usr/local/apache/bin/httpd
96     </code></p></div>
97
98     <p>Diğer kullanıcıların değişiklik yapabileceği bir dizin olarak bir
99       <code>htdocs</code> dizini oluşturabilirsiniz. Bu dizine root
100       tarafından çalıştırılabilecek dosyalar konulmamalı ve burada root
101       tarafından hiçbir dosya oluşturulmamalıdır.</p>
102
103     <p>Diğer kullanıcılara root tarafından yazılabilen ve çalıştırılabilen
104       dosyalarda değişiklik yapma hakkını tanırsanız, onlara root
105       kullanıcısını ele geçirilebilme hakkını da tanımış olursunuz. Örneğin,
106       biri <code class="program"><a href="../programs/httpd.html">httpd</a></code> çalıştırılabilirini zararlı bir programla
107       değiştirebilir ve o programı tekrar çalıştırdığınız sırada program
108       yapacağını yapmış olur. Günlükleri kaydettiğiniz dizin herkes
109       tarafından yazılabilen bir dizin olduğu takdirde, birileri bir günlük
110       dosyasını bir sistem dosyasına sembolik bağ haline getirerek root
111       kullanıcısının bu dosyaya ilgisiz şeyler yazmasına sebep olabilir.
112       Günlüklerin dosyaları herkes tarafından yazılabilir olduğu takdirde ise
113       birileri dosyaya yanıltıcı veriler girebilir.</p>
114   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
115 <div class="section">
116 <h2><a name="ssi" id="ssi">Sunucu Taraflı İçerik Yerleştirme</a></h2>
117     
118
119     <p>SSI sayfaları bir sunucu yöneticisi açısından çeşitli olası risklere
120       kaynaklık edebilir.</p>
121
122     <p>İlk risk, sunucu yükündeki artış olasılığıdır. Tüm SSI sayfaları,  SSI
123       kodu içersin içermesin Apache tarafından çözümlenir. Bu küçük bir artış
124       gibi görünürse de bir paylaşımlı sunucu ortamında önemli bir yük haline
125       gelebilir.</p>
126
127     <p>SSI sayfaları, CGI betikleriyle ilgili riskleri de taşır. <code>exec
128       cmd</code> elemanı kullanılarak bir SSI sayfasından herhangi bir CGI
129       betiğini veya bir sistem programını Apache’nin aidiyetinde olduğu
130       kullanıcının yetkisiyle çalıştırmak mümkündür.</p>
131
132     <p>SSI sayfalarının yararlı özelliklerinden yararlanırken güvenliğini de
133       arttırmanın bazı yolları vardır.</p>
134
135     <p>Sunucu yöneticisi, bir başıbozuk SSI sayfasının sebep olabileceği
136       zararları bertaraf etmek için <a href="#cgi">CGI Genelinde</a>
137       bölümünde açıklandığı gibi <a href="../suexec.html">suexec</a>’i etkin
138       kılabilir.</p>
139
140     <p>SSI sayfalarını <code>.html</code> veya <code>.htm</code>
141       uzantılarıyla etkinleştirmek tehlikeli olabilir. Bu özellikle
142       paylaşımlı ve yüksek trafikli bir sunucu ortamında önemlidir. SSI
143       sayfalarını normal sayfalardan farklı olarak <code>.shtml</code> gibi
144       bildik bir uzantıyla etkinleştirmek gerekir. Bu, sunucu yükünü asgari
145       düzeyde tutmaya ve risk yönetimini kolaylaştırmaya yarar.</p>
146
147     <p>Diğer bir çözüm de SSI sayfalarından betik ve program çalıştırmayı
148       iptal etmektir. Bu, <code class="directive"><a href="../mod/core.html#options">Options</a></code>
149       yönergesine değer olarak <code>Includes</code> yerine
150       <code>IncludesNOEXEC</code> vererek sağlanır. Ancak, eğer betiklerin
151       bulunduğu dizinde <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
152       yönergesiyle CGI betiklerinin çalışması mümkün kılınmışsa,
153       kullanıcıların <code>&lt;--#include virtual="..." --&gt;</code> ile bu
154       betikleri  çalıştırabileceklerine dikkat ediniz.</p>
155
156   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
157 <div class="section">
158 <h2><a name="cgi" id="cgi">CGI Genelinde</a></h2>
159     
160
161     <p>Herşeyden önce ya CGI betiğini/programını yazanlara ya da kendinizin
162       CGI'deki güvenlik açıklarını (ister kasıtlı olsun ister tesadüfi)
163       yakalama becerinize güvenmek zorundasınız. CGI betikleri esasen
164       sisteminizdeki komutları site kullanıcılarının izinleriyle
165       çalıştırırlar. Bu bakımdan dikkatle denenmedikleri takdirde oldukça
166       tehlikeli olabilirler.</p>
167
168     <p>CGI betiklerinin hepsi aynı kullanıcının aidiyetinde çalışırsa diğer
169       betiklerle aralarında çelişkilerin ortaya çıkması ister istemez
170       kaçınılmazdır. Örneğin A kullanıcısının B kullanıcısına garezi varsa
171       bir betik yazıp B’nin CGI veritabanını silebilir. Bu gibi durumların
172       ortaya çıkmaması için betiklerin farklı kullanıcıların aidiyetlerinde
173       ç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
174       da <a href="http://cgiwrap.unixtools.org/">CGIWrap</a> kullanmaktır.</p>
175
176   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
177 <div class="section">
178 <h2><a name="nsaliasedcgi" id="nsaliasedcgi"><code>ScriptAlias</code>’sız CGI</a></h2>
179     
180
181     <p>Kullanıcıların sitenin her yerinde CGI betiklerini çalıştırmalarına
182       izin vermek ancak şu koşullarda mümkün olabilir:</p>
183
184     <ul>
185       <li>Kullanıcılarınızın kasıtlı ya da kasıtsız sistemi saldırıya açık
186         hale getirecek betikler yazmayacaklarına tam güveniniz vardır.</li>
187       <li>Sitenizin güvenliği zaten o kadar kötüdür ki, bir delik daha
188         açılmasının mahzuru yoktur.</li>
189       <li>Sitenizin sizden başka kullanıcısı yoktur ve sunucunuzu sizden
190         başka hiç kimsenin ziyaret etmesi mümkün değildir.</li>
191     </ul>
192
193   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
194 <div class="section">
195 <h2><a name="saliasedcgi" id="saliasedcgi"><code>ScriptAlias</code>’lı CGI</a></h2>
196     
197
198     <p>CGI’yi belli dizinlerle sınırlamak yöneticiye bu dizinlerde daha iyi
199       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
200       güvenlidir, ancak bu dizinlere yazma hakkı olan kullanıcılarınız
201       güvenilir kişiler olması ve site yöneticisinin de olası güvenlik
202       açıklarına karşı CGI betiklerini ve programlarını denemeye istekli
203       olması şartıyla.</p>
204
205     <p>Çoğu site yöneticisi <code>ScriptAlias</code>’sız CGI yerine bu
206       yaklaşımı seçer.</p>
207
208   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
209 <div class="section">
210 <h2><a name="dynamic" id="dynamic">Devingen içerikli kaynaklar</a></h2>
211     
212
213     <p>Sunucunun bir parçası gibi çalışan, <code>mod_php</code>,
214       <code>mod_perl</code>, <code>mod_tcl</code> ve <code>mod_python</code>
215       gibi gömülü betik çalıştırma seçenekleri sunucuyu çalıştıran
216       kullanıcının aidiyetinde çalışırlar (<code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> yönergesine bakınız). Bu bakımdan bu betik
217       yorumlayıcılar tarafından çalıştırılan betikler, sunucu kullanıcısının
218       eriştiği herşeye erişebilirler. Bazı betik yorumlayıcıların getirdiği
219       bazı sınırlamalar varsa da bunlara pek güvenmemek, gerekli sınamaları
220       yine de yapmak gerekir.</p>
221
222   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
223 <div class="section">
224 <h2><a name="systemsettings" id="systemsettings">Sistem Ayarlarının Korunması</a></h2>
225     
226
227     <p>Güvenliği gerçekten sıkı tutmak istiyorsanız, kullanıcılarınızın
228       yapılandırmanızdaki güvenlik ayarlarını geçersiz kılmak için
229       <code>.htaccess</code> dosyalarını kullanabilmelerinin de önüne
230       geçmelisiniz. Bunu yapmanın tek bir yolu vardır.</p>
231
232     <p>Sunucu yapılandırma dosyanıza şunu yerleştirin:</p>
233
234     <div class="example"><p><code>
235       &lt;Directory /&gt;
236       <span class="indent">
237         AllowOverride None
238       </span>
239       &lt;/Directory&gt;
240     </code></p></div>
241
242     <p>Böylece, belli dizinlerde özellikle etkinleştirilmedikçe bütün
243       dizinlerde <code>.htaccess</code> dosyalarının kullanımını engellemiş
244       olursunuz.</p>
245
246   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
247 <div class="section">
248 <h2><a name="protectserverfiles" id="protectserverfiles">Sunucu dosyalarının öntanımlı olarak korunması</a></h2>
249     
250
251     <p>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.</p>
252
253     <p>Örneğin, aşağıdaki durumu ele alalım:</p>
254
255     <div class="example"><p><code>
256       # cd /; ln -s / public_html
257     </code></p></div>
258
259     <p>Ve, tarayıcınıza <code>http://localhost/~root/</code> yazın.</p>
260
261     <p>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:</p>
262
263     <div class="example"><p><code>
264       &lt;Directory /&gt;
265       <span class="indent">
266         Order Deny,Allow <br />
267         Deny from all
268       </span>
269       &lt;/Directory&gt;
270     </code></p></div>
271
272     <p>Bu suretle, dosya sisteminize öntanımlı erişimi yasaklamış olursunuz. 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 olacaktır. Örnek:</p>
273
274     <div class="example"><p><code>
275       &lt;Directory /usr/users/*/public_html&gt;
276       <span class="indent">
277         Order Deny,Allow <br />
278         Allow from all
279       </span>
280       &lt;/Directory&gt; <br />
281       &lt;Directory /usr/local/httpd&gt;
282       <span class="indent">
283         Order Deny,Allow <br />
284         Allow from all
285       </span>
286       &lt;/Directory&gt;
287     </code></p></div>
288
289     <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 özellikle önem vermelisiniz; örneğin <code>&lt;Directory /&gt;</code> erişimi yasaklarken bir <code>&lt;Location /&gt;</code> yönergesi bunu ortadan kaldırabilir.</p>
290
291     <p><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> yönergesi de size buna benzer bir oyun oynayabilir; yönergeye <code>./</code> 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:</p>
292
293     <div class="example"><p><code>
294       UserDir disabled root
295     </code></p></div>
296
297   </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
298 <div class="section">
299 <h2><a name="watchyourlogs" id="watchyourlogs">Günlüklerin İzlenmesi</a></h2>
300     
301
302     <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ı 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.</p>
303
304     <p>Bazı örnekler:</p>
305
306     <div class="example"><p><code>
307       grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log <br />
308       grep "client denied" error_log | tail -n 10
309     </code></p></div>
310
311     <p>İlk örnek, <a href="http://online.securityfocus.com/bid/4876/info/">Apache Tomcat
312     Source.JSP Bozuk İstek Bilgilerini İfşa Açığı</a>nı istismar etmeyi deneyen saldırıların sayısını verirken ikinci örnek, reddedilen son on istemciyi listeler; örnek:</p>
313
314     <div class="example"><p><code>
315       [Thu Jul 11 17:18:39 2002] [error] [client falan.filan.dom] client denied
316       by server configuration: /usr/local/apache/htdocs/.htpasswd
317     </code></p></div>
318
319     <p>Gördüğünüz gibi günlük dosyaları sadece ne olup bittiğini raporlar, bu 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 kayıt görürsünüz:</p>
320
321     <div class="example"><p><code>
322       falan.filan.dom - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
323     </code></p></div>
324
325     <p>Bu, sunucu yapılandırma dosyanızda aşağıdaki yapılandırmayı iptal ettiğiniz anlamına gelir:</p>
326
327     <div class="example"><p><code>
328       &lt;Files ~ "^\.ht"&gt;
329       <span class="indent">
330         Order allow,deny <br />
331         Deny from all
332       </span>
333       &lt;/Files&gt;
334     </code></p></div>
335
336   </div></div>
337 <div class="bottomlang">
338 <p><span>Mevcut Diller: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
339 <a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
340 <a href="../tr/misc/security_tips.html" title="Türkçe">&nbsp;tr&nbsp;</a></p>
341 </div><div id="footer">
342 <p class="apache">Copyright 2009 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>
343 <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/directives.html">Yönergeler</a> | <a href="../faq/">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a></p></div>
344 </body></html>