5 Eylül 2010 Pazar

Apache’yi Güvenli Hale Getirmenin 20 Yolu

Apache’yi Güvenli Hale Getirmenin 20 Yolu

Peter Freitag’in apache konfigürasyonunda yapilacak bazi düzenlemeler hakkindaki, Apache Security kitabindan da alintilar iceren önerileri.

Not: Önerilerin bir garantisi yoktur. Sunucunuzu daha siki yapacaktir fakat bütün önerileri yaptiktan sonra sunucunuz %100 güvenli olacak diye bir garanti yok. Ayrica önerilerin bazilari sizin ortaminizda performansi düsürebilir veya problemlere yol acabilir. Önerilen degisikliklerin ortaminiza uyup uymayacagina karar vermek size kaliyor.

1) ilk olarak en son yamalari gectiginize emin olun
Eger kapiniz acik ise pencerelere kilit koymanin bir mantigi yoktur. Ayni sekilde, eger gerekli yamalari kurmadiysaniz, diger önerilere yamalari gectikten sonra bakin.

2) Apache sürüm numarasini ve diger bilgileri gizleyin
Varsayilan olarak, bütün Apache kurulumlari bütün dünyaya hangi Apache sürümünü, isletim sistemini calistirdiginizi ve hatta hangi Apache modüllerinin sunucuda kurulu oldugunu söyleyecektir. Saldirganlar bu bilgileri kullanirlar. Ayrica varsayilan ayarlari ellemediginizi belirten bir mesaj da verilmis olur.

httpd.conf dosyasinda asagidaki iki direktifi vermeniz gerekiyor:
ServerSignature Off
ServerTokens Prod

ServerSignature direktifi 404 sayfalari, klasör listeleri gibi apache tarafindan yaratilan sayfalarin en altinda bilgilerin görüntülenmesi ile ilgilidir.
ServerTokens direktifi ise Apache’nin HTTP cevap basliginda Server kismina ne yazacagini belirler. Bunu Prod’a set ederek HTTPcevabinda asagidaki sekilde cevap verdirmek mümkün:
Server: Apache
Eger fazla paranoyaksaniz bunu da kaynak kodunda degisiklik yaparak veya mod_security kullanarak (asagida anlatiliyor) degistirebilirsiniz.

3) Apache’yi kendi kullanici hesabi ve grubunda calistirin
cesitli apache kurulumlari nobOdy kullanici hesabi ile calisir. Eger hem Apache hem de Eposta sunucunuzun da nobOdy kullanici hesabi ile calistirildigini varsayarsak, Apache’ye yapilan basarili bir saldiri sonrasi eposta sunucusunun da ele gecirilmesi veya bunun tersi mümkün olabilir.
User apache
Group apache

4)
Web klasörünün disindaki dosyalara erisimi engelleyin
Apache’nin web ana klasörü disindaki dosyalara erisimini istemeyiz. Bütün web sitelerinizin ayni klasör altinda oldugunu varsayarsak (örnekte /web olarak geciyor) asagidaki gibi bir ayar yapmalisiniz:

Order Deny,Allow
Deny from all
Options None
AllowOverride None


Order Allow,Deny
Allow from all


Not: Options None ve AllowOverride None set ettigimiz icin bu sunucunun tüm override islemlerini kapatacaktir. Bu sebeple Option veya Override gerektiren her bir klasör icin elle ekleme yapmaniz gerekir.

5) Klasör icerigi görüntülemeyi kapatin
Bunu bir Directory tag’i icerisinde Options ile yapabilirsiniz. Options’i None veya -Indexes olarak set edin:
Options -Indexes

6) Sunucu tarafi dahil etmeleri (server side include) kapatin
Bu da Directory tag’i icerisinde Options ile yapiliyor. Options’i None veya -Includes olacak sekilde ayarlayin:
Options -Includes

7) CGI calistirmayi kapatin
Eger CGI kullanmiyorsaniz Directory tag’i icerisinde Options’da set ederek kapatin. Options’i None veya -ExecCGI olarak set edin:
Options -ExecCGI

8) Apache’nin sembolik link’leri takip etmesine izin vermeyin
Bu da Directory tag’i icerisinde Options ile yapiliyor. Options’i None veya -FollowSymLinks olacak sekilde ayarlayin:
Options -FollowSymLinks

9) Bütün Options özelliklerinin kapatilmasi
Bütün Options’lari kapatmak istiyorsaniz,
Options None
olarak set edin. Birden fazla özellik kapatmak isterseniz ayni satir icerisinde bosluk vererek belirtin:
Options -ExecCGI -FollowSymLinks -Indexes

10) .htaccess dosyalari icin destegin kaldirilmasi
Bu Directory tag’i icerisinde AllowOverride direktifi ile yapiliyor. None olacak sekilde ayarlayin:
AllowOverride None

Eger Overrides’a ihtiyaciniz varsa indirilemediklerinden (download) ve/veya isimlerini .htaccess’den baska bir seye degistirin. Örnegin .httpdoverride olarak degistirelim ve .ht ile baslayan bütün dosyalarin indirilmesini engelleyelim:
AccessFileName .httpdoverride

Order allow,deny
Deny from all
Satisfy All


11)
mod_security calistirin
mod_security, Apache Security kitabinin da yazari olan Ivan Ristic tarafindan hazirlanmis yararli bir Apache modülüdür.
mod_security ile asagidakileri yapabilirsiniz:
* Basit filtreleme
* Regular Expression tabanli filtreleme
* URL kodlama kontrolü
* Unicode kodlama kontrolü
* Denetim (Auditing)
* Null byte saldirisi önleme
* Upload hafiza sinirlari
* Sunucu kimligi maskeleme
* Dahili chroot destegi
* ve dahasi

12) Gereksiz modülleri kapatin
Apache tipik olarak cesitli modüllerle birlikte kurulmaktadir. Apache modül dokümantasyonuna göz atarak hangi modülün ne yaptigini ögrenin. Aktif durumda olan bazi modüllere ihtiyaciniz olmayabilir.
httpd.conf dosyasinda LoadModüle iceren satirlara bakin. Bir modülü devre disi birakmak icin basitce satirin basina bir # isareti koyun (comment out). Modülleri aratmak icin
grep LoadModule httpd.conf
komutunu calistirin.
Genelde aktif olan fakat ihtiyac duyulmayan modüllere örnek olarak,
mod_imap, mod_include, mod_info, mod_userdir, mod_status, mod_cgi, mod_autoindex
verilebilir.

13)
Apache’nin konfigürasyon ve calistirilabilir dosyalarina sadece root’un okuma izni olsun
Eger Apache kurulumunuzun /usr/local/apache oldugunu varsayarsak:
chown -R root:root /usr/local/apache
chmod -R o-rwx /usr/local/apache

14) Timeout degerini düsürün
Timeout (zaman asimi) süresi varsayilan olarak 300 saniyeye ayarlidir. Servis kullanimi engelleme saldirilarinin (DoS) potansiyel etkilerini azaltmak icin bunu düsürebilirsiniz:
Timeout 45

15) Büyük boyutlu isteklerin sinirlanmasi
Apache bir http isteginin boyutunu sinirlamaniza izin veren cesitli direktifler sunar. Bu özellik de servis kullanimi engelleme saldirilarinin etkilerini azaltmak icin kullanilabilir.
Baslangic olarak LimitRequestBOdy direktifi kullanilabilir. Bu direktif varsayilan olarak unlimited/sinirsiz olarak ayarlidir. Eger 1mb’in üzerinde dosya gönderimine izin vermiyorsaniz bunu:
LimitRequestBOdy 1048576
olarak set edebilirsiniz. Eger dosya gönderimlerine (upload) izin vermiyorsaniz daha da düsük tutabilirsiniz.
Bakilabilecek diger direktifler ise LimitRequestFields, LimitRequestFieldSize ve LimitRequestLine. Bu direktifler cogu sunucu icin varsayilan olarak makul degerlere ayarlidir fakat ihtiyaclariniza göre degisiklik yapabilirsiniz. Detayli bilgi icin Apache dokümanina göz atin.

16) XML BOdy boyutunu sinirlamak
Eger mod_dav kullaniyorsaniz bir XML isteginin gövedesinin maksimum boyutunu sinirlamak isteyebilirsiniz. LimitXMLRequestBOdy sadece Apache 2’de var ve varsayilan degeri 1 milyon byte (yaklasik 1mb). cogu makalede eger WebDAV kullaniyor ve büyük dosyalar upload ediliyorsa, bu degeri 0’a set ederek boyut sinirlamasinin kaldirilmasindan bahsedilir. Fakat sadece kaynak (source) kontrol icin kullaniyorsaniz bu degeri 10mb gibi bir degerle sinirlayabilirsiniz:
LimitXMLRequestBOdy 10485760

17) Ayni anda kullanim (concurrency) sinirlamasi
Apache ayni anda yapilan istekleri isleme ile ilgili olarak cesitli konfigürasyon ayarlari sunar. MaxClients isteklere hizmet icin maksimum olarak kac child process’in yaratilacagini belirler. Eger sunucunuzun cok sayida concurrent istegi karsilayacak kadar hafizasi yoksa bu degeri yüksek tutmak isteyebilirsiniz.
MaxSpaceServer, MaxRequestsPerChild ve Apache2 deki ThreadsPerChild, ServerLimit, ve MaxSpareThreads direktifleri de isletim sistemi ve donaniminiza uyacak sekilde ayarlanabilir.

18) Erisimleri IP’ye göre kisitlama
Eger sadece belirli bir agdan veya IP adresinden erisilmesi gereken kaynaklariniz varsa bunu apache konfigürasyonunda ayarlayabilirsiniz. Örnegin intranet’inize sadece 176.16 agindan erisim yapilmasini istiyorsaniz:

Order Deny,Allow
Deny from all
Allow from 176.16.0.0/16

veya IP kisitlamasi:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1

19) KeepAlive ayarlari
Apache dokümantasyonuna göre HTTP Keep Alive özelligi istemci performansini %50 oraninda artirmaktadir. Bu sebeple bu ayarlari degistirirken dikkatli olun, servis kullanimi engelleme saldirisina karsi az bir koruma saglarken performans’dan önemli ölcüde ödün verebilirsiniz.
KeepAlive varsayilan olarak aktiftir ve acik birakabilirsiniz, fakat varsayilan olarak 100 olan MaxKeepAliveRequests degerini ve 15’e ayarli olan KeepAliveTimeout degerini degistirebilirsiniz.Log dosyalarinizi analiz ederek uygun degerleri bulmaya calisin.

20) Apache’yi chroot ortaminda calistirin
chroot programlari kendi ayristirilmis hapishanelerinde (jail) calistirmanizi saglar. Bu da bir servisin kirilma durumunda sunucudaki diger seyleri etkilemesini engeller.

Yukarida mod_security modülünün kendisinin chroot destegi oldugunu söylemistim. Bu modül sayesinde asagidaki direktifi eklemek yeterli:
SecChrootDir /chroot/apache

Fakat bazı uyarılar da yapılıyor, ayrıntılı bilgi için mod_security dokümanına göz atın.


Yazar & Kaynak: modsecurity.org

5 yorum:

Adsız dedi ki...

Great goods from you, man. I have understand your stuff previous to
and you're just extremely fantastic. I really like what you've acquired here, really like what you're stating and the way in which you say it. You make it entertaining and you still take care of to keep it sensible. I cant wait to read far more from you. This is really a great website.

My website: The way to figure out what so that you can go for gynecomastiaremedy- Operative or even low operative strategies

Adsız dedi ki...

This is a topic which is close to my heart... Many thanks! Exactly where
are your contact details though?

Feel free to visit my blog Large Weight v/s Higher Strength Exercises

Adsız dedi ki...

We're a group of volunteers and starting a new scheme in our community. Your site offered us with valuable info to work on. You've done a formidable
job and our whole community will be grateful to you.

Feel free to visit my webpage: chestfatburner.com

Adsız dedi ki...

It's truly very complicated in this active life to listen news on Television, thus I simply use web for that reason, and take the newest information.

Feel free to surf to my site; So how come Guys Store Body excess extra weight withinside Torso?

Adsız dedi ki...

What's up to every one, the contents existing at this web site are genuinely awesome for people knowledge, well, keep up the good work fellows.

Also visit my blog; http://chestfatburner.com/is-hormonal-imbalance-a-possible-cause-of-man-boobs-growth/