Новости из Блогов Регулирование трафика для web-сервера lighttpd

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 7 Dec 2012.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,482
    Likes Received:
    7,062
    Reputations:
    693
    Регулирование трафика для web-сервера lighttpd
    Алексей Снастин, независимый разработчик ПО, начальник отдела
    Дата: 04.12.2012
    http://www.ibm.com/developerworks/ru/library/l-lighttpd/



    Описание: В статье рассматривается настройка регулирования сетевого трафика для широко известного и достаточно часто применяемого на практике web-сервера lighttpd.


    Введение

    Web-сервер lighttpd (произносится как lighty) с самого начала был задуман как альтернатива "тяжеловесным, корпоративным" серверам. Основными его преимуществами по сравнению с конкурентами стали существенно меньшие требования к ресурсам компьютера, главным образом, к оперативной памяти, скорости и эффективности обслуживания входящих запросов. Автор-разработчик Ян Кнешке (Jan Kneschke) с самого начала взял курс на оптимизацию производительности web-сервера, не забывая при этом об обеспечении высокой степени безопасности. В настоящее время (последняя версия 1.4.30 от 18 декабря 2011 г.) lighttpd поддерживает широкий спектр функциональных возможностей: Web 2.0, FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting и многие другие.


    Предварительные замечания

    Если администратор web-сервера не держит под контролем количество пользовательских соединений и не устанавливает для них необходимые ограничения, то рано или поздно наступает ситуация, в которой ресурсы сервера оказываются полностью исчерпанными. Спамеры, взломщики всех мастей и калибров, всевозможные боты способны "съесть" всю пропускную способность web-сервера. Поэтому для web-сервера необходимо определить разумную политику отслеживания и регулирования соединений, а также установить ограничение на количество установленных соединений в секунду, поскольку по умолчанию lighttpd не предусматривает подобного ограничения. Лимит можно установить на пропускную способность как для каждого отдельного соединения, так и для всех соединений. Кроме того, потребуется изменение параметров сетевого экрана (firewall) для ограничения количества соединений в секунду. Такие настройки позволят постоянно держать под контролем пользовательские соединения.


    Изменение конфигурации

    Первое необходимое действие для того, чтобы получить возможность ограничить трафик, – редактирование файла конфигурации /etc/lighttpd/lighttpd.conf. Разумеется, для внесения изменений в этот файл требуются права суперпользователя root.

    Ограничение пропускной способности можно установить несколькими способами. Во-первых, можно назначить лимит для всех соединений с web-сервером. Требуемое значение задаётся в Кбайт/с. В файл конфигурации /etc/lighttpd/lighttpd.conf следует вписать следующую строку:
    Code:
    server.kbytes-per-second=512
    Это означает, что суммарная пропускная способность всех соединений с контролируемым web-сервером не будет превышать 512 Кбайт/с.

    Во-вторых, ограничение можно установить для каждого отдельного соединения. Для этого в файл конфигурации добавляется такая строка:
    Code:
    connection.kbytes-per-second=64
    Таким образом, для любого соединения с контролируемым web-сервером трафик будет ограничен значением 64 Кбайт/с.

    Третий вариант: ограничение пропускной способности только для соединений, устанавливаемых с конкретным виртуальным хостом. Создание и конфигурирование виртуальных хостов подробно рассматривается в соответствующем разделе документации по lighttpd. В данной статье рассматривается только назначение лимита для трафика, показанное в листинге 1.

    Листинг 1. Установка ограничения трафика для виртуального хоста
    Code:
    $HTTP["host"] == "www.myserv.org" {
      server.kbytes-per-second = 64
    }
    После внесения любых изменений в файл конфигурации /etc/lighttpd/lighttpd.conf необходимо перезапустить сервер lighttpd, например, следующей командой (для её выполнения также требуются права суперпользователя root):
    Code:
    service lighttpd restart
    После перезапуска все внесённые изменения вступят в силу.


    Регулирование установления соединений с отдельных IP-адресов

    Ограничения на количество устанавливаемых соединений с одного IP-адреса регулируются с помощью штатного (для Linux) средства администрирования сетевого экрана (фильтра) iptables. В листинге 2 приведён фрагмент файла shell-скрипта, в котором назначается лимит на соединения с одного IP-адреса.

    Листинг 2. Пример регулирования лимита на соединения с помощью iptables
    Code:
    # Контролируемый временной интервал в секундах
    LIMIT_SEC=90
    # Допустимое максимальное количество соединений с одного IP-адреса
    LIMIT_CNNCT=10
    # ...
    # По умолчанию любое превышение лимита будет игнорироваться - DROP (или возможно REJECT)
    LIMIT_ACTION="DROP"
    /sbin/iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
    /sbin/iptables -I INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update
     \
                   --seconds ${LIMIT_SEC} --hitcount ${LIMIT_CNNCT} -j ${LIMIT_ACTION}
    # ...
    Фрагмент, приведённый в листинге 2, определяет, что любые попытки установления входящих соединений с одного IP-адреса будут отвергнуты, если с данного IP-адреса уже выполнено более 10 попыток установления соединения в течение полутора минут (90 секунд).

    Этот фрагмент (с необходимыми по месту корректировками) может быть включён в shell-скрипт, который устанавливает правила для сетевого экрана в конкретной Linux-системе.


    Заключение

    Web-сервер lighttpd является не только быстрым и эффективным, но и удобным в управлении и конфигурировании. По мнению самих авторов lighttpd, в самых простых случаях конфигурирование сервера занимает от 5 до 10 минут. Такая гибкость позволяет без особых затруднений решать различные проблемы, связанные с безопасностью и производительностью web-серверов. Решение одной из таких проблем: регулирование трафика и ограничение количества соединений, - было показано в данной статье.
     
    _________________________
Loading...