Как уже говорилось в главе 5, большая часть информации в файле xinetd.conf представляет собой те же значения, что и хранимые в файле inetd.conf. Дополнительная функциональность xinetd аналогична функциональности пакета wrapper, xinetd читает файлы /etc/hosts.allow и /etc/ hosts.deny и реализует управление доступом на основе информации на основе этих файлов.
Кроме того, в xinetd существуют собственные механизмы управления доступом и регистрации обращений. Если в вашей системе применяется xinetd, имеет смысл создать файлы hosts.allow и hosts.deny, чтобы повысить защищенность служб, работающих с этими файлами, таких как portmapper, а также задействовать существующие в xinetd функции безопасности, поскольку они реализуют более совершенное управление доступом.
Регистрация обращений в xinetd реализуется параметрами log_on_success и log_on_failure. Используйте эти параметры для подстройки стандартного формата записей журнала, создаваемых для успешных и неудачных попыток обращения к службам. log_on_success и log_on_failure имеют следующие ключи:
USERID - Регистрирует идентификатор удаленного пользователя. Параметр USERID может регистрироваться как для успешных, так и для неудачных попыток обращения.
HOST - Регистрирует адрес удаленного узла. Подобно USERID, HOST может регистрироваться как для успешных, так и для неудачных попыток.
PID - Регистрирует идентификатор серверного процесса, созданного для обработки соединения. Параметр PID применим только для log_on_success.
DURATION - Регистрирует длительность работы серверного процесса, обработавшего данное соединение. Параметр DURATION применим только для log_on_success.
EXIT - Регистрирует состояние сервера на момент завершения соединения. Параметр EXIT применим только для log_on_success.
ATTEMPT - Регистрирует неудавшиеся попытки соединения. Параметр ATTEMPT применим только для log_on_failure.
RECORD - Регистрирует информацию о соединении, полученную от удаленного сервера. Параметр RECORD применим только для log_on_failure.
Помимо регистрации обращений xinetd имеет три параметра для управления доступом. Используйте эти параметры для настройки xinetd на прием соеди- нений от определенных узлов в соответствии с файлом hosts.allow, блокиров- ку соединений от определенных узлов в соответствии с файлом hosts.deny, а также на прием соединений только в определенные интервалы времени. Вот эти три параметра:
only_from
Обозначает узлы, которым разрешено обращаться к службе. Узлы обозначаются при помощи:
- Числовых адресов. Так, адрес 172.16.12.5 обозначает конкретный узел, а номер 129.6.0.0- все узлы, адреса которых начинаются с 129.6. Адрес 0.0.0.0 обозначает все адреса.
- Наборов адресов. Например, 172.16.12.(3,6,8,23} обозначает четыре различных узла: 172.16.12.3,172.16.12.6,172.16.12.8 и 172.16.12.23.
- Имен сетей. Имени сети должно соответствовать определение в файле /etc/networks.
- Канонических имен узлов. Представленный удаленной системой IP- адрес должен отображаться в указанное имя узла.
- Доменных имен. Имя узла, полученное обратным отображением, должно принадлежать указанному домену. Например, значение .wrotethebook.com требует, чтобы узел входил в домен wrotethebook.com. Обратите внимание, что доменные имена должны начинаться с точки.
- IP-адресов в сочетании с адресными масками. Так, записи 172.16.12.128/25 соответствуют все адреса с 172.16.12.128 по 172.16.12.255.
no_access - Обозначает узлы, которым запрещен доступ к службе. Узлы обозначаются способами, описанными выше для атрибута only_f rom.
access_times - Определяет время суток, когда служба доступна, в формате час:мин - час:мин. Используется 24-часовая шкала времени. Часы пронумерованы от 0 до 23, а минуты - от 0 до 59.
В отсутствие атрибутов only_f rom и no_access разрешается доступ всем узлам. Если существуют оба атрибута, используется наиболее точное соответствие. Рассмотрим пример:
no_access = 172.16.12.250 only_from = 172.16.12.0
Здесь команда only_from разрешает доступ к службе всем системам сети 172.16.12.0. Команда no_access запрещает доступ одной конкретной системе. Порядок следования команд no_access и only_f rom не имеет значения, результат всегда одинаков, поскольку приоритет имеет наиболее точное соответствие. Ниже приводится пример записи для РОРЗ из файла xinetd.conf:
# default: on # описание: Служба РОРЗ позволяет удаленным пользователям обращаться к своей почте\ п посредством клиента РОРЗ, такого как Netscape Communicator, mutt \ # или fetchmail. service login { socket__type = stream wait = no user log_on_success log_on_failure only_from no_access = 172.16.12.231 server = /usr/sbin/ipop3d }
В данном фрагменте команда only_f rom разрешает доступ всем системам сети 172.16.12.0, то есть локальной сети, и запрещает доступ всем остальным системам. Кроме того, существует одна система подсети 17.16.12.0 (узел 172.16.12.231), которая не является настолько доверенной, чтобы получить POP-доступ. Команда no_access запрещает доступ всем пользователям системы 172.16.12.231.
Помните, что wrapper и xinetd позволяют лишь управлять доступом к службам, но не способны ограничивать доступ к данным системы или данным, передаваемым по сети. С этой целью следует использовать шифрование.