Anti-DDoS: Конфигурирование LightHTTPD
В этой теме я хотел бы рассказать о том, как сконфигурировать сервер Lighthttpd для оптимальной производительности.
Уже из самого названия продукта видно, что этот сервер "лёгкий" - он заточен под максимальную скорость работы.
А знание конфигурации позволит оптимально настроить сервер под Ваши нужды и нагрузки.
Далее я напишу о директивах конфигурации сервера, которые прямым образом влияют на производительность.
Сужаем канал
Директива connection.kbytes-per-second позволяет ограничить скорость соединения с сервером. Это позволит дольше использовать ресурсы канала во время DDoS-атаки.
Следующий код ограничит скорость до 1 мбит/с:
Код:
connection.kbytes-per-second = 1024
По умолчанию директива равна 0, т.е. ограничения отсутствуют.
Кроме того, можно ограничить скорость соединения для определённого хоста (к примеру, если идёт http-ddos на один из сайтов на сервере):
Код:
$HTTP["host"] == "victim.com" {
server.kbytes-per-second = 32
}
Помимо этого, существует плагин
mod_speed.c, который позволяет регулировать скорость прямо в скриптах. Пример на php:
[php]
<?php
header("X-LIGHTTPD-KBytes-per-second: 50");
echo('Content with speed, limited to 50 kbit/s');
?>
[/php]
Ограничиваем запросыДля того, чтобы сессии соединения сбрасывались как можно быстрее и количество запросов в эту сессию было как можно меньше, надо регулировать keep-alive директивы. Вот значения по умолчанию:
Код:
server.max-keep-alive-requests = 16
server.max-keep-alive-idle = 5
server.max-read-idle = 60
server.max-write-idle = 360
Вы можете уменьшать их с увеличением нагрузки (например, во время DDoS-атаки), вплоть до обнуления. Первые две директивы - это соответственно максимальное количество запросов во время сессии и длительность сессии (в секундах)
Регулируем дескрипторыДля каждой открытой, скажем, 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, 2009.