Назад | Перейти на главную страницу

Как обрабатывать большое количество подключений с IP-адреса?

Каждые пару недель у нас возникает проблема, когда один 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 чтобы ограничить количество одновременных подключений.

Другое решение - оптимизировать ваше приложение, чтобы они обрабатывались быстрее, используя меньше ресурсов.