Чтение онлайн

на главную - закладки

Жанры

Сетевые средства Linux

Смит Родерик В.

Шрифт:

Использование inetd

В обычных условиях программа-сервер связывается с некоторым портом (ресурсом, для идентификации которого используется тип протокола и число в интервале от 1 до 65535). В зависимости от номера порта, указанного в запросе, этот запрос направляется тому или иному серверу. Например, почтовый сервер, поддерживающий SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты), традиционно использует TCP-порт 25, a HTTP (Hypertext Transfer Protocol — протокол передачи гипертекстовой информации), как правило, связывается с портом 80.

Программа

inetd
является одним из суперсерверов, используемых в операционной системе Linux. Суперсервер выполняет функции посредника. Вместо набора серверов в системе запускается один суперсервер, который связывается со всеми портами, соответствующими серверам из набора. При установлении соединения суперсервер загружает сервер, порт которого указан в запросе, после чего этот сервер выполняет требуемые действия по передаче данных. Использование суперсервера обеспечивает два основных преимущества по сравнению с постоянным выполнением обычных серверов. Во-первых, при таком подходе уменьшается объем используемой оперативной памяти; в особенности это заметно, если на компьютере должно присутствовать большое количество программ- серверов. Во-вторых, перед тем как запрос будет передан обычном серверу, его получает суперсервер, который может выполнять необходимую фильтрацию данных; это повышает безопасность системы. Недостаток использования суперсервера состоит в том, что продолжительность обработки запроса увеличивается (как правило, на одну-две секунды). Это связано с тем, что для загрузки сервера требуется определенное время. Поэтому суперсервер лучше применять для серверов, которые вызываются достаточно редко. Если запросы к серверу приходят часто, лучше, если такой сервер постоянно присутствует в памяти компьютера.

Формат файла /etc/inetd.conf

Для настройки

inetd
используется конфигурационный файл
/etc/inetd.conf
. Если не принимать во внимание комментарии (строки, начинающиеся с символа
#
), то можно сказать, что содержимое файла
inetd.conf
представляет собой набор строк, каждая из которых определяет отдельный сервер. Пример записи, содержащейся в файле
/etc/inetd.conf
приведен ниже.

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

Каждая строка файла состоит из нескольких полей, которые отделяются друг от друга с помощью пробелов или символов табуляции.

• Имя сервера. Первое поле в строке идентифицирует протокол, используемый сервером. Имя протокола должно соответствовать имени, указанному в файле

/etc/services
. Например, обратившись к этому файлу, можно выяснить, что имени
telnet
соответствует значение
23/tcp
, т.е. сервер, поддерживающий протокол
telnet
, должен использовать для взаимодействия порт 23. Для того чтобы программа
inetd
могла управлять сервером, для этого сервера должна существовать запись в файле
/etc/services
. Очевидно, что, планируя запуск редко встречающегося сервера посредством
inetd
, надо позаботиться о том, чтобы соответствующая запись была включена в этот файл. Подавляющее большинство серверов изначально учтено в
/etc/services
.

• Тип гнезда. Второе поле указывает тип гнезда, используемого при поддержке протокола. Допустимы типы

stream
,
dgram
,
raw
,
rdm
и
seqpacket
.

• Тип протокола. Третье поле указывает тип протокола. В данном случае речь идет о нижележащем протоколе транспортного уровня, например TCP или UDP. Допустимые протоколы указаны в

/etc/protocols
, однако в подавляющем большинстве случаев в этом поле указывается значение
tcp
или udp.

• 

wait
/
nowait
. Четвертое поле записи содержит одно из двух значений:
wait
или
nowait
. Значение
wait
имеет смысл только для дейтаграмм (тип гнезда
dgram
). В остальных случаях предполагается значение
nowait
. Большинство серверов, поддерживающих обмен с помощью дейтаграмм, связываются с гнездом и освобождают
inetd
для обслуживания последующих обращений. Эти серверы называются многопотоковыми (multi-threaded); для них в рассматриваемом здесь поле должно содержаться значение
nowait
. Серверы, которые связываются с гнездом, обрабатывают все данные, а затем по истечении времени тайм-аута завершают работу, называются однопотоковыми (single-threaded); для них в данном поле должно содержаться значение
wait
. В этом поле можно также задать числовое значение, отделив его от ключевого слова
wait
точкой, например
wait.60
. Число указывает максимальное количество серверов данного типа, которые
inetd
может загрузить в течение одной минуты. По умолчанию принимается значение, равное 40.

• Имя пользователя. Программа

inetd
может запустить сервер с привилегиями указанного пользователя. Это позволяет существенно повысить уровень безопасности системы. Ограничив права сервера необходимым минимумом, вы сокращаете возможности злоумышленников по незаконному проникновению в систему. Так, например, серверу Apache не требуются никакие специальные привилегии, поэтому его можно запускать с правами пользователя
nobody
либо определить права Apache, создав для него отдельную учетную запись. В приведенном выше примере указано имя
root
, так как привилегии этого пользователя необходимы для выполнения процедуры регистрации, которая осуществляется в начале Telnet-сеанса. Если к имени пользователя вы добавите имя группы, разделив эти имена точкой, сервер получит привилегии группы. Например, значение
nobody.nogroup
указывает на то, что сервер должен быть запущен с правами пользователя
nobody
и группы
nogroup
.

• Программа-сервер. Шестое поле содержит имя программы-сервера, которую должен запустить

inetd
, приняв запрос. В приведенном примере указано имя программы
/usr/sbin/tcpd
. В действительности
tcpd
— это не сервер, а программа, реализующая TCP Wrappers (назначение TCP Wrappers будет рассмотрено ниже). В большинстве дистрибутивных пакетов, в которых используется
inetd
, также применяется TCP Wrappers, т.е. серверы, поддерживаемые
inetd
, запускаются через
tcpd
. Для некоторых серверов TCP Wrappers можно не использовать, но в большинстве случаев применение данного средства оправдано.

• Параметры, передаваемые серверу. Это поле может отсутствовать. Если же оно задано, то содержит параметры, которые должны быть переданы программе-серверу. Эти параметры могут изменять поведение сервера, указывать расположение конфигурационных файлов и предоставлять другие сведения. Если сервер запускается посредством TCP Wrappers, параметр задает имя этого сервера; в приведенном выше примере указан параметр

in.telnetd
. (При необходимости к имени сервера можно добавить параметры, предназначенные для него.)

Для редактирования

/etc/inetd.conf
можно использовать любой текстовый редактор. При подготовке содержимого файла следите за тем, чтобы поля записи помещались в одной строке. (Если в составе записи присутствуют длинные имена файлов или если серверу передается большое число параметров, редактор может автоматически перенести часть записи на другую строку. В этом случае при работе
inetd
возникнут проблемы.) Если вы хотите добавить новую запись для установленного вами сервера, изучите документацию на этот сервер и выясните, как должна выглядеть соответствующая запись
inetd.conf
. Часто бывает удобно создавать новые записи на основе существующих. При этом надо внимательно следить за тем, чтобы тип гнезда, тип протокола, параметры, передаваемые серверу, и другие сведения были заданы правильно, в противном случае сервер не будет работать.

Поделиться:
Популярные книги

Точка Бифуркации VIII

Смит Дейлор
8. ТБ
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации VIII

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Телохранитель Генсека. Том 3

Алмазный Петр
3. Медведев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Телохранитель Генсека. Том 3

Отмороженный 9.0

Гарцевич Евгений Александрович
9. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 9.0

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Вперед в прошлое 10

Ратманов Денис
10. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 10

Запрети любить

Джейн Анна
1. Навсегда в моем сердце
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Запрети любить

Аристократ из прошлого тысячелетия

Еслер Андрей
3. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Аристократ из прошлого тысячелетия

Последний Паладин. Том 6

Саваровский Роман
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 6

Зодчий. Книга I

Погуляй Юрий Александрович
1. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга I

Олд мани

Голд Яна
Любовные романы:
современные любовные романы
остросюжетные любовные романы
фемслеш
5.00
рейтинг книги
Олд мани

Черные ножи

Шенгальц Игорь Александрович
1. Черные ножи
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черные ножи

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III