Дружественный серверу. Возможный? - PullRequest
6 голосов
/ 09 июня 2011

Как можно реализовать slowban , который не будет инструментом для DoS на нашем сайте?

Проблема заключается в том, что преднамеренная задержка в обслуживании ответа http сохранит серверресурсы заняты (потоки веб-сервера и, возможно, другие подсистемы).

Ответы [ 3 ]

2 голосов
/ 02 ноября 2012

Если ваше веб-приложение сложное и требует значительных ресурсов, возможно, это неправильное место для реализации медленного банка из-за проблемы медленной атаки .

Вместо этого вы можете представить медленный бан, проксируя ваше приложение через легкий прокси-сервер или веб-сервер, такой как lighttpd или nginx, который обслуживает кеш и статический контент и использует ваш брандмауэр.Оттуда вы можете формировать полосу пропускания в своем брандмауэре, сохраняя при этом необходимые ресурсы относительно низкими, поскольку соединение тролля в основном обслуживается легковесным прокси-сервером, а не тяжелым сервером приложений.

Несмотря на то, что в этом есть некоторые опасности (а именно, чтобы позволить небезопасному приложению вставлять правила на основе ip в ваш брандмауэр), iptables и ядро ​​относительно просты в использовании ресурсов.

Единственное, что вам нужно учитывать, - это количество открытых соединений, которые ваша система может допустить, и когда начинать убивать самые длинные открытые соединения, чтобы освободить место для новых.Определенно подготовьте свой сайт для борьбы с атаками с низкой пропускной способностью .

2 голосов
/ 09 июня 2011

Вы можете объединить медленный банк с мониторингом ресурсов, чтобы, если выяснилось, что пользователь с медленным баном пытается выполнить DoS, вместо этого он будет пермананнирован.

0 голосов
/ 30 августа 2016

Вы можете реализовать клиентскую часть slowban вместо серверной, например:

CSS:

body {
    visibility: hidden;
}

JavaScript:

$(document).ready(function() {
    window.setTimeout(function() {
        $("body").css("visibility", "visible");
    }, /* Slowban delay in miliseconds */);
});

Сервер вообще не будет загружен.

Для дальнейшего предотвращения DoS-атак вы можете установить анти-DoS-программное обеспечение (например, CloudFlare) на свой бэкэнд.

...