# default: on
# По умолчанию включен
# description: The telnet server serves telnet sessions;
# it uses unencrypted username/password
# pairs for authentication.
# Описание: Telnet-сервис обслуживает telnet-сессии.
# Он использует не зашифрованные имя пользователя
# и пароль для аутентификации
service telnet {
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
Рассмотрим основные параметры, которые можно изменять:
□ disable
— если этот параметр установить в true
, то сервис будет запрещен для исполнения;
□ flags
— атрибуты выполнения сервиса;
□ socket_type
— тип используемого сокета. Для протокола TCP здесь должно быть значение stream
, а для протокола UDP — dgram
;
□ protocol
— используемый для передачи данных протокол (TCP или UDP);
□ server
— полный путь к запускаемой программе;
□ user
— права доступа. В большинстве случаев можно увидеть имя пользователя root. Это нормально, потому что в ОС Linux для работы с номерами портов менее 1024 необходимы права администратора. В настоящее время большинство сервисов понижают свои права в соответствии с установками;
□ instances
— максимальное количество одновременно работающих экземпляров программы;
□ log_type
— запись событий будет производиться в указанный файл или системный журнал;
□ log_on_success
и log_on_failure
— информация, которая будет сохраняться в журнале при удачном и неудачном входе в систему соответственно, Здесь можно указывать значения: PID
, HOST
или USER
;
□ per_source
— максимальное количество соединений от одного пользователя. Их может быть несколько, потому что юзеры любят максимально нагружать каналы и повышать скорость работы с помощью создания нескольких одновременно работающих соединений;
□ server_args
— аргументы, с которыми будет запускаться сервер.
При рассмотрении параметра user
я упомянул о необходимости прав администратора для доступа к портам с номером менее 1024. Это действительно так, но зачем это нужно? Не имея прав root, пользователь не сможет запустить сервер, который работает с портом от 1 до 1024. Такая защита необходима, потому что в данном диапазоне функционируют очень важные сервисы, и их нельзя запускать простому пользователю.
Представьте себе, что хакер с правами простого пользователя смог бы запустить FTP-сервер, который используется для передачи файлов. Сделав это, он получит возможность загружать на сервер файлы и скачивать их к себе на компьютер, что нежелательно.
5.4.2. Безопасность
Мы уже знаем, что программа xinetd позволяет определять права и время доступа к сервисам. Для этого в конфигурационном файле можно использовать три команды: no_access
, only_from
и access_time
.
Директива no_access
запрещает доступ с указанных компьютеров. Например, следующая строка в конфигурационном файле закрывает доступ с адреса 192.168.1.1:
no_access 192.168.1.1
Если необходимо запретить доступ целой сети, то достаточно указать только ее номер. Например, не должны иметь доступ все компьютеры с адресами 192.168.1.X, где X может быть любым числом. В этом случае нужно использовать следующую строку:
no_access 192.168.1.
Обратите внимание, что в этом случае указанный IP-адрес состоит из трех октетов, разделенных точками, а не четырех.
Для полного запрета доступа необходимо указать в конфигурационном файле следующую строку:
no_access 0.0.0.0
Теперь посмотрим, как можно предоставлять доступ с помощью директивы only_from
. Она удобна тем, что изначально запрещает все, кроме указанных в качестве параметра адресов. Получается, что мы действуем от запрета. Указав эту команду без параметра, мы вообще запретим доступ:
only_from =
Я рекомендую включить эту строку в основной конфигурационный файл /etc/xinetd.conf, а потом для каждого отдельного сервиса в его собственном конфигурационном файле прописывать разрешения. Например, давайте откроем доступ с адресов 192.168.1.2 и 192.168.1.19. Для этого добавляем в конфигурационный файл следующую строку:
only_from = 192.168.1.2 192.168.1.19
Можно разрешать доступ целым сетям:
only_from = 192.168.1.
А что, если всей сети разрешен доступ, а компьютеру с номером 1 запрещен? В этом случае можно использовать следующие две строки:
no_access = 192.168.1.1