apache web server güvenliği – Vahap Öç – Exevolium https://exevolium.com #windows, #linux, #hosting, #cloud, #database, #vmware Wed, 01 Feb 2017 13:33:58 +0000 tr hourly 1 https://wordpress.org/?v=6.9.4 https://exevolium.com/wp-content/uploads/2017/03/favicon1.png apache web server güvenliği – Vahap Öç – Exevolium https://exevolium.com 32 32 Apache’nin Çalışması İçin Ayrı User/Group Oluşturma https://exevolium.com/apachenin-calismasi-icin-ayri-usergroup-olusturma/ Mon, 12 Dec 2016 03:53:48 +0000 http://exevolium.com/?p=601 Merhaba,

Varsayılan bir kurulum ile Apache süreçlerini nobody, daemon veya apache kullanıcısı ile çalıştırır. Güvenlik nedenlerinden ötürü Apache’yi ayrıcalıksız kendi hesabında çalıştırmak gerekir. Örneğin: http-dev.

Bunun için öncelikle bir kullanıcı oluşturmalısınız. Ben http-dev kullanıcısını tanımlayacağım.

groupadd http-dev
useradd -d /var/www/ -g http-dev -s /bin/nologin http-dev

Kullanıcıyı oluşturup, grup tanımlamasını yaptıktan sonra Apache config dosyasında user ve grup olarak bu kullanıcıyı göstermek gerekiyor. Bunun için de httpd.conf dosyasını açarak User kelimesini aratın. Aşağıdaki gibi bir alanla karşılaşacaksınız.

User ve Group kısmını oluşturduğunuz kullanıcıya göre tanımlayıp kaydedip dosyadan çıkın.
En son işlem olarak web server restartlayın.

service httpd restart

 

]]>
Apache Web Server Güvenliği Yapılandırması https://exevolium.com/apache-web-server-guvenligi-yapilandirmasi/ Mon, 12 Dec 2016 03:25:07 +0000 http://exevolium.com/?p=578 Merhaba,

10 adımda Apache web server güvenliği hakkında ufak bir içerik girdisi oluşturmaya karar verdim. Elbette Apache kullanmak yerine Nginx veya daha farklı yapılar kullanıyor ve geçilmesini benim gibi öneriyor olabilirsiniz ancak halen ağırlıklı olarak Apache kullanıldığı için önceliği buna vermeye karar verdim. Sırayla ilk adımda yapılabilecekleri listeleyeceğim. Her başlığın üzerine tıklayarak nasıl yapılacağının anlatımını yaptığım sayfaya geçebilirsiniz.

1. Apache ve Php Versiyonunu Gizleyin:
Ek bir ayar yapmadığınız zaman server signature aktif durumda olur. Peki bu ne demek? Keşif yapan kişinin Apache mi, Nginx mi kullandığınızı ve Apache kullanıyorsanız deneyeceği exploitleri bilmesi demek. Ona göre Layer7 saldırı türlerini de deneyecektir. Örneğin Slowloris, Hammer, Arme vs. deneyebilir ve exploit açığını kullanabilir. Bkz:Apache 2.2.22 Exploit List

*Örneğin slowloris.cf domainimin çalıştığı sunucuda hem signature pasif hem de Cloudflare ile maskeledim.


2. Dizin Listelemesini Kapatın:
Default Apache yapılandırmasında dizin içerisinde index dosyası olmadığında dizine istek geldiğinde dosyalar listelenir. Bu da ftp alanınızdaki her şeyin public olmasına yol açar. Bu sebeple bunun gerekmesi halinde kapatılması önemlidir.

<Directory /var/www/html>
Options -Indexes
</Directory>

3. Apache Versiyonunu Güncel Tutun:
1. maddede aktif olan exploitlerin ve güvenlik güncellemelerini belirten bir link belirtmiştim. Oradan da görebileceğiniz üzere aralıklarla güncelleme yapmak gerekiyor ancak update çıktı diyerek hemen güncelleme yapmayın. Önce biraz bekleyin, stackoverflow ve diğer sitelerde bir bug veya sorun belirtilmiş mi? Sonra iOS güncellemeleri gibi perişan edebilir.

httpd -v
yum update

4. Gereksiz Modülleri Devre Dışı Bırakın:
En nihayetinde Apache modüllerden oluşan bir yapı ve modüllerde oluşacak bir açık tüm projenizi mahvedebilir. Bu nedenle httpd.conf içerisinde tanımlı olan aktif modülleri gözden geçirin. İşinize yaramayacak olanları kaldırın.


Buradan hangi modülün hangi işe yaradığının anlatımı bulunuyor.
Apache Sürüm 2.4.x Module
CentOS’da /etc/http/conf/httpd.conf altında bulabilirsiniz. Ya da locate yapıp httpd.conf dosyasının olduğu yolu bulabilirsiniz. Orada LoadModule diye arattığınızda bulacaksınız.

5. Apache’nin Çalışması İçin Ayrı User/Group Oluşturma:
Varsayılan bir kurulum ile Apache süreçlerini nobody veya daemon kullanıcısı ile çalıştırır. Güvenlik nedenlerinden ötürü Apache’yi ayrıcalıksız kendi hesabında çalıştırmak gerekir. Örneğin: http-dev.

6. Dizinlere Erişimi Kısıtlayın:
2. maddede detayından bahsetmiştim. Burada ise httpd.conf dosyasına ekleyeceğiniz bir kod ile bu kısıtlamayı sağlayabilirsiniz.

<Directory />
Options None
Order deny,allow
Deny from all
</Directory>

7. Güvenlik Modüllerini Yükleyin:
Burada önünüze bir sürü seçenek çıkacak. Kimisi Apache 2.2.x sürümlerinde tam performans çalışırken, 2.4.x sürümlerinde crash sebep olmaktadır. Ancak ben Apache 2.2.x için vazgeçilmez olan mod_qos (2.4’te sıkıntı yaratıyor), mod_security ve mod_evasive’den bahsedeceğim. Apache yapılandırmasıyla ilgili şu an stabil yapıya ulaştığımda ayrı bir konu olarak paylaşacağım. (https://slowloris.cf domainim üzerinden testleri sürdürüyorum.)

8. İstek Boyutunu Limitleyin:
Varsayılan ayarlarda http requestin total boyutu için sınır yoktur. Bu sebeple izin verildiğinde Dos Attack kurbanı olmanız mümkündür. Apache yönergesi (LimitRequestBody) ile istek boyutunu dizin kapsamında sınırlayabilirsiniz.

9. Apache Loglamasını Aktifleştirin:
Apache, işletim sisteminizin günlüğe kaydetme işleminden bağımsız olarak oturum açılmasını sağlar. Apache günlüğünü etkinleştirmek web sunucunuzla etkileşime giren kullanıcıların girdiği komutlar gibi daha fazla bilgiyi sağlar.

10. Web Servisi Monitör Edin:
Zabbix, Argus, PRTG, Nagios veya daha farklı monitör sistemleriyle düzenli takip etmek ve logstash ile loglattırmak. Nagios kurulumu ve yapılandırmasından bahsetmiştim, buradan inceleyebilirsiniz.
Icinga kurulumu da benzerdir.

]]>