Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 46
Текст из файла (страница 46)
листинг 8.3) приведен пример записи в файле /etc/inetd.conf.Листинг 8.3. Фрагмент файла /etc/inetd.conff t p streamгде:topnowaitroot/usr/sbin/tcpdin.ftpdftpstreamtcpимя сетевой службы;задает тип сокета stream (потоковый сокет);протокол (указан протокол tcp, так как именно этотпротокол использует служба FTP в качестве протоколатранспортного уровня);nowaitсуперсервер продолжает «слушать» порт после выполнения одного сервера для определенного порта;rootсервер FTP будет запущен с правами root;/usr/sbin/tcpd.. сервер, который будет вызван для обработки соединения;in.ftpdаргумент, то есть программа, которую должен выполнить tcpd после проверки некоторой информации (о нейнемного позже).Еще вы можете написать и так, для прямого вызова службы ftp (ProFTP):f t p streamtcpnowaitroot/usr/sbin/in.proftpdin.proftpdВ данном случае сразу будет вызван демон ProFTP.
Запись in.proftpdявляется ссылкой на proftpd. Если будете использовать такой вызов РгоЕТР,позаботьтесь о том, чтобы proftpd имел тип inetd, а не standalone.8.1.2. Настройка tcpdДемон inetd является довольно удобным в использовании средством дляорганизации работы Интернет-сервера. И все было бы замечательно, еслибы не одно «но».
А это «но» заключается в том, что разработчики inetd оченьмало уделили внимания защите, что является недопустимым в нашей суровой Интернет-действительности. Восполнить этот недочет призван демонtcpd (система TCP-Wrappers). Так что давайте теперь разберемся, что жепредставляет из себя демон tcpd, который является еще одним барьером всистеме безопасности.Демон tcpd аутентифицирует удаленных пользователей и проверяет корректность их запросов. С помощью этого демона можно ограничить запросыс удаленных компьютеров.186Конфигурирование сервераФайл h o s t s . a l l o w содержит список хостов, которым разрешено подключаться к вашей системе, a hosts.deny — запрещено.
Записи имеютформат служба:хост.домен. Если вы хотите разрешить или запретить доступвсем, используйте ALL. Запись ALL:ALL открывает или закрывает доступ квашему компьютеру для всех остальных компьютеров и для всех видовсервисов (см. листинг 8.4).Листинг 8.4. Файл /etc/hosts.allowhttp:ALLftp:ALLALL:server.dhsilabs.comВ листинге 8.4 доступ к http и ftp разрешен всем, но доступ ко ВСЕМсервисам разрешен только компьютеру server.
dhsilabs . com.8.1.3. Протокол IPv6Думаю, что основной момент настройки понятен, и теперь переходим кпротоколу IPv6. Схема 32-разрядной адресации протокола IPv4 привела кдефициту IP-адресов. В новой версии протокола IP (IPv6, ранее именовавшегося IPng — IP next generation) адрес состоит из 16-ти октетов и изображается в виде восьми пар октетов, разделенных двоеточиями.
В версии 6используется 128-разрядные адреса получателей и отправителей (это в 4 разабольше, чем в 4-ой версии). Адрес в формате IPv6 может выглядеть так:3A3F:BC21:F133:56C4:A103:DB11:1000:400FЗаголовок 1Ру6-пакета разработан таким образом, чтобы минимизировать содержащуюся в нем информацию. Поля параметров и поля, которыене являются необходимыми, вынесены за пределы заголовка.Протокол IPv6 подробно описан в RFC 1883, а IPv4 — в RFC 791.8.1.4. Установка xinetdСуперсервер xinetd является достойной заменой inetd. Этот суперсервер,помимо всего прочего, обладает встроенными механизмами защиты, которые для inetd выполняет специальный демон tcpd.
К тому же xinetd, вотличии от inetd, поддерживает IPv6. Даже если вы пока не планируетепереходить на IPv6, установка xinetd будет очень полезной из-за расширенных функций суперсервера. Сам xinetd появился в Red Hat начиная с 7-ойверсии и обычно устанавливается во время установки системы. Если у васон еще не установлен, сейчас самое время это сделать.При этом рекомендую пойти по пути наименьшего сопротивления иустановить xinetd из RPM-пакета, а можно и выкачать из Интернет последнюю версию xinetd по адресу http://www.svnack.net/xinetd и установить егоиз исходных кодов.После того, как вы распакуете исходники, введите ./configure, перейдяпредварительно в каталог с исходниками (при этом желательно иметь праваroot). Для сценария configure вы можете использовать параметры, представленные в табл. 8.1.187Конфигурирование сервераПараметры сценария configureПараметр--with-libwrap--with-loadavg--wilh-inet6Таблица 8.1ОписаниеДемон будет использовать tcp wrappers.
При этом у вас уже должен быть установленlibwrap. С этой опцией xinetd будет сперва проверять ваши /etc/hosts. allow и /etc/hosts. denyфайлы, и только после этого запускает свой механизм контроля доступаКомпилирует xinetd с опцией maxjoad. Этот параметр остановит сервис, когда нагрузкадостигнет определенного уровняВключает поддержку IPv6Внимание!При включении IPv6 все IPvA-сокеты становятся IPvG-сокетами и соответственно ядро(это прежде всего) и все программы должны поддерживать IPv6.
Поэтому будьтеготовы к тому, что вам понадобится перекомпилировать свое ядро с поддержкой IPv6.Если ваше ядро не поддерживает IPv6, выкачайте последнюю версию ядра по адресуhttp://www.kernel.org. Тем не менее, и после включения IPv6 запросы IPv4 такжебудут обрабатываться. Так что никакой аварийной ситуации не будет.Возвращаясь к настройке: теперь введите make, а затем — make install.Файл конфигурации xinetd — /etc/xinetd.conf отличается по синтаксису от файла конфигурации inetd. Но если inetd у вас уже настроен и вамлень настраивать все заново, воспользуйтесь программой itox:itox < /etc/inetd.conf > /etc/xinetd.confТакое использование команды itox верно при условии, что файломконфигурации inetd является файл / e t c / i n e t d . c o n f , a xinetd •/ e t c / x i n e t d .
c o n f . Но в любом случае, вам не помешает разобраться сформатом xinetd. conf.После установки суперсервера из RPM-пакета или его сборки из исходных текстов, xinetd (или inetd) добавляется в сценарий автозафузки системы.Напомню, что включить или отключить запуск xinetd (inetd) или любогодругого сервиса всегда можно с помощью конфигуратора drakxservices вLinux Mandrake или setup в Linux Red Hat (см. рис. 8.1).Рис. 8.1. Автозапуск суперсервера188Конфигурирование сервера8.1.5.
Настройка xinetdСинтаксис файла xinetd. conf такой:service < service_name><атрибут> <оператор_присваивания> <значение> <значение> . . .<атрибут> <оператор_присваивания> <значение> <значение> . ..<атрибут> <оператор_присваивания> <значение> <значение> . . .Service_name -- это имя сервиса (login, shell, telnet, ftp, рорЗ и т.д).Оператор присваивания может быть одним из следующих: «=», «+=», «-=».Большинство атрибутов может работать только с оператором «=» (равно).Назначение операторов следующее:«=»присвоить значение атрибуту;«+=»добавить еще одно значение;удалить значение.Атрибут может иметь несколько значений, указанных через пробел.Некоторые параметры очень похожи на параметры inetd.
Список всех атрибутов приведен в табл. 8.2.Атрибуты сервиса для сервера xinetdАтрибутIdТуреFlagsТаблица 8.2ОписаниеИспользуется, если сервисы используют разные протоколы. Обычно совпадаетс именем сервисаМожет быть использована любая комбинация из следующих значений:RPC— если это сервис RPC (Remote Procedure Call).UNLISTED — если сервис не описан в файле /etc/rpc для rpc-сервисов или в /etc/servicesдля не грс.INTERNAL — если xinetd представляет этот сервис (для echo, time, daytime, chargen,и discard).Если RPC-сервисы у вас работают некорректно после установки xinetd, вы можете использовать для них старый inetd — inetd и его новая версия xinetd прекрасно уживаются вместе.В файле /etc/inetd.conf оставьте только RPC-сервисы, а остальное закомментируйте, а в/etc/xinetd.conf — наоборотВ качестве значения может быть использована любая комбинация из следующих значений:NODELAY— для tcp-сервиса будет установлен флаг сокета — TCP_NODELAY.Только для TCP-сервисов!DISABLE— отключить сервис.KEEPALIVE — установка флага сокета SO_KEEPALIVE.
Только для TCP-сервисов!REUSE— установить флаг SO_REUSEADDR на сокет сервера.INTERCEPT — перехватывать пакеты или принимать соединения по порядку, проверяя,что они приходят из нужных мест.NORETRY — избегать повторных попыток в случае неудачи.IDONLY- соединение будет приниматься только от идентифицированных пользователей.На удаленной машине должен работать identification-серверdisabledМожет принимать 2 значения, «yes» и «по».
Если указать «yes», сервис запускаться не будетsocket_typeТип сокета. Может принимать следующие значения:stream— сокет stream, обычно используется службами, работающими на основепротокола TCPdgram— сокет dgram, обычно используется службами, работающими на основепротокола UDPraw— сокет raw для сервисов, требующих прямого доступа к IPseqpacket — сокет seqpacket для сервисов, требующих надежную последовательнуюпересылку дейтаграмм189Конфигурирование сервераПродолжение табл. 8.2Атрибутprotocolwaituserserverserver_argslog_on_failurelog_on_successrpc_numberrpc_versionenvpasse nvportredirectinterfacebindОписаниеЗадает протокол, по которому будет работать сервер (top, udp, ..)Задает статус ожидания и может принимать два значения: yes и по, которые соответствуютзначениям wait и nowait для сервера inetd (см.