![]() |
Anti-DDoS: Конфигурирование LightHTTPD
Anti-DDoS: Конфигурирование LightHTTPD
В этой теме я хотел бы рассказать о том, как сконфигурировать сервер Lighthttpd для оптимальной производительности. Уже из самого названия продукта видно, что этот сервер "лёгкий" - он заточен под максимальную скорость работы. А знание конфигурации позволит оптимально настроить сервер под Ваши нужды и нагрузки. Далее я напишу о директивах конфигурации сервера, которые прямым образом влияют на производительность. Сужаем канал Директива connection.kbytes-per-second позволяет ограничить скорость соединения с сервером. Это позволит дольше использовать ресурсы канала во время DDoS-атаки. Следующий код ограничит скорость до 1 мбит/с: Код:
connection.kbytes-per-second = 1024Кроме того, можно ограничить скорость соединения для определённого хоста (к примеру, если идёт http-ddos на один из сайтов на сервере): Код:
$HTTP["host"] == "victim.com" {PHP код:
Для того, чтобы сессии соединения сбрасывались как можно быстрее и количество запросов в эту сессию было как можно меньше, надо регулировать keep-alive директивы. Вот значения по умолчанию: Код:
server.max-keep-alive-requests = 16Регулируем дескрипторы Для каждой открытой, скажем, php страницы на сайте создаётся файловый дескриптор. Если идёт атака, то файловых дескрипторов создаётся очень много, и если их количество превысит установленый лимит, сервер перестанет отвечать на запросы. Поэтому при больших нагрузках рекомендуется увеличивать значение директивы server.max-fds. По умолчанию оно равно 1024. Данная директива работает лишь в случае, когда lighthppd запущен под root. Код:
server.max-fds = 4096Директива server.max-connections служит для определения максимального количества соединений сервера. По умолчанию она равна 1024, как и server.max-fds, но рекомендуется устанавливать для неё значение, равное 1/2 или 1/3 от значения server.max-fds, поскольку не все файловые дескрипторы отвечают соединениям - многие используются для fastcgi или файлов. Всё Больше информации можно найти на lighttpd.net. Удачи в Анти-ДДоСе! (c) BECHED aka Root-access, 2009,http://ahacc.ru/forum/showthread.php?t=35# |
Добавлю ещё пару фраз.
Баним IP-адреса Если атака ведётся с какого-то диапазона IP-адресов или с нескольких IP-адресов, логично забанить эти адреса. Для этого воспользуемся условной конструкцией, глобальными переменными и регулярным выражением: Код:
$HTTP["host"] == "victim.com" {Вот ещё некоторые меры, которые могут помочь для экономии трафика: бан ботов по user-agent и анти-хотлинкинг. User-Agent банится так: Код:
$HTTP["useragent"] =~ "libwww-perl" {Хотлинкинг же запрещается следующим образом: Код:
$HTTP["referer"] !~ "^($|http://vitim\.com)" { |
Цитата:
А если например идет DNS!(в Black Energy Ddos bot-самый распространенный ддос-бот в паблике есть возможность атаки на DNS сервера) Что можно применить? |
Цитата:
Конечно не часто, но всё бывает, особенно, если сервак слабый, и его можно уложить даже несколькими ботами с хорошим каналом. Насчёт DNS - собственно, это уже другая история. Приведённые в данной теме меры помогут против самого распространённого вида атак - http-ddos'а. Стоит почитать про fail2ban - этот пакет помогает при разных видах атак, в том числе и DNS DDoS'е, кроме того, предотвращает брутфорс, в общем очень полезная штука. |
Ещё добавление
Распределяем нагрузки LightHTTPD позволяет производить LoadBalancing (то есть, распределение нагрузки) между разными fastcgi-серверами. К примеру, у Вас есть сайт, написанный на PHP, и Вы хотите разгрузить его. Есть фронтэнд с LightHTTPD и 2 бэкэнда с FastCGI на 1000 порту. IP-адрес первого бэкнда - 192.168.1.10, а второго - 192.168.1.11. Пишем в lighttpd.conf: Код:
fastcgi.server = ( ".php" => После чего, список снова отсортировывается. Таким образом, можно значительно снизить нагрузку на основной сервер. |
Использую LightHTTPD для flv streaming. Ограничую отдачу по подключению, тоесть - connection.kbytes-per-second = 128. Сейчас в связи с переходом на mp4 появилась необходимость в начале подключения выдавать 2 Мбита а через 5 секунд обратно возвращать на 1 Мб.
Можно ли это сделать с помощью Light? |
Цитата:
Средствами конфигурации LightHTTPD динамически менять эту конфигурацию нельзя... Возможно Вы найдёте решение в http-заголовках. Но тогда придется обновлять страницу, т.е. сначала отправляется: PHP код:
PHP код:
|
Не. При стриминге (точнее перемотка видео ролика) страничка не обновляется а просто с флешплеера посылается запрос на Лайти с той секундой откуда нужно стартовать видеоролику. ОТ тут то и нужно чтоб при старте он выдал несколько Мбит а потом уже можно и 1 Мбит.
Я просто когда-то где-то встречал про «connection.burst» для Light. Но не разобрался потому что надобности тогда не было и инфу не сохранил. Да и не помню может это дополнительный модуль. Но всерано спасибо за ответ. Можно ли так решить конкретно Ваш вопрос, я с ходу сказать не могу...[/QUOTE] |
Цитата:
А, ну так вот же этот патч: http://www.debian.co.il/2009/09/lighttpd-burst-aka-faststart-patch/ |
Да это я видел. Это первое что выдает гугл по данному запросу. Но к сожалению мой Light под виду и это тут не поможет…
|
| Время: 09:26 |