Каждые пару недель у нас возникает проблема, когда один IP-адрес открывает огромное количество процессов Apache одновременно.
Кажется, что каждый раз он подключается к аналогичным страницам, но наши процессы Apache переходят от обычных ~ 20-25 занятых слотов к нашему максимальному (256).
Затем этот IP-адрес постоянно обновляет все запросы, увеличивая нагрузку на наш сервер и резко замедляя работу сайта.
Решение в каждом случае простое; Я узнаю IP-адрес из «состояния сервера» Apache и блокирую IP-адрес с помощью правила IP-таблиц.
К сожалению, IP-адрес меняется каждый раз (он всегда похож, и когда я ищу на хосте "bt openworld"), я не могу круглосуточно войти в систему и добавить правило IP-таблиц.
Чтобы быть ясным, мы обрабатываем сканирование из Google и других поисковых систем без проблем, я не уверен, является ли то, что мы испытываем, вредоносным или нет.
Как я могу ограничить эффект, который это имеет?
Наша установка - это единый сервер, обслуживающий как MySQL, так и Apache.
Мне сообщили, что балансировщик нагрузки - это единственный способ ограничить количество подключений с одного (но меняющегося в зависимости от атаки) IP-адреса.
может что-то подобное поможет. он заблокирует любые хосты, которые открывают более 150 соединений в течение 2 минут (180 секунд):
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 180 --hitcount 150 -j REJECT
вам нужно настроить скрипт, чтобы обычные пользователи никогда не были заблокированы
Ну вы можете использовать некоторые правила iptables чтобы ограничить количество одновременных подключений.
Другое решение - оптимизировать ваше приложение, чтобы они обрабатывались быстрее, используя меньше ресурсов.