Шрифт:
Интервал:
Закладка:
В протоколе Telnet сетевой виртуальный терминал определен как "двунаправленное символьное устройство, состоящее из принтера и клавиатуры". Принтер предназначен для отображения приходящей по сети информации, а клавиатура – для ввода данных, передаваемых по сети. По умолчанию предполагается, что для обмена информацией используется 7-битовый код ASCII, каждый символ которого закодирован в 8-битовое поле.
Согласование параметров взаимодействия позволяет унифицировать возможности представления информации на терминальных устройствах. Благодаря этой концепции можно использовать большинство возможностей современных терминалов. Обычно для этого существует специальная таблица соответствия, которая позволяет нестандартные команды терминала заменить стандартными наборами команд. Как правило, процесс согласования форм представления информации происходит в начальный момент организации Telnet-соединения. Каждый из процессов старается установить максимальные параметры сеанса. В UNIX-системах параметры терминалов содержатся в базе данных описания терминалов termcap. При инициировании Telnet-соединения обычно именно эти параметры используются в процессе согласования формы представления данных. При этом из одной системы в другую передается значение переменной окружения term. В процессе договора останутся только те функции, которые поддерживаются на обоих концах соединения.
Симметрия взаимодействия позволяет клиенту и серверу в течение одной сессии меняться ролями.
Команды Telnet
В табл. 28.1 приведены некоторые команды протокола Telnet с кратким пояснением. Как видно из таблицы, каждая команда представлена одним байтом, и чтобы различать команды и передаваемые данные, используется специальный признак команды.
Таблица 28.1. Команды протокола Telnet
Протокол Telnet предусматривает единый TCP-канал и для данных пользователя, и для управления. Поскольку по протоколу Telnet команды управления чередуются с данными, командам должен предшествовать специальный символ, называемый IAC (Interpret as Command, интерпретировать как команду) с кодом 255. В том случае, если необходимо передать символ данных с десятичным кодом 255, следует его передать дважды.
Команды протокола Telnet имеют размер не менее двух байтов. Первый из них всегда символ перехода в командный режим – IAC. Второй – команда протокола Telnet.
Программа-клиент telnet
Программа telnet – стандартный Telnet-клиент, входящий во все операционные системы UNIX-семейства и в практически все операционные системы Windows.
Для подключения к удаленной системе обычно используется команда вида:
telnet имя_хоста
Основные команды программы telnet приведены в табл. 28.2. Таблица 28.2. Команды программы telnet
Программа-сервер telnetd
Программа telnetd – это сервер, который обслуживает протокол Telnet. Программа telnetd обслуживает ТСР-порт 23, но ее можно сконфигурировать на использование другого порта.
При установке взаимодействия с удаленным клиентом telnetd обменивается командами настройки – включение режима эха, обмен двоичной информацией, тип терминала, скорость обмена, переменные окружения.
Применение Telnet и безопасность
Протокол Telnet долгие годы был единственной универсальной возможностью удаленно работать с различными консольными программами. По своей простоте, нетребовательности к ресурсам и полосе пропускания он до сих пор не имеет себе равных. Помимо этого, клиентская программа telnet позволяет устанавливать соединения и с другими сервисами – например с почтовым сервером SMTP или POP3, что дает возможность производить различные манипуляции (например, просмотреть без почтового клиента содержимое своего почтового ящика или отправить письмо). Однако при всех его достоинствах протокол Telnet имеет один огромный недостаток – весь трафик пересылается в открытом виде. Из-за этого любому злоумышленнику не составляет труда перехватить логин и пароль пользователя, а также другую информацию. В современном мире, где новые вирусы и троянские программы возникают ежедневно, а скандальные взломы различных серверов случаются еженедельно, использование протокола Telnet недопустимо. В качестве альтернативы протоколу Telnet используются программные пакеты SSH или OpenSSH. Но о них чуть позже.
Семейство r-команд
Приблизительно в то же время, что и протокол Telnet, были созданы программы, предназначенные для удаленного администрирования и работы, так называемые r-команды (remote-команды).
Команда rlogin
Команда rlogin (remote login) предназначена для захода удаленным терминалом между UNIX-хостами. Стандарт RFC 1282 содержит спецификацию протокола rlogin. Программа rlogin использует одно TCP-соединение между клиентом и сервером. Для нормального функционирования необходимо создать файл. rhosts, содержащий список хостов и пользователей, которым разрешено удаленно регистрироваться в системе. Каждая строка представляет собой пару «хост—пользователь», разделенную пробелом.
Команда rsh
Команда rsh (remote shell) используется для запуска командной оболочки на удаленном компьютере, после чего на нем возможно выполнять различные программы.
Команда rep
Команда rep (remote сору) используется для копирования файлов между компьютерами, причем эта операция может производиться между двумя удаленными компьютерами. Данная команда может копировать как один файл, так и группу файлов или каталогов.
Команда rsyne
Команда rsync, аналогично команде гер, позволяет копировать файлы между удаленными компьютерами. Однако, в отличие от гер, может значительно ускорить процесс копирования часто изменяемых пользователем файлов, поскольку благодаря используемым алгоритмам передает только измененные части файлов. Также позволяет копировать ссылки (links), специальные устройства (device), владельца и группу файла, права доступа.
Команда rdist
Эта команда позволяет осуществить массовую автоматическую рассылку файлов с локального хоста на большую группу хостов с проверкой наличия места, рассылкой извещений о проблемах, исполнением завершающих процедур и т. п. Сохраняет имя владельца, имя группы, права доступа и время модификации файла.
Применение r-команд и безопасность
Как и в ситуации с Telnet, r-комавды имеют ту же проблему с безопасностью – абсолютно незащищенную передачу информации, поэтому использование r-команд категорически не рекомендуется.
SSH и OpenSSH
Протокол SSH обеспечивает возможность удаленного выполнения команд и копирования файлов с аутентификацией клиента и сервера и шифрованием передаваемых данных, в том числе имени и пароля пользователя. Дополнительно обеспечивается шифрование данных X Windows и перенаправление любых TCP-соединений. Существует несколько программных реализаций, в частности, коммерческий SSH и бесплатный пакет с открытым исходным кодом OpenSSH.
Принцип работы SSH
SSH представляет собой протокол транспортного уровня, аутентификации и соединения и программные средства безопасного доступа к компьютерам по небезопасным каналам связи (telnet, X11, rsh, FTP). Аутентификация производится с использованием асимметричного шифрования с открытым ключом (SSH1 – RSA, SSH2 – RSA/DSA). Обмен данными – симметричное шифрование. Целостность переданных данных проверяется с помощью специальных контрольных сумм. Протокол транспортного уровня работает поверх TCP и использует 22-й порт. В качестве ключа берется случайная строка, которую генерирует клиент, шифрует с помощью открытого ключа сервера и передает серверу. Протокол аутентификации работает поверх протокола транспортного уровня и обеспечивает аутентификацию клиента для сервера. Шифрование трафика начинается после аутентификации сервера, но до аутентификации клиента, таким образом пароли в открытом виде не передаются. Возможно соединение произвольных портов TCP по защищенным каналам. Предусматривается возможность сжатия.
Существует две версии протокола – SSH1 и SSH2. По своей реализации – совершенно разные протоколы. Протокол SSH2 был разработан с учетом найденных в первом варианте уязвимостей.
OpenSSH
Некоммерческая реализация протокола SSH с открытым кодом. Программный пакет способен работать с протоколами SSH1 и SSH2. Имеется также поддержка r-команд.
Для дистрибутива Red Hat установка пакета OpenSSH включена в стандартную инсталляцию и никаких проблем не вызывает.
Конфигурирование OpenSSHКонфигурирование OpenSSH очень сильно зависит от вашей концепции обеспечения безопасности и необходимости поддержки старого типа протокола. Поскольку использование протокола SSH1 из-за найденных уязвимостей не рекомендуется – при конфигурировании необходимо запретить его использование. Также рекомендуется запретить использование r-команд и всего, что с ними связано. При конфигурировании OpenSSH необходимо произвести настройку сервера и клиента. Конфигурационный файл сервера называется sshd_config, а клиента – ssh_config.
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Microsoft Windows XP Professional. Опыт сдачи сертификационного экзамена 70-270 - Владислав Карпюк - Программное обеспечение
- Основы программирования в Linux - Нейл Мэтью - Программное обеспечение
- Windows Vista. Мультимедийный курс - Олег Мединов - Программное обеспечение