“ Apacheyi güvenli hale getirmenin yollarını merak ediyorsanız işte sizleri bu yolları veriyoruz. Güvenli Apache nasıl ayarlanır? ”
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 HTTP cevabinda 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
Tarih: Nisan 12, 2024
Kaynak: WHM Destek
Üzgünüm! Kayıt bulunamadı..