3 раза за последние 48 часов у нас был примерно 6-кратный всплеск трафика, который длился несколько часов. Сервер обрабатывал это каждый раз, но едва. Это был почти весь трафик плохих ботов (или, возможно, неудачные попытки DOS). Мне нужно установить какую-то стену, чтобы автоматически блокировать это, пока это происходит (не вручную просматривая журналы на следующий день). Конечно, в моих поисках часто встречается fail2ban, но я не могу найти никаких хороших примеров или документации, чтобы узнать, подходит ли он мне.
Мне нужно реализовать фильтр для apache, который игнорирует большую часть журнала в зависимости от регулярного выражения как для запрошенного URL-адреса, так и для пользовательского агента. И только потом начинает определять, слишком ли нас поражает IP.
Проблема в том, что я не могу просто использовать простой порог запрета на IP-адреса. За каждым законным запросом страницы сразу же следует множество других запросов на поддержку контента (GET / images / ...; GET / extensions / ...; GET / skins / ...), поэтому просто блокируем любого, кто сделал хотя бы 10 запросов. за 2 секунды догонит почти всех. Мне нужно отфильтровать эти записи из любых вычислений и считать только запросы верхнего уровня.
Но даже если я получу его, чтобы он смотрел только запросы верхнего уровня (так что теперь, возможно, я забаню 20 запросов за 10 минут), тогда моя проблема будет в том, что я могу легко заблокировать поисковые роботы, которым я счастлив обслуживать страницы (GoogleBot , Slurp и т. Д.), Так что я тоже хочу пропустить их.
Является ли Fail2Ban или любой другой продукт настолько надежным? Я могу довольно быстро получить необходимую информацию с помощью пары операторов grep -v, но существует ли уже существующая программа, которая уже делает это?