Apache Web Sunucusu Sıkılaştırma Konfigürasyonları ~ BTRiskBlog Pentest, ISO27001 ve BT Denetimi Hakkında Herşey
Apache Web Sunucusu Sıkılaştırma Konfigürasyonları
Apache, açık kaynak kodlu bir web sunucu programıdır. Nisan 2014 itibarıyla Netcraft tarafından 958.919.789 web sitesinden bilgi toplanarak yapılan araştırmaya göre interneteki sitelerin yüzde %37.74’dü Apache Web sunucusu kullanmaktadır. Bu blog yazımızda Apache sunucu güveliğini sağlamak için yapılması gerekenleri ele alacağız.
Apache web sunucusunda yapılandırma dosyası httpd.conf dosyasıdır. Bazı işletim sistemleri ve bazı Apache web sunucusu sürümlerinde yapılandırma dosyasınında farklılıklar gözlenebilmektedir. (Örn: apache2.conf)
Öncelikle Apache web sunucusu güvenliği konusunda yapabileceğimiz ilk şey Apache web sunucumuzu güncel tutmak olmalılıdır.
Not: Aşağıda anlatılan yöntemler uygulandıktan sonra aktif olması için Apache Web Sunucu Servisi yeniden başlatılmalıdır.
Sunucu başlığının kısıtlanması
Kullanılan sunucu teknolojisi ve versiyonunun (bknz. Resim 1 ve Resim 2) bilinmesi saldırganın etkili saldırı yöntemleri bulmasını kolaylaştırır. Sunucu bilgisini kısıtlamak için yapılandırma dosyasına aşağıdaki komutlar eklenmelidir.
ServerSignature Off komutu ile hata sayfası ve benzeri sayfalardaki sunucu bilgisi gizlenir. (Resim 3)
ServerTokens Prod komutu ile sadece sunucu adının gösterimini sağlanır. Sunucuya ait herhangi bir versiyon bilgisi gösterilmez. (Resim 4)
Kullanıcı grup haklarının düzenlenmesi
Apache web sunucu başlatıldığın anda root kullanıcısı ile başlar daha sonrasında tanımlı kullanıcıya geçiş yapılır. Apache web sunucusunun root kullanıcı erişimi ile başlamasının temel nedeni bazı servislerin çalışması sadece root yetkisi ile gerçekleşmektedir. (Örneğin 80 portunun aktif hale getirilmesi işlemi için root hakkı gerekmektedir.) Tanımlı kullanıcı olarak root kullanıcı kullanılmamalıdır. Kullanıcı ve grup hakları düzenlenmeli uygulama bazında gerek görünen haklar atanmalıdır. Eğer bu şekilde yapılmayıp her uygulamaya root erişimi verilirse ortaya çıkabilecek güvenlik açıklıklarında sisteminiz savunmasız kalabilir.
Yukarıda da belirtildiği üzere kullanıcı haklarını düzenleme gerekliliği doğmaktadır. Kullanıcı hakları tanımlarını yaptıktan sonra Apache web sunucu yapılandırma ayarlarına
yazılmalıdır. Bu sayede sunucu üzerinde apache kullanıcısı ve apache group hakları ile erişim sağlanmış olur.
Klasörlere ve dosyalara erişimi engellenmesi
Apache güvenlik sıkılaştırmasında en önemli adım Apache’de web sitelerinin bulunduğu klasör haricindeki diğer dizinlerde veya klasörlerde bulunan dosyalara (Örn:Resim5) erişimin engellenmesidir. Bu engellemeye yapmamanız durumunda sistem dosyalarına ve sistem yapılandırma ayarlarının görülebilmesine ve sisteminizin saldırganlara karşı savunması hale gelmesine neden olabilir. Yapılandırma dosyasına aşağıdaki komutlar eklenmelidir.
Yukarıdaki işlemi yaparak web kök dizini hariç tüm klasörlere erişimleri engellenmiş olur. (Örn:Resim 6)
Bir önceki işlemi yaptıktan sonra istediğiniz klasöre erişim iznini aşağıdaki komutları yapılandırma dosyasına ekleyerek yapabilirsiniz.
<Directory /İzin vermek istediğiniz klasörü belirtiniz>
Bu işlemi yaparak sadece sizin izniniz doğrultusunda klasör veya klasörlere izin vermiş olursunuz.
Belirtilen (.dosyauzantısı) bir uzantıdaki tüm dosyalara erişimi engellemek için yukarıda verilen örneğe benzer şekilde aşağıdaki yapılandırma ayarı yapılabilinir.
<Files ~ "/.dosyauzantısı$">
Bu tarz kısıtlamalar genellikle klasör bazlı kısıtlama için kullanılan alt yapılandırma dosyası .htaccess dosyasının doğrudan çağrılmasının engellenmesi için kullanılmaktadır.
<Files ~ "^/.htacces">
.htaccess dosyası klasör tabanlı kısıtlama yapmak için kullanılan bir alt yapılandırma dosyasıdır. Ancak bir alt klasör için .htaccess ile yapılan bir değişiklik genel yapılandırma dosyasının ayarlarını bozabilir ve bir güvenlik açığına sebep olabilir. Bu yüzden .htaccess dosyasının genel yapılandırma dosyasının ayarlarını bozmasının önüne geçilebilinmesi için
komutu genel yapılandırma dosyasının içine eklenmelidir.
HTTP İstek (Request) Metotlarının düzenlenmesi
HTTP 1.1 protokol birden fazla istek(request) metodunu destekler fakat bunların bir çoğu potansiyel riskler doğurmaktadır. Apache ‘de standart olarak OPTIONS, GET, Head, Post, Put, Delete, Trace, Conect metotları aktiftir. Potansiyel risklerden kaçınmak için yapılandırma dosyasına aşağıdaki komutları ekleyelim.
<LimitExcept GET POST HEAD>
Bu işlemi yaparak sadece Get, Post, Head metotlarına izin verilmesi sağlanır.
Apache Web Uygulama Güvenliği
Http Trace Methodunun Kapatılması
Http Trace metodu varsayılan olarak Apache Web sunucuda aktif olarak gelmektedir. Bu metodun açık olması ve XSS açılıklığının barınması durumunda kullanıcı cookie’lerinin ve kimlik bilgilerinin çalınması için kullanılabilinir. Bu tür saldırıları engellemek için yapılandırma dosyası içerisine
Oturum Çerez(ler)ine Httponly İşaretinin Eklenmesi
X-XSS Açıklığına karşı önlem alınması
Header set X-XSS-Protection 0
Zaman Aşımı (Timeout) Değerinin Düzenlenmesi
Zaman aşımı süresi Apache sunucusu üzerinde standart olarak 300 saniyeye ayarlıdır. Servis kullanımı engelleme saldırılarının (DoS) potansiyel etkilerini azaltmak için bu değer düşürülmelidir. Yapılandırma ayar dosyasına aşağıdaki komutu ekleyelim.
Büyük Boyutlardaki İsteklerin Sınırlandırılması
Apache web sunucusunda bir http isteğinin boyutunu sınırlamanıza izin veren çeşitli direktifler sunar. Bu özellik de servis kullanımı engelleme saldırılarının etkilerini azaltmak için kullanılabilir.
Başlangıç olarak LimitRequestBody direktifi kullanılabilir. Bu direktif varsayılan olarak sınırsız olarak ayarlıdır. Eğer 1mb'ın üzerinde dosya gönderimine izin vermiyorsanız yapılandırma dosyasına aşağıdaki gibi yazarak değiştirebilirsiniz. Eğer dosya gönderimlerine (upload) izin vermiyorsanız daha da düşük tutabilirsiniz.
Apache, Apache Web Server Hardening, Apache Web Sunucusu Sıkılaştırma
Ücretsiz VPN Kurulumu
Zamane Yazılımı İle Zaman Damgası Kullanımı
Android SSL Pinning (Certificate Pinning) Hakkında Herşey - Bölüm 2
Apache Web Sunucusu Sıkılaştırma Konfigürasyonları...
Syslog Yapısı ve OpenSSL ile Log İmzalama İşlemler...
Exploit Shellcode Geliştirme - Bölüm-1: Giriş
Exploit Shellcode Geliştirme - Bölüm-2: Shellcode ...
Exploit Shellcode Geliştirme - Bölüm-3: Standart B...
Exploit Shellcode Geliştirme - Bölüm-4: Shellcode ...
Exploit Shellcode Geliştirme - Bölüm-5: Shellcode ...
Exploit Shellcode Geliştirme - Bölüm-6: Shellcode ...
Exploit Shellcode Geliştirme - Bölüm-7: Shellcode'...
Exploit Shellcode Geliştirme - Bölüm-8: Shellcode ...
Exploit Shellcode Geliştirme - Bölüm-9: Shellcode ...