Недостатки,
проблемы безопасности
Обзор
и сравнительные таблицы telnet-клиентов
и telnet-серверов
обзор
и сравнительные таблицы SSH
-клиентов
Telnet (Teletype Network) — сетевой протокол для удалённого доступа к
компьютеру с помощью командного интерпретатора. Аналогичное название имеют
утилиты для работы с протоколом.
TELNET предлагает три услуги:
Протокол TELNET позволяет обслуживающей машине рассматривать все удаленные
терминалы как стандартные "сетевые виртуальные терминалы" строчного
типа, работающие в кодах ASCII, а также обеспечивает возможность согласования
более сложных функций (например, локальный или удаленный эхо-контроль,
страничный режим, высота и ширина экрана и т. д.). На прикладном уровне над
TELNET находится либо программа поддержки реального терминала, либо прикладной
процесс в обслуживающей машине, к которому осуществляется доступ с терминала.
Формат NTV достаточно прост. Для данных используются 7-битовые ASCII коды.
8-битовые же октеты зарезервированы для командных последовательностей.
После того как TELNET связь установлена, начинаются переговоры об
используемых опциях. Каждая из договаривающихся сторон может послать другой
один из четырех запросов will, do,
wont и dont.
Коды опций в Telnet
Код опции в Telnet |
Описание |
Номер RFC |
0 |
Двоичный обмен |
856 |
1 |
Эхо |
857 |
2 |
Повторное соединение NIC |
15391 |
3 |
Подавление буферизации ввода |
858 |
4 |
Диалог о размере сообщения NIC |
15393 |
5 |
Статус |
859 |
6 |
Временная метка |
860 |
7 |
Удаленный доступ и отклик |
726 |
8 |
Длина выходной строки nic |
20196 |
9 |
Размер выходной страницы nic |
20197 |
10 |
Режим вывода символов <возврат каретки> |
652 |
11 |
Вывод горизонтальной табуляции |
653 |
12 |
Установка положения табуляции при выводе |
654 |
13 |
Режим вывода команды смены страницы |
655 |
14 |
Вывод вертикальной табуляции |
656 |
15 |
Определяет положение вертикальной табуляции |
657 |
16 |
Режим вывода символа <перевод строки> |
658 |
17 |
Расширенный набор кодов ASCII |
698 |
18 |
Возврат (logout) |
727 |
19 |
Байт-макро |
735 |
20 |
Терминал ввода данных |
732 |
21 |
Supdup |
736 |
22 |
Supdup вывод |
747 |
23 |
Место отправления |
779 |
24 |
Тип терминала |
930 |
25 |
Конец записи |
885 |
26 |
Tacacs- идентификация
пользователя |
927 |
27 |
Пометка вывода |
933 |
28 |
Код положения терминала |
946 |
29 |
Режим |
3270 1041 |
30 |
X.3 PAD |
1053 |
31 |
Размер окна |
1073 |
Значения переменных можно узнать с помощью команды display.
Такими переменными могут быть: echo,
escape, interrupt, quit, flushoutput, erase, kill, eof, echo. Последняя переменная (в исходном
состоянии `^E') в построчном режиме осуществляет переключение между локальным
эхо на ввод символа (режим по умолчанию) и подавлением эхо, например при вводе
пароля.
Переменные Telnet
Название переменной |
Назначение |
Echo |
Определяет, будет ли отображаться на экране то, что вы
вводите с клавиатуры. При значении off ввод не
отображается, например, при вводе пароля. |
Escape |
Задает символ, который используется в качестве escape. Появление этого символа во входном потоке заставляет
его и последующие символы интерпретироваться в ЭВМ, где функционирует процесс
telnet, как команда |
Interrupt |
Специфицирует символ прерывания процесса. Ввод его
приводит к остановке процесса пользователя, работающего на удаленной ЭВМ. |
Quit |
Специфицирует символ, который используется пользователем
на его клавиатуре для выполнения команд brake или attention. |
Flushoutput |
Определяет символ, который служит для прерывания
процедуры вывода на удаленной ЭВМ. |
EOF |
Специфицирует символ, который используется для обозначения
конца файла на удаленной машине. |
Операция прерывание процесса (IP) позволяет прервать, удалить или завершить
процесс пользователя (например, выйти из бесконечного цикла). Процедура
прерывание вывода (AO) позволяет процессу пользователя продолжаться, но вывод
на его рабочую станцию прерывается, при этом очищается буфер от уже записанной,
но не отображенной информации. Запрос "Вы здесь?" (AYT) удобен, когда необходимо выяснить выполняется ли
пользовательская задача или нет.
Операция стереть символ (EC) позволяет пользователю удалить символ из потока
данных, применяется для редактирования текста на экране. Операция стереть
строку (EL) позволяет пользователю при редактировании удалить целую строку.
Блок данных процедуры TELNET содержит три байта и называется командой.
Формат этого блока показан на рисунке
Первый байт в соответствии с таблицей содержит 8 единиц, далее следует байт
команды. Третий октет служит для размещения кода опции, он может и
отсутствовать.
Протокол telnet не использует шифрование
и поэтому уязвим для атак при применении в интернете или локальной сети. Равную
функциональность при большей защищённости обеспечивает сетевой протокол SSH.
Windows
Macintosh
Различные клиенты
Бесплатные с открытым
исходным кодом.
SSH (Secure Shell)
— сетевой протокол, позволяющий производить удалённое управление компьютером и
передачу файлов. Сходен по функциональности с
протоколом Telnet и rlogin,
однако использует алгоритмы шифрования передаваемой информации.
Криптографическая защита протокола SSH не фиксирована, возможен выбор
различных алгоритмов шифрования. Клиенты и серверы, поддерживающие этот
протокол, доступны для различных платформ. Кроме того, протокол позволяет не
только использовать безопасный удалённый shell на
машине, но и туннелировать графический интерфейс — X Tunnelling
(только для Unix-подобных ОС или приложений, использующих графический интерфейс
X Window System). SSH также
способен передавать через безопасный канал (Port Forwarding) любой другой сетевой протокол, обеспечивая (при
надлежащем конфигурировании) возможность безопасной пересылки не только
X-интерфейса, но и, например, звука.
Поддержка SSH реализована во всех UNIX системах, и на большинстве из них в
числе стандартных утилит присутствуют клиент и сервер ssh.
Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил
после широкого развития sniffer’ов, как
альтернативное небезопасному телнету
решение для управления важными узлами.
На данный момент известно две ветки версий — 1 и 2. Однако ветка 1 остановлена, так как в конце 90-x в ней было найдено много уязвимостей, некоторые из которых до сих пор накладывают серьёзные ограничения на её использование, поэтому перспективной, развивающейся и наиболее безопасной является версия 2.
SSH предоставляет 3 способа аутентификации
клиента: по ip адресу клиента(небезопасно), по публичному ключу клиента и
стандартный парольный метод. Вот как работает ssh версии 2:
при запросе клиента сервер сообщает ему, какие методы аутентификации он
поддерживает(это определяется в опции PreferredAuthentications sshd.conf) и
клиент по очереди пытается проверить их. По умолчанию клиент вначале пытается
аутентифицироваться своим адресом, затем публичным ключом и, если ничего не
сработало, передаёт пароль, введённый с клавиатуры(при этом пароль шифруется
асимметрическим шифрованием). После прохождения аутентификации одним из методов
из имеющихся у клиента и сервера пар ключей генерируется ключ симметрического
шифрования, который, как я описывал во введении, генерируется на основании
своего секретного и удалённого публичного ключей. После чего все последующие
данные, передаваемые через ssh, шифруются данным ключом(обычно используется
алгоритм aes с длиной ключа 128 бит). Отмечу, что протокол ssh версии 1 имел
некоторые баги в шифрации передаваемого трафика и являлся по сути методом безопасной
аутентификации, поэтому по современным меркам данный протокол считается
небезопасным. Протокол версии 2 поддерживает более современные методы шифрования
тарфика, также вместе с данными посылаются контрольные суммы формата sha или
md5, что исключает подмену или иную модификацию передаваемого трафика(чего не
было у ssh версии 1).
Способы аутентификации пользователей через SSH:
SSH защищает от:
Другими словами, ssh никогда не
доверяет сети; какой-либо "противник" имеющий _определенный_ доступ к
сети может лишь _насильно_ разорвать установленное ssh
соединение, но никак не расшифровать его, похитить или "обыграть".
Все вышесказанное ВЕРНО лишь при использовании шифрования. Однако Ssh имеет опцию шифрования "none",
которая необходима лишь для отладки и ни в коем случае не должна быть
использована для обычной работы.
Ssh не поможет в случае нарушения безопасности локальной машины другими методами. Например, если хакер взломал компьютер или получил привелигированный-root доступ ИЗНУТРИ, что позволит ему изменить на свой лад и работу ssh тоже. Если какой-либо недоброжелатель имеет доступ в домашнюю директорию пользователей, то безопасность так же под вопросом, одной из частых тому причин является, например экспортирование домашней директории по NFS.
Поддержка операционных систем
Поддержка технологий и протоколов