The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Начальная защита Apache (apache security mod_security dos flood)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: apache, security, mod_security, dos, flood,  (найти похожие документы)
From: sapran <sapran@gmail.com.> Newsgroups: email Date: Mon, 19 Apr 2006 14:31:37 +0000 (UTC) Subject: Начальная защита Apache В общем проба пера. Прошу строго не судить, так как на авторство этого материала не претендую. На самом деле пришло время составить некое подобие HOWTO по начальной защите веб-сервера после установки. Итак приступим. Проблема веб-серверов делятся на две части: (D)DoS и XSS/XST. 1. Распределенная атака отказа в доступе (Distributed Denial of Servece Attack). Подробно об этом стихийном бедствии вам расскажут на специализированных сайтах, посвященным проблемам ИТ-безопасности. В общем итоге смысл следующий: отказ в обслуживании вашего сервера вызывается массой фальшивых запросов от контроллируемых злоумышленниками ботов. Боты размещаются на взломанных машинах по всему миру и соединяются с IRC-каналами для дальнейшего получения распоряжений. Когда поголовье стада ботов (bot herd) достигает достаточного (по мнению хакера) количества, злоумышленник выходит на канал и командует операцией. Как правило подобные мероприятия призваны вынудить собственника порно-сайта или интернет-магазина, действующего на грани закона, к выплате некой суммы в СКВ. Но ведь и тренероваться им где-то нужно, правда? Так что подготовимся к этому, даже если нам подобное явно не грозит. Помогут нам два модуля: mod_security & mod_evasive. 1.1 mod_security Этот пес живет по такому адресу: http://www.modsecurity.org/ Процедура установки не составит труда, но я ее прокомментирую. # wget http://www.modsecurity.org/download/modsecurity-apache-1.9.2.tar.gz # tar zxvf modsecurity-apache-1.9.2.tar.gz # cd modsecurity-apache-1.9.2 # /usr/sbin/apxs2 -cia apache2/mod_security.c Последняя строка соберет и установит модуль. Очевидно, делать это нужно соответствеющим apxs/2 для програмных файлов в диреториях apache1 и apache2 дерева исходников, модули разняться для разных веток сервера. Теперь модуль нужно отконфигурировать. Это лучше сделать в отдельном файле. Найдите где в вашей системе расположены файлы конфигурирования модулей. В моей Gentoo 2006.0 это происходит здесь: # vi /etc/apache2/modules.d/mod_security.conf Примеры конфигурации модуля находятся здесь После наполнения файла mod_security.conf его следует включить в конфигурацию. Убедитесь в том, что он считывается сервером на старте, то есть найдите соответствующую директиву Include в файле httpd.conf 1.2 mod_evasive Проект расположен по адресу: http://www.nuclearelephant.com/projects/mod_evasive/ Устанавливаем модуль. # wget http://www.nuclearelephant.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz # tar zxvf mod_evasive_1.10.1.tar.gz # cd mod_evasive_1.10.1 # /usr/sbin/apxs2 -iac mod_evasive20.c (Или же # apxs -iac mod_evasive.c для пользователей первой ветки.) Конфигурируем модуль: /etc/apache2/modules.d/mod_evasive20.conf <IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 </IfModule> Теперь можно перезапустить сервер как это принято в вашей системе. Примечание: Процедура apsx2 -iac <mod_code.c> в конце исполнения добавляет в файл конфигурации httpd.conf строку подключения модуля. Убедитесь, что нечто подобное присутствует в настройках: LoadModule evasive20_module lib/apache2/modules/mod_evasive20.so LoadModule security_module lib/apache2/modules/mod_security.so Примечание: Еще одно. Для того, чтобы быть точно уверенными в том, что модули поднялись сервером и вступили в строй, нужно сделать следующее. В основном файле конфигурации впишите фрагменты настройки модулей без обрамляющих директив ... Если сервер загрузится без ругани -- значит эти команды ему знакомы, а без модулей в памяти это невозможно. Ну разве что вы собрали Apache со встроенными security & evasive. 2. Cross Site Tracing. Информацию о том, что такое Cross Site Scripting можно почерпнуть отсюда: http://httpd.apache.org/info/css-security/ В двух словах: это явление, когда незалатаные нерадивыми программистами дыры в веб-приложениях позволяют кому попало использовать неправильный ввод для нарушения безопасности сайта. Но даже при начальной установке, когда веб-приложения нашим сервером еще не обрабатываются, существуют некоторые нюансы, способные скомпрометировать безопасность сайта в будущем. Это Cross Site Tracing. Не путайте XSS и XST. XST подробно описан в этом документе: http://www.kb.cert.org/vuls/id/867593 В общем это случается, когда после настройки веб-приложения администратор сайта не отключает разрешенный по умолчанию метод HTTP TRACE. Этот метод осуществляет ничто иное, как эхо-ответ вашего запроса, отправленного серверу. В идеале ничего страшного в этом нет. Но представьте себе картину, когда ответ на запрос, отправленный клиентом, получает злоумышленник? Это возможно в комбинации с многочисленными уязвимостями браузера. В таком случае в руках у хакера оказывается как минимум информация из HTTP-заголовков, которая может содержать чувствительные данные, например cookies. Чтобы подобное было невозможно, сделаем следующее. Добавим директиву TraceEnable off в корневую часть httpd.conf Также, для пущей уверенности, можно установить и настроить модуль mod_rewrite. Модуль как правило поставляется с Apache изначально, а настраивается в нашем случае вот так: RewriteEngine On RewriteCond %{REQUEST_METHOD} ^TRACE RewriteRule .* - [F] Добавьте этот код в главную настройку, или секции ваших виртуальных хостов. Собственно, все. Буду рад фидбеку =) PS Массу информации о состоянии защиты вашего сайта можно почерпнуть из результатов сканирования утилитой nikto.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, creator (??), 21:08, 19/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос к автору: ты опытным путем все испробовал ????
     
     
  • 2.14, sapran (ok), 11:32, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    нет конечно, пришлось и доки почитать.
     

  • 1.2, Michael Shigorin (?), 21:20, 19/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ...начинается с использования 1.3.x, боюсь.
     
  • 1.3, whisper (??), 21:29, 19/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кроме того, чтобы поставить, человеку еще бы не помешало знать, что это такое и с чем его едят, хотя бы перевод бы сделал небольшой с офф сайтов.

    Мне вот директивы
                DOSHashTableSize 3097
                DOSPageCount 2
                DOSSiteCount 50
                DOSPageInterval 1
                DOSSiteInterval 1
                DOSBlockingPeriod 10
    ни о чем не говорят, только методом доктора Догадайсясам и т.п.

    В обсчем тема сисек не раскрыта. Низачот!

     
     
  • 2.8, Ldar (??), 06:13, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    в самом начале написано, что это является неким HOWTO соотвественно о опяснениях что ето и зачем не обязано быть ... ссылки на материалы предоставлены!
    В целом, как мне кажется, написано неплохо, коротко и по сути.
     
  • 2.15, sapran (ok), 11:34, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    ок, приму к сведению, что для отлельных читателей требуется подробное описание директив.
     
  • 2.21, yurik (??), 15:10, 21/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Автору
    Ничего так для начала. Ну в стартовый минимум для апача я бы дописал  mod_load.c ну и лимиткон какой-то.

    Может и вправду сюда удафком не надо перетягивать.

    Специально для whisper

    Ну а по директивам...
    Разве обладая хоть малейшими познаниями в английском плюс переводчиком, нельзя перевести README от модуля?

    DOSHashTableSize 3097  
    DOSPageCount 2     <-- Сколько запросов к старнице можно...
    DOSPageInterval 1  <-- за вот это время (в сек.)

    DOSSiteCount 50    <--Сколько запросов ко всем  старницам домена можно...
    DOSSiteInterval 1   <--за вот это время (в сек.)

    DOSBlockingPeriod 10  <-- На сколько заблокировать айпи (в сек.)

    Опционально есть еще директивы в модуле
    DOSSystemComand   <-- Можно описать системную команду для блокировки
                                                   (напр. через  /sbin/iptables -A INPUT -p tcp --dport 80 -s  %s   -j REJECT  
                                                    В  %s  передается от модуля айпи  )
    DOSLogDir                  <--  Директория для хранения список заблокированных айпи  (По умол. /tmp)
    DOSEmailNotify         <--  На этот емейл админа отсылать письмо при блокировке
    DOSWhitelist               <--  Список "белых" айпи. Может быть несколько. Можно по маскам определять
                                                    (напр. 127.0.0.* )

     

  • 1.4, Аноним (-), 21:38, 19/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тока надо предупреждать, как кто-то справедливо заметил на опенннете, что этот сам модуль mod_security может быть источником проблем, так как и в нем находили серьезные уязвимости. так то.
     
     
  • 2.5, Квагга (?), 00:31, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Отсутсвие в рабочем Апаче этого самого модуля mod_security - ГАРАНТИЯ получения крупнейших проблем.
    Ваш сервис, если вы какой поддерживаете, просто никому не интересен, только поэтому в нем еще не сидит пяток дор.
     
     
  • 3.9, Doktor (??), 08:02, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Почему проблем то?
     
  • 3.12, изГостей (?), 11:16, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    г-н Квагга, вы уже далеко не в одной теме оставляли замечания типа "JDSAYUGFDSJH не используешь, RFC не читаешь" и в таком духе. На просьбы расшифровать JDSAYUGFDSJH и отослать к номеру RFC еще ни разу не ответили. Может хватит уже? Будьте любезны, вы не на удафкоме. Хотите поделиться - делайте это аргументированно.
     
  • 3.16, sapran (ok), 11:35, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    давайте продолжим тему и найдем этому недугу лечение. если не лень конечно.
     

  • 1.6, фтщтньщгы (?), 00:36, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Про Trace метод более или менее ясно ... А про остальное ?! Сделайте так и все.. а что,для чего, зачем...
     
  • 1.7, фтщтньщгы (?), 00:40, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>>Ваш сервис, если вы какой поддерживаете, просто никому не интересен, только поэтому в нем еще не сидит пяток дор.
    - А если им кто то заинтересуется, то "дор"ы появятся да :)
     
  • 1.10, gosha_e30 (?), 10:08, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    использовал неделю mod_security на хостинг машине. один геморой с ним, каждый день жалобы что он чтото блокирует. Пришлось нахрен убрать и жить спокойно без него, если Вас начнуть досить Вам прогнут канал Вам и Вашему провайдеру и mod_security никогда не пригодится.
     
     
  • 2.19, gvy (?), 15:17, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >использовал неделю mod_security на хостинг машине. один геморой с ним
    Ну использовать тоже можно по-разному, у нас тут пока один непредвиденный случай только вышел (и то если бы это был коммерческий хостинг с SLA, а не "для себя и друзей, которые тоже фрисофт пилят" -- то тот конкретный паттерн был бы выписан иначе).

    Может, не в модуле дело?

    > если Вас начнуть досить Вам прогнут канал Вам и Вашему провайдеру
    Вы про syn flood что-нить слышали?  Вовсе необязательно "им" убивать канал, тем более если это не деревенский провайдер.  (а оптимистично настроенному, без расчёта на особую клинику с DSL, но с расчётом на кучу медленных дайлапов апачу -- один умник с flashget может оказаться невольным DoS'ером)

     

  • 1.11, Аноним (-), 10:19, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    2Квагга

    Ты уж освети этот вопрос подробнее. Какие проблемы именно?

    А то, для борьбы с ддосом можно использовать и iptables'ы всякие, синкуки=1, ну еще со снортом поразвлекаться.

     
     
  • 2.17, sapran (ok), 11:38, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    можно конечно и поразвлекаться, но это же к Apache непосредственно не относится.
     

  • 1.13, Siava (??), 11:18, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Использую mod_security уже месяца 2, но потратил пару-тройку дней на настройку, чтобы он работал как мне надо. Теперь проблем нет.
    Спасибо за статью, попробую :)
     
     
  • 2.18, Agressor (??), 14:07, 20/04/2006 [^] [^^] [^^^] [ответить]  
  • +/
    2 Siava
    Опиши плиз подробней как у тебя сделано - версию апача, модуля, его настройки (конфиг)
    Я думаю не только мне интерестно будет... Можно и на wiki.opennet.ru запостить.
     

  • 1.20, brAndy_cv (?), 18:39, 20/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще бы неплохо собрать апач с mod_rewrite и в httpd.conf

    RewriteEngine on
    ReWriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    ReWriteRule .* - [F]

     
  • 1.22, brAndy_cv (?), 15:46, 21/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сорри, не заметил в конце :)
     
  • 1.23, Voland (??), 11:11, 24/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Привет!

    Вчера перенес описанную вами атаку осуществленную при помощи ботов(зомби) управляемых через IRC. Но закрыть я их не смог, так как атакующих было слишком много. Наверно инициатору надоело и просто перестал атаковать.

    На Apache установлен mod_security и mod_evasive но они не справились и приходилось блокировать атакующие хосты на фаирволе. В итоге сервер отвечал еле еле ато и совсем не отвечал.

    Меня интересует существует ли какая нибудь защита от какого вида атак?

    Буду благодарен за помощь.

     
     
  • 2.26, sapran (ok), 11:03, 26/05/2006 [^] [^^] [^^^] [ответить]  
  • +/
    >На Apache установлен mod_security и mod_evasive но они не справились и приходилось
    >блокировать атакующие хосты на фаирволе. В итоге сервер отвечал еле еле
    >ато и совсем не отвечал.
    >
    >Меня интересует существует ли какая нибудь защита от какого вида атак?


    я бы ставил для этого Snort и проанализировав поведение атакующих адресов выявлял бы подобные действия и закрывал их на ФВ. просто снорту я в подобных вещах больше доверяю =)

     

  • 1.24, Pticki (?), 15:59, 25/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Sushestvuet. Eto Gbitnie kanali i performance clustered apache.
     
  • 1.25, tor (??), 08:26, 09/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    to Voland
    Поделись ипами атакующих ...
    Я тоже сделал скрипт который закрывает в фаере атакующих ... первый апач все по минимуму ...
     
  • 1.27, Имя (?), 03:45, 25/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > и приходилось блокировать атакующие хосты на фаирволе
    а я пользую простейшие скриптики парсилки логов которые IP автоматом заносят в фаервол
     
  • 1.28, Имя (?), 03:46, 25/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот пример тут - http://sys-admin.org/en/node/36
     
  • 1.29, Anatoly Zimin (?), 13:10, 10/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Давно использую mod_security, замечательная вешь И хочу заметить он не раз меня... большой текст свёрнут, показать
     
     
  • 2.30, WebGraf (?), 01:25, 22/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Многие утверждают что именно мод_секьюрити зачастую блокирует phpmyadmin и другого рода стрыпты
     
     
  • 3.31, Michael Shigorin (ok), 17:29, 26/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Многие утверждают что именно мод_секьюрити зачастую блокирует phpmyadmin и другого рода стрыпты

    Неудивительно с учётом http://secunia.com/advisories/search/?search=phpmyadmin ...

     

  • 1.32, korrado (?), 14:25, 03/12/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на нашем сайте используются подсказки, соответственно пока юзер вводит слово в форму, веб-сервер без конца дергается. И это не давало закрутить настройки Евасива. Не хватает параметра типа DosExclude MyString
    пришлось в исходник модуля просто добавить строчки Check whiterequest:
          /* Check whitelist */
          if (is_whitelisted(r->connection->remote_ip))
            return OK;


          /* Check whiterequest */
          if (strstr(r->the_request, "myString") != NULL)
            return OK;


          /* First see if the IP itself is on "hold" */
          n = ntt_find(hit_list, r->connection->remote_ip);

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру