Web sunucu denilince akla ilk gelen isimler Apache, IIS ve nginx ‘dir. Bu yazımızda web sunucu dünyasının en sık kullanılan web sunucusu olan Apache ‘de web isteklerinize karşılık sunucu tarafından dönen Server başlık bilgisinin nasıl daha güvenilir hale getirebileceğimizi göreceğiz.
Bu çalışma için sanal linux sunucu üzerine apache2 paketi kuruldu. Varsayılan olarak Apache sunucu ile ilgili konfigürasyonlar /etc/apache2 yer alıyor. Web sunucusuna ise http://localhost ile erişilebildiği varsayılmıştır.
Server başlık bilgisi nedir ?
İstemci ile yapılan isteğe karşılık sunucu tarafından dönen başlık bilgisi içerisinde yer alan Server: adlı kısımdır. Örneğin komut bazlı bir istemci olan curl ile nasıl göründüğüne bakalım.
Server başlık bilgisi neden önemli ?
Aslında bir sunucunun ne olduğunu anlamanın bir çok yöntemi var. Ancak server bilgisi vererek karşıdaki kötü niyetli bir kimseyse adamın işini daha da kolaylaştırmış oluyoruz. Örneğin bir üstteki resimde sunucunun yanı sıra detaylı version bilgisini de veriyoruz. Çalışma için kullanmış olduğum sanal sunucu kali. Kali ise debian tabanlı. Bunu da görebiliyorsunuz.
Kullanıcı sunucuya ve versiyona spesifik çeşitli araştırmalar yaparak sunucunun zaaflerını istismar edebilir. Bu yüzden elimizden geldikçe bu alanda çıkacak bilgileri karşı tarafın kötü niyetli olabileceğini düşünerek kısıtlamak doğru çözüm olacaktır.
ServerTokens
Server başlık bilgisini malesef diğer bazı başlıklar gibi “gösterme (unset)” diyemiyoruz. Yukarıda ekran görüntüsündeki bilgi kurduğumuz apache ile varsayılan olarak genel yapılandırma ile verilen bilgidir.
Bu bilgiyi tabi ki değiştirebiliriz. Bunun için ilk olarak ServerTokens bilgisi sistemimizde nerelerde geçiyor küçük bir aramayla görelim.
Evet security.conf dosyası içerisinde bunu yapılandırabiliyoruz. Açalım bu dosyayı ve bakalım neler yapabiliyoruz.
İlgili ayarın olduğu kısımda ServerTokens (çoktan-aza) bilgi verecek şekilde Full, OS, Minimal, Minor, Major ve Prod değerlerinden birini alabiliyor. Kurulumuzla ile birlikte varsayılan olarak OS verilmiş. Şimdi bunların farklarını tekrardan curl ile istek yaparak görelim
ServerTokens Full
ServerTokens OS
ServerTokens Minimal
ServerTokens Minor
ServerTokens Major
ServerTokens Prod (en az bilgi)
Server bilgisini tamamiyle manipüle etmek
Normal koşullarda Prod seçeneği ile en az bilgiyi vermek en güzel seçenek. Peki bu bilgiyi istediğimiz gibi değiştiremez miyiz ? Tabi ki değiştirebiliriz.
Bunun için en kolay yöntetm ise apache’deki en sevilen modüllerinden biri olan modsecurity modunu kurup aktif etmek gerekecektir.
apt-get install libapache2-mod-security2 a2enmod security2 mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Modsecurity aktif edildikten sonra ise konfigürasyon dosyası içerisine SecServerSignature ile aşağıdaki gibi istediğimiz değeri verilebilir.
Tekrar istek yaptığımızda başarılı bir şekilde Server bilgisinin değiştiği görülebilir.