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

Tomcat отказ в обслуживании

Последние два дня наш веб-сервер Tomcat 5.5 на базе Linux был сломан за считанные минуты, начав тысячи загрузок и остановив их. Некоторые пути запросов в журнале доступа заканчиваются частью, похожей на "? Jfkdsjkfsdk". Есть ли известные уязвимости систем Tomcat для таких атак?

Обновить: В настоящее время мы используем чистый Tomcat, а не Apache.

Судя по ответам 206, ваш сервер Tomcat подвергается атаке с использованием атаки перекрывающегося диапазона, как описано для Apache в CVE-2011-3192.

Когда в прошлом месяце это была горячая тема, мне казалось, что сервлет Tomcat по умолчанию выглядит уязвимым - см. Вот.

Лучший способ остановить это - запретить обслуживание этих статических файлов сервлетом по умолчанию или удалить Range: Заголовок входящих запросов.

Тысячи подключений - это известная «уязвимость» любого сервера с параметром maxconnections (или который использует много ресурсов для каждого подключения). Как DDOS, скорее всего, они не «останавливают» загрузку, они просто прерывают соединение без RST-пакета, чтобы соединение зависало до тех пор, пока не истечет время ожидания, или используя что-то вроде trickle чтобы подтверждать только несколько байтов за раз, чтобы соединение не истекло.

Все, что вы сделаете для смягчения этого, будет зависеть от всей вашей настройки. Предполагая, что вы в настоящее время используете apache + mod_jk + tomcat, то в дополнение к fail2ban Барта я бы посмотрел на mod_security для обнаружения потенциально злонамеренных запросов и отклонения их. Другая идея заключается в том, что если вы действительно используете tomcat для отправки статических данных, перемещение статических данных для обслуживания непосредственно с apache (или легкого сервера, такого как lighttpd или nginix), используя static.example.com домен. Или, если вам нужно, чтобы ваш код определял, какой файл отправлять, рассмотрите возможность использования mod_xsendfile в apache для обслуживания статических файлов, "на которые указывает" ваше приложение, что позволит tomcat завершить запрос и продолжить работу, пока apache обрабатывает файл (вместо того, чтобы держать как apache, так и tomcat занятыми отправкой файла).

Вы проксируете Tomcat из Apache? В противном случае вы можете быть довольно легко уязвимы для таких атак, как Slowloris. Публично раскрывать Tomcat - плохая идея.

Даже если вы проксируете через Apache, вам нужно быть осторожным, чтобы защитить от атак в стиле Slowloris с помощью mod_antiloris, а еще лучше использовать nginx для вашего внешнего прокси - сервера, который оказался неуязвимым для атаки Slowloris.

Шейн Мэдден есть лучший ответ, сначала прислушайтесь к его совету.

Я не знаю ни одного, но это не значит, что его нет. Используйте что-то вроде fail2ban для поиска в журналах этих запросов и автоматической блокировки IP-адресов.

Вы также можете работать над установлением ограничений ресурсов / квот для ограничения запросов на загрузку, прокси / кеширования для уменьшения нагрузки и предупреждений, чтобы уведомить вас о том, когда это происходит. Наряду с ограничением наших исходящих запросов, потому что даже если вы не подвергались DDoS-атакам, вы не хотите, чтобы законные запросы превышали доступную пропускную способность.

Большинство уязвимостей будет «владеть» вашим сервером; сбой / ddos'ing это контрпродуктивно в этом отношении. Единственная причина убить сервер, на самом деле, - это если у кого-то есть топор против вашей компании.