Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 47
Текст из файла (страница 47)
выше). Значение yes обычно устанавливаетсяна сокетах dgram, а значение по на сокетах streamЗадает пользователя, от имени которого будет запущен сервер. Пользователь долженбыть определен в файле /etc/passwd. По умолчанию сервер запускается от именипользователя rootУказывает абсолютный путь к запускаемому серверуОпределяет аргументы, которые будут переданы серверуОпределяет, какая информация будет писаться в файл отчета (протокол), если сервиспо каким-либо причинам не запустился:HOST— записывать адрес удаленного хоста.USERID— если возможно, записывать идентификатор удаленного пользователя(используется протокол идентификации RFC 1413).ATTEMPT — записывать факт неудачной попытки.RECORD — записывать информацию с удаленного хоста, в случае невозможностизапуска сервераОпределяет, какая информация будет писаться в файл отчета (протокол) в случае удачногозапуска сервиса.
Можно комбинировать любые из следующих значений:PID— записывать идентификатор запущенного серверного процесса.HOST- записывать адрес удаленного хоста.USERID— если возможно, идентификатор удаленного пользователя(используется протокол идентификации RFC 1413)EXIT— записывать, каким образом был произведен выход.DURATION - - записывать продолжительность сессииОпределяет номер сервиса RPCОпределяет версию сервиса RPCЗадает значение атрибута. Атрибут представляет собой список строк типа: «name=value».Эти переменные будут добавлены в окружение перед тем, как сервер будет запущенЭто список переменных окружения из окружения xinetd, которые могут быть переданысерверуОпределяет порт сервиса.
Если порт указан в файле /etc/services, то значение данногопараметра должно совпадать с нимПозволяет tcp-сервису делать перенаправление на другой хост. Значение задаетсяв виде host:port•Устанавливает интерфейс, на котором будет работать сервис. Синтаксис: 1Шегтасе=1Р-адресЭто синоним параметра interfaceОпределяет имя файла, который будет показываться при соединении с сервисомbannerbanner_succeОпределяет имя файла, который будет показываться при удачном соединенииssbanner_failОпределяет имя файла, который будет показываться при неудачном соединенииАтрибут имеет два аргумента.
Первый устанавливает количество соединений в секунду.cpsЕсли это число будет превышено, сервис будет временно недоступен. Второй — числосекунд, после которых сервис снова будет доступенmaxjoadinstancesniceОпределяет максимальную загрузку. При достижении максимума, сервер перестаетпринимать запросы на соединение. Значение параметра — число типа floatУстанавливает число серверов, которые могут быть активны одновременно для сервиса (поумолчанию лимита нет).
Значением этого атрибута может быть число, либо — UNLIMITEDУстанавливает приоритет сервисаПримечание.RPC (Remote Procedure Call) — вызов удаленной процедуры. Используется в серверной части приложения. Механизм RPC скрывает от программиста детали сетевыхпротоколов нижележащих уровней.190Конфигурирование сервераВам необязательно указывать все эти атрибуты для каждого сервиса.Можно указать только необходимые:1. socket_type2.
user3. server4. waitПараметр protocol указывается только для RFC-сервисов, а также для всехсервисов, которые не описаны в /etc/services. Параметр rpc_version —только для RPC-сервисов. Параметр rpc_nuinber указывается только для RFCсервисов, которые не указаны в файле /etc/rpc. Параметр port задаетсятолько для He-RPC-сервисов, которые не описаны в /etc/services.
Следующие атрибуты поддерживают все операторы присваивания:1. only_from2. no_access3. log_on_success4. log_on_failure5. passenv6. env (не поддерживает оператор «-=»)Эти атрибуты также могут принимать разные значения в разных секцияхописания сервиса.Файл конфигурации может содержать секцию default, в которой описаныатрибуты по умолчанию. Они будут одинаковы для всех сервисов. Возможные атрибуты по умолчанию:1. logjype2. log_on_success3.
log_on_failure4. only_from5. no_access6. passenv7. instances8. disabled9. enabled8.1.6. Параметры запуска xinetdЯ надеюсь, что с настройкой более-менее все понятно. Если же моинадежды не оправдались, то в разделе 8.1.7 вы найдете пример файла/etc/xinetd.conf. Сейчас же займемся запуском только что откомпилированного и настроенного суперсервера. А запускать его можно с параметрами, указанными в табл. 8.3.В табл. 8.3 я привел описание не всех параметров запуска, выбрав лишьсамые нужные.
Более подробную информацию вы сможете получить в документации по xinetd. Так же как и inetd, xinetd можно контролировать спомощью сигналов (см. табл. 8.4).191Конфигурирование сервераТаблица 8.3Параметры запуска xinetdПараметрОписаниеУстанавливает альтернативный файл конфигурации, который должен использоватьсявместо стандартного файла /etc/xinetd.conf-f файл-pidfile р!Ь_файл-stayaliveФайл с ID-процессаДаже если ни один сервис не прописан, демон должен выполняться («остаться в живых»)-loop числоЗадает количество коннектов в секунду-dРежим отладки (debug mode)Перед тем как связать сокет сервиса с IP-адресом, суперсервер установит опцию сокетаSO REUSEADDR-reuse-limit числоОграничение на количество одновременно запущенных процессовСигналы суперсервераТаблица 8.4СигналОписаниеSIGUSR1Суперсервер перечитает файл конфигурацииSIGQUITОстановит xinetdSIGTERMПеред остановкой xinetd все процессы будут остановлены8.1.7.
Пример файла конфигурации /etc/xinetdТеперь, как и обещал, привожу пример файла конфигурации (см. листинг 8.5). В этом листинге перечислены наиболее часто используемые сервисы с оптимальными параметрами (атрибутами). Конечно же, вам предстоитрешить: какие сервисы вы будете использовать, а какие нет. Возможно, вытакже измените и их атрибуты, например, время работы сервиса.Листинг 8.5.Фрагмент файла конфигурации /etc/xinetd:# Параметры по умолчанию для всех возможных сервисовdefaults# Число серверов, которые могут быть активны одновременно длясервиса.instances= 25# Параметры протоколированияlog_type= FILE /var/log/serviceloglog_on_success= HOST PIDlog_on_failure= HOST RECORDonly_from= 111.11.111.0 111.111.112.0only_from= localhost 1 9 2 . 1 6 8 .
1 . 0 / 3 2disabled= tftpservice loginflagssocket_typeprotocolwaituserserverlog_type192= REUSE= stream= tcp= no= root= /usr/etc/in.rlogindSYSLOG Iocal4 infoКонфигурирование сервера# Сервис telnet — эмуляция# (для 127.. 0.0.1)service telnetflagssocket_typewaituserserverbindlog on failureтерминала удаленных систем= REUSE= stream= no= root= /usr/etc/in.telnetd= 127.0.0.1+= USERID# Сервис telnet — эмуляция терминала удаленных системservice telnet#flagsdisabledsocket_typewaituserserverbindredirectlog_on_failure= REUSE= yes= stream= no= root= /usr/etc/in.telnetd= 192.231.139.175= 128.138.202.20 23+= USERID}service ftpsocket_type= streamwait= поuser= rootserver= /usr/etc/in.ftpd= -1server_argsinstances= 4log_on_success+= DURATION USERIDlog on failure+= USERIDt Время работы сервисаaccess_times= 2:00-8:59 12:00-23:59f приоритетnice= 10service namesocket_typewaituserserver####====dgramyesroot/usr/etc/in.tnamedПоддержка протокола TFTP (Trivial FTP).
Этот протоколиспользуется для обмена информацией между интеллектуальнымимаршрутизаторами и, скорее всего, вы не будете егоиспользовать.7 Зак. 851У 93Конфигурирование сервераservice tftpsocket_typewaituserserverserver_args=====dgramyesroot/usr/etc/in.tftpd-s /tftpboot# SMTP-сервис Qmail. Конфигурируется для запуска по требованию# суперсервера xientdservice smtpsocket_typeprotocolwaituseridserverserver_argslog_on_successlog_on_failure######= stream= tcp= no= qmaild= smtp= /var/qmail/bin/tcp-env= /var/qmail/bin/qmail-smtpd-= DURATION USERID PID HOST EXIT-= USERID HOST ATTEMPT RECORD .Сервис finger, позволяющий узнать полезную общедоступнуюинформацию о пользователях системы.
Например, для того,чтобы узнать информацию о пользователе root системы host.com,введите одноименную команду: finger root@host.comДля работы этой команды необходим сервис finger.service finger{socket_typedisabledwaituserserver}service echostreamyesnonobody/usr/etc/in.fingerdtypeidsocket_typeprotocoluserwaitINTERNALecho-streamstreamtcprootnoservice echotypeidsocket_typeprotocol194====INTERNALecho-dgramdgramudpКонфигурирование сервераuserwait}service rstatd<typedisabledflagsrpc_versionsocket_typeprotocolserverwaituser}= root= yes=========RFCnoINTERCEPT2-4dgramudp/usr/etc/rpc.rstatdyesroot>Как видно из примера, я описал лишь те сервисы, которые больше всегонеобходимы.
Доступ к сервисам в рассматриваемом примере могут получатьтолько из сети 111.111.111.0, 111.111.112.0 и 192.168.1.0. Можно также указывать адрес и маску подсети, например 192.168.1.0/32. Вместо sendmail яиспользовал qmail. Можно было бы запускать qmail в режиме standalone, нотак как я не очень часто пользуюсь услугами 25-го порта, то мне удобнеезапускать сервис smtp через xinetd. Из соображений безопасности я отключил некоторые сервисы: finger, telnet.8.2. Удаленный доступ: ssh и telnetСервис Telnet обеспечивает базовую эмуляцию терминалов удаленныхсистем, поддерживающих протокол Telnet над протоколом TCP/IP.