Найти на форуме:
Loading




+ Ответить в теме
Показано с 1 по 1 из 1

Тема: Убийца Apache у вас на пороге

  1. #1
    Гизмо Магвай oldengremlin отключил(а) отображение уровня репутации Аватар для oldengremlin

    Регистрация
    02.10.2008
    Адрес
    Киев
    Сообщений
    11,160
    Сказал(а) спасибо
    5,889
    Поблагодарили 12,382 раз(а) в 4,425 сообщениях
    Записей в дневнике
    12
    Изображения
    10

    По умолчанию Убийца Apache у вас на пороге



    Буквально пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлению автора, убивающий Apache начиная от самых старых версий до самых новых.

    И он действительно работает. Скрипт killapache.pl запускает в несколько десятков потоков простой запроc:

    HEAD / HTTP/1.1
    Host: IANA — Example domains
    Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<...>,5-1299,5-1300
    Accept-Encoding: gzip
    Connection: close

    В ответ на такой запрос Apache для подсчета Content-Length собирает в памяти длинный ответ из перекрывающихся кусков запрошенного файла, который может занять и занимает заначительный объём памяти. При этом потребление памяти Apache начинает резко расти, как на том графике в начале, что при должном, совсем небольшом, количестве запросов приводит к DoS даже на приличных серверах.

    Разработчики Apache подошли к этой проблеме серьёзно, инициативные лица уже предложили изменения в RFC, закрывающие эту уязвимостью. Тем временем все сервера стоят открыты и не защищены.
    Как же быть?
    Если у вас перед Apache стоит nginx, то можно вообще ничего не делать, даже если файлы, для которых возможны описанные выше запросы, не раздаёт nginx, потому как по-умолчанию, по крайней мере на версии 1.1.0, nginx не передаёт загловок Range на проксируемый сервер.

    Проверить, уязвим ли ваш сервер к этой атаке легко:

    curl -I -H "Range: bytes=0-1,0-2" -s kherson.volia.com/robots.txt | grep Partial

    Если на такие запросы отвечает Apache и вы видите 206 Partial Content, значит быть беде.

    Запретить nginx проксировать опасный заголовок можно директивой:

    proxy_set_header Range "";

    Если нет nginx?

    Если у вас во внешний мир Apache смотрит напрямую… Вы можете полностью заблокировать проблемный заголовок при помощи mod_headers:

    # a2enmod headers
    RequestHeader unset Range

    Если же вам всё-таки нужен этот заголовок, существует решение на основе mod_rewrite и ещё несколько более сложных с mod_headers.


    Как радует тот факт, что от гордого индейца мы избавились уже достаточно давно ;)
    «Когда у общества нет цветовой дифференциации штанов — то нет цели!»
    http://oldengremlin.blogspot.com/

  2. Эти 3 пользователя(ей) сказали Спасибо oldengremlin за это сообщение:

    blex (26.08.2011), the_aLeXiS (25.08.2011), Вик (25.08.2011)

+ Ответить в теме

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Херсонский ТОП   Рейтинг@Mail.ru МЕТА - Украина. Рейтинг сайтов

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112