Grails/Tomcat: предотвращение атак типа «отказ в обслуживании»

У меня есть приложение Grails, работающее на Tomcat, с MySQL в качестве сервера базы данных.

В ходе тестирования я обнаружил, что очень легко создать атаку типа «отказ в обслуживании» на сайте, просто обновив страницу несколько раз (например, удерживая клавишу F5). Это приводит к быстрому увеличению нагрузки на сервер вместе с количеством подключений к базе данных MySQL.

В конце концов, сайт перестает отвечать на запросы, и восстановление нормального состояния может занять несколько минут.

Может ли кто-нибудь порекомендовать способы отладки этого?

Должен ли я смотреть на кэширование?


person user2156803    schedule 12.03.2013    source источник


Ответы (1)


Я не рекомендую обрабатывать DOS-атаки на уровне Grails. Я всегда рекомендую размещать сервер, такой как nginx или apache, перед веб-приложением java. Затем веб-сервер можно настроить для проксирования вашего веб-приложения. Брандмауэр перед веб-сервером создает еще один уровень безопасности. Если вы попытаетесь противостоять DOS-атакам на уровне веб-приложений, вы, скорее всего, опоздаете.

Краткий справочник по DOS находится здесь: http://en.wikipedia.org/wiki/Denial-of-service_attack

Кстати, кеширование не предназначено для устранения DOS-атак. Он предназначен для повышения производительности приложений. Многие DOS-атаки происходят на уровне сокетов.

Опять же, я бы не рекомендовал предотвращать DOS на уровне веб-приложения. Независимо от того, на каком языке вы пишете.

Другой вопрос, который у меня есть, это то, что вы нагрузочно тестировали свое приложение? Возможно, вы столкнулись с проблемами базовой производительности. Я бы порекомендовал обратить внимание на коммерческий инструмент или веб-сервисы по настройке нагрузки. Я предполагаю, что на самом деле вы видите проблему с производительностью пользовательского веб-приложения, а не проблему с DOS.

person chrislovecnm    schedule 12.03.2013