Snowloris nedir? Kısaca bir DOS saldırı yöntemidir. Çalışma mantığı uzun süreli açık HTTP bağlantıları oluşturarak sunucunun yükünü arttırmaktır. Doğru yapılandırılmamış bir apache sunucu her açık bağlantı için işletim sisteminde ayrı bir thread oluşturur. Bu da aynı anda çok sayıda açık bağlantı olduğunda sisteme büyük bir yük bindirir.
Snowloris de tam olarak bunu yapıyor. Perl ile geliştirilmiş bir saldırı aracı olan Snowloris hedef makineye sürekli olarak 80 port adresinden bağlanıyor ve bu bağlantıyı açık tutuyor. Bu şekilde karşı sunucuda çok sayıda açık bağlantı oluşuyor. Timeout’a düşen bağlantılar için yeni bağlantı tekrardan oluşturuluyor. Bu şekilde yüksek bant genişliğine sahip olmadan etkili saldırılar yapılabiliyor.
Snowloris nedir, nasıl engellenir, nasıl koruma sağlayabiliriz
Snowloris açıkçası bugünün internetinde çok ciddi bir tehdit değil. HTTP2 ile birlikte çoğu sunucu zaten anlık çoklu bağlantı beklentisi ile tasarlanıyor. Açıkçası en kolay çözüm Apache’yi kenara bırakıp nginx kullanmak. Nginx her bağlantı için ayrı thread oluşturmuyor, bunun yerine blocking IO alt yapısı kullanarak tüm istekleri çok az sayıda thread ile karşılayabiliyor.
Nodejs ile oluşturulan sunucular da bu şekilde çalışıyor. WebSocket uygulamalarının yapısı gereği anlık çok bağlantı gerektirdiğini düşünürsek bu şaşırılacak bir nokta değil. Benzer şekilde GoLang ile geliştirilen web uygulamaları da bu korumaya dahili olarak sahip. Go’nun standart kütüphanesindeki web sunucusu da blocking IO kullandığı için bu saldırıdan etkilenmiyor. Yani modern webte Snowloris devri kapandı diyebiliriz.