Руководство FreeBSD

         

Inetd.conf


Настройка inetd управляется через файл /etc/inetd.conf.

Если в файле /etc/inetd.conf делались изменения, то inetd можно заставить считать его конфигурационный файл повторно, послав сигнал HangUP процессу inetd, как показано здесь:

Пример 23-1. Посылка сигнала HangUP процессу inetd

# kill -HUP `cat /var/run/inetd.pid`

В каждой строке конфигурационного файла описывается отдельный даемон. Комментариям в файле предшествует знак ``#''. Файл /etc/inetd.conf имеет такой формат:

service-name socket-type protocol {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] user[:group][/login-class] server-program server-program-arguments

Пример записи для даемона ftpd, использующего IPv4:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l

service-name

Это имя сервиса, предоставляемого конкретным даемоном. Оно должно соответствовать сервису, указанному в файле /etc/services. Здесь определяется, какой порт должен обслуживать inetd. При создании нового сервиса он должен помещаться сначала в файл /etc/services.

socket-type

stream, dgram, raw либо seqpacket. stream должен использоваться для ориентированных на соединение даемонов TCP, когда как dgram используется для даемонов, использующих транспортный протокол UDP.

protocol



Одно из следующих:

Протокол

Описание

tcp, tcp4 TCP IPv4
udp, udp4 UDP IPv4
tcp6 TCP IPv6
udp6 UDP IPv6
tcp46 TCP как для IPv4, так и для v6
udp46 UDP как для IPv4, так и для v6

{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]

wait|nowait определяет, может ли даемон, вызванный из inetd, работать с собственным сокетом, или нет. Сокеты типа dgram должны использовать параметр wait, когда как даемоны с потоковыми сокетами, которые обычно многопоточны, должны использовать nowait. wait обычно передает много сокетов одному даемону, когда как nowait порождает даемон для каждого нового сокета.

Максимальное число порожденных даемонов, которых может создать inetd, может быть задано параметром max-child.
Если нужно ограничение в десять экземпляров некоторого даемона, то после параметра nowait нужно задать /10.

Кроме max-child, может быть задействован другой параметр, ограничивающий максимальное число соединений от одного источника. max-connections-per-ip-per-minute служит именно для этого. Здесь значение, равное десяти, будет ограничивать любой заданный IP-адрес на выполнение десяти попыток подключения к некоторому сервису в минуту. Это полезно для предотвращения намеренного или ненамеренного расходования ресурсов и атак типа Denial of Service (DoS) на машину.

В этом поле wait или nowait

обязательны. max-child и max-connections-per-ip-per-minute опциональны.

Многопоточный даемон типа stream без ограничений max-child

или max-connections-per-ip-per-minute будет определен просто вот так: nowait.

Тот же самый даемон с ограничением в максимум десять даемонов будет определен так: nowait/10.

Наконец, та же конфигурация с ограничением в двадцать соединений на IP-адрес в минуту и общим ограничением в максимум десять порожденных даемонов выглядит так: nowait/10/20.

Эти параметры, используемые все со значениями по умолчанию даемоном fingerd, имеют такой вид:

finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s

user

Это имя пользователя, под которым должен работать соответствующий даемон. Чаще всего даемоны работают как пользователь root. Для обеспечения безопасности некоторые серверы запускаются как пользователь daemon или как пользователь с минимальными правами nobody.

server-program

Полный маршрут к даемону, который будет выполняться при установлении соединения. Если даемон является сервисом, предоставляемым самим inetd, то нужно задать ключевое слово internal.

server-program-arguments

Этот параметр работает вместе с параметром server-program, задавая параметры, начиная с argv[0], передаваемые даемону при запуске. Если в командной строке задано mydaemon -d, то mydaemon -d будет являться значением для server-program-arguments. И снова, если даемон является внутренней службой, то здесь нужно использовать internal.


Содержание раздела