Введение

Unix демон

inetd (демон интернет-сервисов) — это суперсерверный демон во многих системах Unix, предоставляющий интернет-сервисы. Для каждой настроенной службы он прослушивает запросы от подключающихся клиентов. Запросы обрабатываются путем запуска процесса, выполняющего соответствующий исполняемый файл, но простые службы, такие как echo, обслуживаются непосредственно inetd. Внешние исполняемые файлы, запускаемые по запросу, могут быть однопоточными или многопоточными. Впервые появившись в 4.3BSD, обычно располагается в /usr/sbin/inetd. inetd основан на шаблоне активатора (службы).

Функция

Часто называемый суперсервером, inetd прослушивает выделенные порты, используемые интернет-сервисами, такими как FTP, POP3 и telnet. Когда поступает TCP-пакет или UDP-пакет с определенным номером порта назначения, inetd запускает соответствующую серверную программу для обработки соединения. Для сервисов, которые не предполагается использовать при высоких нагрузках, этот метод более эффективно использует память, поскольку конкретные серверы запускаются только при необходимости. Более того, в режиме управления сервисами "nowait" в программах, специфичных для сервиса, не требуется сетевой код, так как inetd напрямую подключает сетевой поток к stdin и stdout запущенного процесса. Для протоколов с интенсивным трафиком, таких как HTTP и POP3, может быть предпочтительнее режим ожидания ("wait") inetd или выделенный сервер, который напрямую перехватывает трафик.

Замена

В последние годы из-за ограничений безопасности в исходной реализации inetd, он был заменен на xinetd, rlinetd, ucspi-tcp и другие во многих системах. Дистрибутивы Linux особенно предлагают множество вариантов, а Mac OS X (начиная с версии Mac OS X v10.2) использует xinetd. Начиная с версии Mac OS X v10.4, Apple интегрировала функциональность inetd в launchd. Сервисы, предоставляемые inetd, могут быть полностью отключены. Это становится все более распространенным, когда машины предназначены для выполнения одной конкретной задачи. Например, HTTP-сервер может быть настроен на запуск только httpd без открытия других портов. Специализированный файрвол может не запускать никакие сервисы. systemd поддерживает сервисы inetd и расширяет активацию сокетов за пределы IP-соединений (AF INET+6), включая поддержку AF UNIX, AF NETLINK и других.

Проблемы безопасности

Хотя концепция inetd как диспетчера служб сама по себе не является небезопасной, обширный список служб, которые традиционно предоставлял inetd, вызывал обеспокоенность у специалистов по компьютерной безопасности. Необходимо было учитывать возможность наличия у службы уязвимости или её неправомерного использования. Отключение ненужных служб и настройка "выключенных по умолчанию" стало девизом. В современных дистрибутивах Unix часто можно встретить файл /etc/inetd.conf, в котором большинство служб закомментированы.