Merhabalar
Bu pratik blog girdisinde sizlere Nginx versiyon bilgisinin nasıl gizleneceğinden bahsedeceğim. Bizzat kendimde kullanıyorum ve sizinde güvenlik için kullanmanızı şiddetle tavsiye ederim. Nginx web server versiyon bilgisini gizlemek oldukça basit bir işlemdir. Bazen nginx web server olsun vb. servisleriminizin versiyon bilgilerini gizlemek isteriz yani görüntülenmesini istemeyiz. Bunun birçok nedeni olabilir, örneğin bir saldırgan nginx sunucusuna sızmadan önce bilgi toplarken sizin nginx sunucunuzun versiyon bilgisini öğrenip o versiyona ait açıkları araştırır ve bu saldırganın işinin daha kolay olmasını sağlar. (gibi gibi…)
Başlayalım
Nginx web server versiyon bilgisinin nasıl gizleneceğine değinmeden önce aşağıdaki komutu kullanarak nginx web server’a ait versiyon bilgilerini görebilirsiniz.
root# curl -I http://siteniz.com
HTTP/1.1 200 OK
Server: nginx/1.5.6 # <-- Nginx versiyon bilgisi.
Date: Thu, 17 Nov 2014 20:40:18 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 17 Nov 2014 20:37:05 GMT
Connection: keep-alive
ETag: "51f18c6e-264"
Accept-Ranges: bytes
İlk önce nginx.conf dosyası bulunur ve içerisine nano, ee, vi, vim araçları kullanılarak girilir. Bu dosyanın yolu ise /etc/nginx/nginx.conf veya /usr/local/nginx/conf/nginx.conf dosyalarından biri olabilir. Hemen ardından aşağıdaki komut kullanarak dosyanın içerisine girilir ve server_tokens yazan satır bulunur ve server_tokens off; olarak değiştirilir. Ayarlar yapıldıktan sonra CTRL+O kombinasyonuna bastıktan sonra enter tuşuna basıp kaydedebilir ardından CTRL+X kombinasyonuna basarak dosyadan çıkabilirsiniz.
NOT : Dosyayı bulamadığınızı varsayalım böyle bir durumda find / -iname “*nginx.conf*” komutu kullanabilirsiniz.
root# nano /etc/nginx/nginx.conf
server_tokens off;
Ayarların aktif olması için nginx web server’ı yeniden başlatıyoruz. Size uygun olan aşağıdaki komutlardan birisini kullanabilirsiniz.
root# systemctl restart nginx
root# service nginx restart
root# /etc/init.d/nginx restart
Test için aşağıdaki komutu kullanabilirsiniz. Nginx web server’a ait bilgilerin arasında nginx versiyon bilgisinin olmadığını görebilirsiniz.
root# curl -I http://siteniz.com
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 17 Nov 2014 20:40:18 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 17 Nov 2014 20:37:05 GMT
Connection: keep-alive
ETag: "51f18c6e-264"
Accept-Ranges: bytes
Sevgiler.
Merhaba, paylaşım için teşekkürler. Komple Nginx ya da Apache gibi imzaları nasıl gizleyebiliriz?
Merhaba, Hasan bey Komple Nginx ya da Apache gibi imzaları nasıl gizleriz kısmını tam olarak anlayamadım. İmzadan kastınız nedir acaba? Biraz detayına değinirseniz belki yardımcı olabilirim.
Eğer Nginx gibi Apache ‘nin versiyon bilgisini vb.. bilgilerini gizlemek isterseniz aşağıdaki iki link’e göz atabilirsiniz.
http://www.cyberciti.biz/faq/rhel-centos-hide-httpd-version/
http://www.tecmint.com/apache-security-tips/
Merhaba, sadece versiyon değil de, mesela sunucunun Apache mi yoksa Nginx üzerine mi kurulu olduğunu gizlemek istiyorum. Cevap için teşekkürler.
Merhaba,
Güzel bir soru fakat bence gizleyemezseniz. Nmap, telnet vb. araçlar kullanılarak sunucunun üzerinde kurulu web server öğrenilebilir. Apache, Nginx vb.. web sunucularının belli başlı davranışları vardır. Mesela, nmap tarama sırasında karşıdaki hedefe birçok paket yollar ve gelen paketleri inceler. Böyle bir durumda yine web sunucu öğrenilebilir.
Bir çözüm olarak IDS/IPS önerebilirim. Sunucunuzun önüne IDS/IPS koyarsanız ardından Apache, Nginx artık hangisini kullanıyorsanız bunların nasıl davrandıklarını öğrenebilir ardından IDS/IPS ‘de kurallar yazabilirsiniz. Böylelike dışarıdan taramalarda IDS/IPS direkt olarak engelleyecektir. Fakat yine başarılı bir çözüm değil 🙂
Eğer bir çözüm yolu bulursanız banada haber ederseniz sevinirim.