простые решения сложных проблем

Суперсервер xinetd пришел на замену устаревшему серверу inetd. Любой сервер, обрабатывающий запросы, обычно может работать в двух режимах:

а) сам "слушает" свой порт и обрабатывает входящие соединения (при этом он всегда будет находиться в оперативной памяти);
б) сам свой порт не "слушает", а предоставляет это дело суперсерверу xinetd, который слушает заданный набор портов и при поступлении запроса на какой-либо порт вызывает соответствующий сервер (например ftp) и передает ему поступивший запрос на обработку; после обработки запроса сервер прекращает работу и освобождает память. Как можно видеть, в этом случае экономится оперативная память, но снижается быстродействие, поэтому такой режим рекомендуется для обработки не интенсивных запросов, например ftp, samba, pop3 и пр. Также xinetd позволяет ограничить доступ и повысить безопасность.

1. Установим xinetd из портов (для FreeBSD):

# cd /usr/ports/security/xinetd/
# make
# make install clean

2. После установки нам интересны следующие файлы (в папке /usr/local/etc):
xinetd.conf - здесь настраиваются параметры по умолчанию для остальных конфигурационных файлов xinetd.
xinetd.d - папка, в которой находятся конфигурационные файлы для каждого обслуживаемого сервера. Там уже будет лежать несколько примеров.

Например:

popd:

# default: off
# description: The POP3 service allows remote users to access their mail 
# using an POP3 client such as Netscape Communicator, mutt, 
# or fetchmail.
service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/libexec/popd
only_from = 0.0.0.0
}

где:
# default: off - означает, что общий конфигурационный файл (xinetd.conf) не использовать.
disable = no - означает, что работа данного сервера (popd) разрешена.
user= root - сервер popd будет запускаться с правами пользователя root.
server = /usr/local/libexec/popd - путь к серверу (popd).
only_from = 0.0.0.0 - откуда разрешен доступ (в данном случае - отовсюду).

Вот еще пример для vsftpd сервера:

# default: off
# description: The vsftpd FTP server.
service ftp
{
disable = no
socket_type = stream
protocol = tcp
wait = no 
user = root
nice = 10
rlimit_as = 16M
server = /usr/local/libexec/vsftpd
# server_args = 
only_from = 0.0.0.0
}

Подробнее см. man xinetd

3. Запустить суперсервер можно командой:

# /usr/local/etc/rc.d/xinetd.sh start

Теперь xinetd будет слушать порты (например 110, 21) и при поступлении на них запросов будет их передавать на обработку соответствующим серверам (например popd, vsftp), если доступ будет разрешен для посылающих запросы хостов.

Оставьте свой комментарий: