11.3. Суперсервер xinetd
11.3.1. Установка суперсервера xinetd
Суперсервер xinetd появился в дистрибутивах давно (например, в Red Hat начиная еще с 7 версии) и стал достойной заменой inetd, использовавшемуся до него. Суперсервер xinetd обычно устанавливается по умолчанию во время установки системы. Одним из преимуществ этого суперсервера является наличие встроенных механизмов зашиты, которые для inetd реализует отдельный демон tcpd. К тому же xinetd, в отличие от inetd, поддерживает IPv6. Даже если вы пока не планируете переходить на IPv6, установка xinetd будет очень полезной из-за расширенных функций суперсервера.
В шестой версии протокола IP (IPv6, ранее именовавшегося Ipng —
Если в вашем дистрибутиве xinetd не устанавливается по умолчанию, то рекомендую пойти по пути наименьшего сопротивления и установить xinetd из RPM-пакета. Можно также скачать последнюю версию xinetd по адресу http://www.synack.net/xinetd и установить его из исходных кодов.
Если вы собираете xinetd из исходников, вы можете сконфигурировать его (./configure) с одним из следующих флагов:
♦ --with-libwrap: с использованием tcp wrappers. С этой опцией xinetd будет сперва проверять ваши файлы /etc/hosts.allow и /etc/hosts.deny и только после этого запустит свой механизм контроля доступа. Библиотека libwrap должна быть установлена у вас заранее;
♦ --with-loadavg: с этой опцией xinetd остановит сервис, когда нагрузка достигнет определенного уровня;
♦ --with-inet6: включает поддержку IPv6.
Внимание! При включении IPv6 все IPv4-сокеты становятся IPv6-сокетами. Поэтому будьте готовы к тому, что вам понадобится перекомпилировать свое ядро с поддержкой IPv6. Если ваше ядро не поддерживает IPv6, выкачайте последнюю версию ядра по адресу http://www.kernel.org. Никаких ограничений на клиентские узлы включение IPv6 не накладывает: запросы IPv4 также будут обрабатываться.
11.3.2. Настройка суперсервера xinetd
Все настройки суперсервера xinetd сосредоточены в файле /etc/xinetd.conf. В составе дистрибутивов Red Hat и Mandrake уже имеется такой готовый файл, но в нем содержится лишь минимальный набор установок. В него включена строка, которая указывает суперсерверу прочитать все файлы в каталоге /etc/xinetd.d и воспринимать их как дополнительные конфигурационные файлы.
Все конфигурационные файлы — /etc/xinetd.conf и включаемые в него директивой includedir — состоят из записей, имеющих следующий вид:
service <имя_службы>
{
<атрибут> <оператор_присваивания > <значение> ...
...
}
Имя_службы может иметь значение login, shell, telnet, ftp, pop3 и т.п.
Оператор присваивания может быть одним из следующих: «=», «+=», «-=». Большинство атрибутов может работать только с оператором «=». Назначение операторов таково:
♦ «=»: присвоить атрибуту значение;
♦ «+=»: добавить атрибуту еще одно значение;
♦ «-=»: удалить значение атрибута.
Атрибут может иметь несколько значений, указанных через пробел. Большинство атрибутов можно использовать в секции defaults конфигурационного файла. Эта секция размещается в начале файла, и все заданные в ней атрибуты применяются ко всем серверам (сервисам), находящимся под контролем xinetd. Для каждого сервера (сервиса) можно индивидуально переопределить установки, заданные по умолчанию: если атрибут определен и в секции defaults, и в описании сервера (сервиса), то имеет силу значение, заданное в описании данного сервера (сервиса).
Среди атрибутов xinetd можно выделить следующие группы: