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

Apache вылетает из-за ботов

Я использую стек LAMP на сервере AWS Ubuntu. Время от времени (возможно, раз в неделю, раз в две недели) Apache дает сбой и сайт отключается. Глядя на журналы ошибок Apache, я заметил, что эти сбои обычно случаются, когда бот пытается перебрать наш сайт. Например, сегодня он пытался получить доступ к wp-login.php. Наш сайт не использует Wordpress. Итак, мои вопросы ...

1) Почему доступ к wp-login.php вызывает сбой Apache? Разве бот не должен просто получать ошибку 404?

2) Как я могу предотвратить доступ этих вредоносных ботов к моему сайту или его сбои? Я, очевидно, хотел бы занести в черный список любые запросы к / admin, /wp-admin.php и т. Д.

Пожалуйста, простите меня, если это слишком расплывчатый или плохой вопрос. Я новичок в ServerFault (а также в администрировании серверов и веб-разработке в целом).

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


Просмотрите журналы, чтобы определить, почему произошел сбой.

Возможно, он упал из-за нехватки ресурсов, например из-за Linux OOM killer. Проведите анализ емкости. Убедитесь, что выделенные ресурсы (память) превышают максимально возможное использование (настройка Apache MPM + общая память базы данных).

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

А если он все еще хрупкий, оставьте его за дополнительной фильтрацией. Например, брандмауэр веб-приложения.

Ваш веб-сервер должен быть усилен, чтобы справляться со всем, что ему бросает Интернет.

Для этого я использую три ключевых инструмента: ограничение скорости, CloudFlare и fail2ban.

CloudFlare

CloudFlare отфильтровывает самый плохой трафик, такой как DDOS. У него также есть брандмауэр, который вы можете изменить с помощью API, о котором я скоро расскажу.

Fail2Ban

С Fail2ban вы определяете правила о том, какие действия считаются «плохими» и «плохими». Fail2ban предпринимает действия, основанные на этом - например, немедленно блокирует пользователей, которые делают плохие вещи, и блокирует пользователей после трех «плохих вещей».

Fail2ban обычно изменяет локальный брандмауэр, например iptables, для запрета трафика на веб-сервер. Это эффективно, но вам все равно придется платить за трафик. Альтернативный подход - заставить fail2ban вызывать CloudFlare API для трафика межсетевого экрана на границе, прежде чем он попадет на ваш сервер.

У меня есть статья о том, как это сделать Вот.

Ограничение скорости

Nginx имеет встроенное ограничение скорости, и я предполагаю, что Apache тоже. Он может ограничивать скорость разными способами, но проще всего по IP. Взгляните на документацию Apache.