Nginx ile Tehlikeli HTTP Methodlarını Engelleme
İnternet ortamında web sunucuları, çeşitli HTTP metodları aracılığıyla istemci ile iletişim kurar. Ancak, bazı metodlar, özellikle doğru yapılandırılmadığında, güvenlik açıklarına yol açabilir. Bu nedenle, Nginx kullanırken, sadece ihtiyaç duyulan HTTP metodlarını aktif tutup, tehlikeli olanları sınırlandırmak kritik önem taşır. Bu uygulama, potansiyel saldırı vektörlerini azaltır ve web uygulamanızın güvenliğini artırır.
İlk olarak, en sık kullanılan ve güvenlik açısından riskli olabilecek metodlar arasında PUT, DELETE, TRACE ve CONNECT bulunur. Bu metodlar, özellikle saldırganların sunucu üzerinde izinsiz değişiklikler yapma veya saldırı araçlarıyla sunucu durumunu gözlemleme amacıyla kullanılabilir. Bu nedenle, varsayılan olarak bu metodların engellenmesi güvenlik politikalarının temelini oluşturur.
Nginx'te bu işlemi gerçekleştirmek için, "limit_except" direktifini kullanabilirsiniz. Bu direktif, belirli URL veya konfigürasyon bloğu içinde sadece izin verilen metodlara ulaşım sağlar. Örneğin:
123456789101112
server {
listen 80;
server_name ornek.com;
location / {
limit_except GET POST {
deny all;
}
# Diğer konfigürasyonlar
}
}
Yukarıdaki yapı, sadece GET ve POST metodlarına izin verir. Diğer tüm metodlar, özellikle PUT, DELETE, TRACE ve CONNECT, otomatik olarak engellenir. Ayrıca, daha kapsamlı bir güvenlik önlemi olarak, global seviyede de uygulama yapabilirsiniz.
Ayrıca, Nginx'in "if" koşullarıyla daha spesifik kurallar koymak da mümkündür. Örneğin, belirli URL'lerde sadece GET ve POST'a izin vermek veya belirli metodları doğrudan loglamak gibi. Ancak, "limit_except" en temiz ve etkili çözüm olarak önerilir.
Son olarak, bu yapılandırmayı uyguladıktan sonra, sunucunuzu yeniden başlatmalı veya konfigürasyonları yeniden yüklemelisiniz:
123
nginx -t
systemctl reload nginx
Bu adımlar, web sunucunuzun sadece güvenli ve gerekli HTTP metodlarına açık olmasını sağlar. Böylece, potansiyel tehlike arz eden metodlar kapatılarak, saldırı yüzeyi önemli ölçüde azaltılır.