Один из моих серверов LAMP был недавно сбит каким-то скриптовым ботом, ищущим эксплойты. Судя по всему, он делал так много запросов в секунду, что перегружал ОЗУ на сервере и на целый час отключил весь мой сайт. Все эти "аттаки" пришли с одного IP-адреса.
Итак, как я могу автоматически и временно заблокировать IP-адрес, делая слишком много обращений к моему LAMP-серверу за короткий промежуток времени? Какой инструмент лучше всего подходит для этой работы, и должен ли я решать это на уровне операционной системы или через PHP?
Вы должны избегать попыток сделать это с помощью PHP. К тому времени, когда PHP включается, уже слишком поздно - память уже распределена.
Вы можете запретить IP-адреса на любом уровне, но самый низкий уровень, который использует наименьшее количество ресурсов, - это маршрут, который вы хотите выбрать. Обычно это брандмауэр. По крайней мере, iptables (linux firewall) - это то, что вы хотите использовать. Есть инструменты, которые упоминали другие, такие как Fail2Ban, которые могут автоматизировать это для вас. Внешний брандмауэр был бы лучше.
Помимо попыток запретить несанкционированные IP-адреса, вы должны попытаться более эффективно использовать свои ресурсы. Если запрос занимает меньше ресурсов, атака будет эффективнее.
Apache также использует много памяти. Если вы используете mod_php, это еще хуже, потому что PHP загружается внутри каждого дочернего процесса Apache. Это означает, что даже запросы к статическому контенту (css / js / images) загружают PHP, даже если PHP не используется. Вы можете решить эту проблему, используя вместо этого FastCGI. mod_fcgid - хороший вариант.
Есть и другие веб-серверы, которые более эффективны с точки зрения ресурсов. Nginx мой любимый. Там также Lighttpd. Многим нравится Litespeed (замена на Apache).
Если вы хотите придерживаться Apache, подумайте над тем, чтобы настроить его как можно лучше. Рассмотрите возможность отключения .htaccess. Вот хорошее объяснение, почему .
источник
Чтобы контролировать или блокировать трафик http, вы можете использовать:
Однако следует помнить, что эти инструменты могут также блокировать / замедлять работу веб-пауков и, следовательно, влиять на SEO.
источник
ossec может делать такие вещи автоматически и прозрачно на основе системных журналов.
источник
man iptables
и понять, что означает каждый флаг и как они работают вместе.NoooBS,
--- наводнение ---
iptables -N logdrop iptables -A logdrop -m последние --set --name черный список
iptables -A logdrop -m limit --limit 1 / s --limit-burst 1 -j LOG --log-prefix "Flood:"
iptables -A logdrop -j DROP
iptables -N ddos iptables -A ddos -m недавний --rcheck - черный список имен - секунд 300 --hitcount 1 -j logdrop iptables -A ddos -m недавний --set - name снова iptables -A ddos -m недавний --update - снова имя --seconds 60 --hitcount 2 -j logdrop iptables -A ddos -j ВОЗВРАТИТЬ
источник