При получении запроса на установление соединения сервер
telnetd
читает содержимое файла
/etc/issue.net
и передает его клиенту. Данные, содержащиеся в этом файле, отображаются перед тем, как пользователь получает возможность зарегистрироваться на сервере. Опция
– h
, указанная при запуске
telnetd
, подавляет вывод данного сообщения. Как правило, в начальном сообщении приводятся некоторые сведения о компьютере, на котором выполняется Telnet-сервер. Ознакомившись с ними, пользователь может убедиться, что он обратился к нужному ему узлу сети. По умолчанию в начальном сообщении содержатся данные о версиях системы и ядра. Большинству
пользователей эти сведения не нужны, но они наверняка заинтересуют злоумышленника, который собирается взломать систему. Прочитав начальное сообщение, он сможет определить, какое программное обеспечение выполняется на компьютере, и догадаться, какими недостатками в защите можно воспользоваться.
На заметку
Аналогичные сведения отображаются при регистрации пользователя с консольного терминала (непосредственно подключенного к компьютеру). Они содержатся в файле
/etc/issue
. (При установлении соединения с помощью X Window данный файл не используется. Вопросы удаленной регистрации средствами X Window будут рассматриваться в главе 14.)
Многие системы позволяют непосредственно редактировать файл
/etc/issue.net
. Вы можете изменять текст в этом файле по своему усмотрению. В составе начального сообщения могут содержаться специальные переменные, которые
telnetd
заменяет данными о системе. Назначение этих переменных описано в табл. 13.1.
Таблица 13.1. Переменные, используемые в файле
/etc/issue.net
Переменная
Описание
%t
Используемый терминал (число, описывающее устройство ввода-вывода текста)
%h
Полное доменное имя компьютера
%D
Имя домена NIS (если сервер NIS используется в сети)
%d
Текущая дата и время
%s
Имя операционной системы (Linux)
%m
Тип аппаратного обеспечения (процессора)
%r
Номер версии ядра
%v
Версия операционной системы (обычно не используется)
%%
Символ
%
Предположим, что текст в файле
/etc/issue.net
выглядит следующим образом:
Welcome to %h.
Current time is %d.
Notice: For authorized users only!
Если ваш компьютер имеет имя
maple.threeroomco.com
, начальное сообщение будет выглядеть так:
$ telnet maple.threeroomco.com
Trying 172.21.32.43...
Connected to maple.threeroomco.com.
Escape character is '^]'.
Welcome to maple.threeroomco.com.
Current time is 10:57 on Monday, 12 August 2002.
Notice: For authorized users only!
В некоторых разновидностях Linux (в частности, в Caldera, Mandrake и некоторых версиях Red Hat) файлы
/etc/issue
и
/etc/issue.net
создаются в процессе загрузки. Формированием этих файлов занимается сценарий
/etc/rc.d/rc.local
.
Код сценария, используемого в системе Mandrake 8.1, приведен ниже.
# Этот сценарий создает файл /etc/issue при каждой
# загрузке системы. Чтобы сохранить изменения, внесенные
# в файл /etc/issue, надо изменить код сценария.
if [ -х /usr/bin/linux_logo ]; then
/usr/bin/linux_logo -c -n -f > /etc/issue
echo "" >> /etc/issue
else
echo "" > /etc/issue
fi
echo "$R" >> /etc/issue
echo "Kernel $(uname -r) on $ a $SMP$ (uname -m) / \1" >> /etc/issue
if [ "$SECURITY" -le 3 ]; then
echo "Welcome to %h" > /etc/issue.net
echo "$R" >> /etc/issue.net
echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue.net
Начиная с версии 7.2 в системе Red Hat используются статические файлы
issue
и
issue.net
. В Caldera 3.1 и Mandrake 8.1 эти файлы по-прежнему формируются с помощью сценария
/etc/rc.d/rc.local
.
В некоторых строках приведенного выше кода используются переменные, которые были определены ранее в сценарии. Такой подход позволяет системе включать в состав начального сообщения дополнительную информацию, например номер процессора. Если вы измените содержимое
/etc/issue
и
/etc/issue.net
, при следующей загрузке сценарий
/etc/rc.d/rc.local
восстановит исходный вид этих файлов. Для того чтобы изменить начальное сообщение, можно закомментировать строки сценария, которые отвечают за запись в файлы
/etc/issue
и
/etc/issue.net
, либо модифицировать код самого сценария.
Средства защиты Telnet
После отображения начального сообщения, содержащегося в файле
/etc/issue.net
,
telnetd
передает управление
/bin/login
либо программе, указанной с помощью опции
– L
. Программа
/bin/login
предоставляет возможность локальной и удаленной регистрации в текстовом режиме. Она отображает приглашения на ввод пользовательского имени и пароля (
login:
и
password:
). Если регистрационные данные введены корректно,
/bin/login
отмечает время последней регистрации и вызывает оболочку, используемую по умолчанию.
Поскольку большинство серверов Telnet не шифрует данные, пересылаемые по сети, пользовательское имя и пароль передаются в незакодированном виде. Несмотря на то что при вводе пароля символы не отображаются на экране, пароль может быть перехвачен по пути следования от клиента к серверу. Если вы не указываете при вызове
telnetd
опцию
– L
, передача незашифрованного имени пользователя и пароля является единственным средством аутентификации, поддерживаемым
telnetd
. В отличие от
rlogind
, сервер Telnet не использует принцип доверия, т.е. не полагается на процедуру аутентификации, выполняемую на стороне клиента. (Следует заметить, что имя пользователя и пароль все же поступают на сервер с клиентского компьютера. Некоторые клиенты Telnet могут быть сконфигурированы для автоматической передачи регистрационных данных.)