• Протоколирование. Используя опции log_on_successи log_on_failureсуперсервера xinetd, вы можете определять, какая информация должна записываться в файл протокола в случае успешного или неудачного обращения к серверу. Значениями этих опций могут быть PID(идентификатор процесса сервера), HOST(адрес клиента), USERID(идентификатор пользователя клиентской системы, которая передала запрос), EXIT(время получения запроса и статус завершения его обработки) и DURATION(длительность сеанса). При необходимости вы можете добавлять к набору, принятому по умолчанию, или исключать из него отдельные значения, используя вместо символа =пары символов +=и -=.
• Ограничения на установление соединений. Ограничить число соединений, поддерживаемых xinetd, можно несколькими способами. Опция per_sourceопределяет, сколько запросов от одного источника xinetdможет обработать в единицу времени. (Значение UNLIMITEDэтой опции позволяет обрабатывать неограниченное число запросов.) Опция instancesзадает максимальное количество процессов, которые xinetdможет породить (это значение должно быть больше, чем значение опции per_source). При использовании опции cpsей передаются два значения, разделенные пробелом: число соединений, которые xinetdможет установить в течение одной секунды, и длительность паузы (в секундах), которая должна быть выдержана, если число соединений превысит максимально допустимое. Приоритет серверов, управляемых xinetd, задается с помощью опции nice; эта опция действует подобно программе nice. И наконец, опция max_load, значением которой является число с плавающей точкой, указывает максимальную загрузку системы, при достижении которой xinetdдолжен отвергать последующие запросы. При использовании этих опций снижается вероятность того, что сервер пострадает от атаки, предпринятой с целью вывода его из строя, или в результате обилия запросов, вызванных высокой популярностью сервера.
Большинство из приведенных выше опций можно использовать либо в описании сервера, либо в разделе defaultsфайла /etc/xinetd.conf. Помещенная в раздел defaultsопция воздействует на все серверы, управляемые xinetd. Если опция присутствует и в разделе defaults, и в описании, принимается значение опции, заданное в описании сервера.
Если вы внесли изменения в файл /etc/xinetd.confили в один из файлов, содержащихся в каталоге /etc/xinetd.d, необходимо перезапустить программу xinetd. Поскольку суперсервер xinetdчаще всего запускается посредством сценария SysV, проще всего перезапустить его с помощью команды типа /etc/rc.d/init.d/xinetd restart(в некоторых системах сценарий запуска может находиться в другом каталоге). Можно поступить и по-другому — передать xinetdсигнал SIGUSR1или SIGUSR2, используя для этого команду kill. При получении сигнала SIGUSR1 xinetdчитает содержимое нового конфигурационного файла и продолжает работу. В ответ на сигнал SIGUSR2суперсервер делает то же самое, но при этом завершает работу тех серверов, которые согласно новому конфигурационному файлу должны быть неактивны.
Средства управления доступом
Одно из преимуществ xinetdсостоит в том, что эта программа объединяет в себе функции суперсервера и средства управления доступом, характерные для TCP Wrappers. Кроме того, настройка xinetdвыполняется достаточно просто. Средства управления доступом xinetdне дублируют соответствующие функции TCP Wrappers; некоторые задачи лучше решаются с помощью xinetd, для решения других приходится применять TCP Wrappers. Настраивая xinetd, можно определять доступ либо одновременно для всех серверов, либо для каждого сервера в отдельности. Основные опции, предназначенные для управления доступом, описаны ниже.
• Ограничения для различных узлов. Для xinetdпредусмотрены опции only_fromи no-access, которые выполняют те же функции, что и содержимое файлов /etc/hosts.allowи /etc/hosts.denyTCP Wrappers. Эти опции могут присутствовать либо в главном конфигурационном файле, либо в файле, предназначенном для конкретного сервера. В качестве значения опции only_fromзадается список компьютеров, которым разрешено обращаться к серверу (для всех остальных компьютеров доступ запрещен). Аналогично, значение опции no-access представляет собой "черный список"; компьютеры, указанные в списке, не имеют права устанавливать соединение с сервером, а для остальных компьютеров доступ разрешен. Если адрес присутствует в обоих списках, приоритет имеет адрес, заданный более конкретно. Для идентификации компьютеров используются разные способы. В опциях only_fromи no-accessможет быть указан IP-адрес узла (например, 172.23.45.67), адрес сети, оканчивающийся нулем (например, 172.23.0.0 для сети 172.23.0.0/16) или заданный с помощью маски (172.23.0.0/16), имя сети, указанное в файле /etc/networks, или доменное имя узла (например, badguy.threeroomco.com). Если в качестве значения опции указано имя узла, xinetdвыполняет преобразование имени в адрес один раз при загрузке суперсервера. Поскольку в течение работы xinetdдоменное имя может измениться, данный способ установления ограничений неэффективен.
Читать дальше