3 Haziran 2018 Pazar

Basit bir Brote Force Savunma stratejisi


Merhaba, bu yazıda brute force ataklarına karşı kullanabilecek basit bir stratejsi ve kod parçacığı paylaşacağım. Halihazır da Apple'in da kullandığı güzel bir strateji.

Strateji basitce şu. Atak yemesi muhtemel sayfalarınızda aynı IP adresinden gelen istekleri bir önceki cevap verme süresini iki katıyla çarparak cevap vermek.
Yani ilk istek 1 saniyede gelecek, 2. istek 2 saniye. 3. istek 4 saniyede. Süreler böylecek katlanarak devam edecek. Saldırgan 40 50 istek atamadan sistem kendisine cevap vermeyecek hale gelecek bu sayede.

Aşağıda kısaca metot halinde verdim örneği, actionfilter olarak da hazırlanabilir. Tabi session objesini belirli bir süre sonra temizlemeyi unutmayın.

       void DefenceBruteForce() {
            List<KeyValuePair<string, int>> requestCount = Session["requestCount"] as List<KeyValuePair<string, int>>;
            if (requestCount == null) {
                requestCount = new List<KeyValuePair<string, int>>();
            }
            requestCount.Add(new KeyValuePair<string, int>(Request.UserHostAddress, 1));
            Session["requestCount"] = requestCount;
            int delayTime = (requestCount.Where(x => x.Key == Request.UserHostAddress).Count() * 2) * 1000;
            System.Threading.Thread.Sleep(delayTime);

        }

        }