МИНИСТЕРСТВО ТРАНСПОРТА И СВЯЗИ УКРАИНЫ
ОДЕССКАЯ НАЦИОНАЛЬНАЯ АКАДЕМИЯ СВЯЗИ им. А.С.ПОПОВА
Кафедра сетей связи
Реферат
на тему: «Протоколы SSH, CMIP, Telnet»
Одесса 2013
- Стандарты и программные реализации
- SSH-серверы
- SSH-клиенты и оболочки
- Советы по безопасности использования SSH
- Примеры использования SSH
- SSH-туннелирование
- Техническая информация о протоколе
Основные характеристики протокола CMIP
Протокол CMIP и услуги CMIS
Фильтрация
Синхронизация
- Устройство
- Опции
- Принтер и клавиатура NVT
- Структура команд Telnet
- Применения
- Безопасность
- Telnet и другие протоколы
Стандарты и программные реализации
SSH (англ. Secure SHell -- «безопасная оболочка») -- сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Схож по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол. Таким образом, можно не только удалённо работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удалённого запуска клиентов X WindowSystem.
Большинство хостинг-провайдеров за определённую плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это может быть удобно как для работы в командной строке, так и для удалённого запуска программ (в том числе графических приложений).
Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Тату Улёненом из Технологического университета Хельсинки (Финляндия). SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, несовместимая с SSH-1. Протокол приобрел ещё большую популярность, и к 2000 году у него было около двух миллионов пользователей. В настоящее время под термином «SSH» обычно подразумевается именно SSH-2, т.к. первая версия протокола ввиду существенных недостатков сейчас практически не применяется.
В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет?стандарта.
Однако, в некоторых странах (Франция, Россия, Ирак и Пакистан) до сих пор требуется специальное разрешение в соответствующих структурах для использования определённых методов шифрования, включая SSH.
Распространены две реализации SSH: частная коммерческая и бесплатная свободная. Свободная реализация называется OpenSSH. К 2006 году 80 % компьютеров сети Интернет использовало именно OpenSSH. Частная реализация разрабатывается организацией SSH Communications Security, которая является стопроцентным подразделением корпорации Tectia, она бесплатна для некоммерческого использования. Эти реализации содержат практически одинаковый набор команд.
Протокол SSH-2, в отличие от протокола telnet, устойчив к атакам прослушивания трафика («снифинг»), но неустойчив к атакам «человек посередине». Протокол SSH-2 также устойчив к атакам путем присоединения посредине (англ. sessionhijacking), так как невозможно включиться в уже установленную сессию или перехватить её.
Для предотвращения атак «человек посередине» при подключении к хосту, ключ которого ещё не известен клиенту, клиентское ПО показывает пользователю «слепок ключа» (англ. keyfingerprint). Рекомендуется тщательно проверять показываемый клиентским ПО «слепок ключа» со слепком ключа сервера, желательно полученным по надёжным каналам связи или лично.
Поддержка SSH реализована во всех UNIX_подобных системах, и на большинстве из них в числе стандартных утилит присутствуют клиент и сервер ssh. Существует множество реализаций SSH-клиентов и для не-UNIX ОС. Большую популярность протокол получил после широкого развития анализаторов трафика и способов нарушения работы локальных сетей, как альтернативное небезопасному протоколу Telnet решение для управления важными узлами.
Для работы по SSH нужен SSH-сервер и SSH-клиент. Сервер прослушивает соединения от клиентских машин и при установлении связи производит аутентификацию, после чего начинает обслуживание клиента. Клиент используется для входа на удалённую машину и выполнения команд.
Для соединения сервер и клиент должны создать пары ключей -- открытых и закрытых -- и обменяться открытыми ключами. Обычно используется также и пароль.
SSH-серверы
· *BSD: OpenSSH
· Linux: dropbear, lsh-server, openssh-server, ssh
· Windows: freeSSHd, copssh, WinSSHD, KpyM Telnet/SSH Server, MobaSSH, OpenSSH через Cygwin
SSH-клиенты и оболочки
· GNU/Linux, *BSD: kdessh, lsh-client, openssh-client, putty, ssh, Vinagre
· MS Windows и Windows NT: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD, XShell
· MS Windows Mobile: PocketPuTTy, mToken, sshCE, PocketTTY, OpenSSH, PocketConsole
· Mac OS: NiftyTelnet SSH
· Symbian OS: PuTTY
· Java: MindTerm, AppGateSecurityServer
· J2ME: MidpSSH
· iPhone: i-SSH, ssh (вкомплектес Terminal)
· Android: connectBot
· Blackberry: BBSSH
· MAEMO 5: OpenSSH
Советы по безопасности использования SSH
3. Выбор нестандартного порта для SSH-сервера.
4. Использование длинных SSp RSA-ключей (2048 бит и более). Системы шифрования на основе RSA считаются надёжными, если длина ключа не менее 1024 бит.
5. Ограничение списка IP-адресов, с которых разрешён доступ (например, настройкой файервола).
7. Отказ от использования распространённых или широко известных системных логинов для доступа по SSH.
8. Регулярный просмотр сообщений об ошибках аутентификации.
9. Установка систем обнаружения вторжений.
10. Использование ловушек, подделывающих SSH-сервис (honeypots).
Примеры использования SSH
Команда подключения к локальному SSH-серверу из командной строки GNU/Linux или FreeBSD для пользователя pacify (сервер прослушивает нестандартный порт 30000): $ ssh -p 30000 [email protected]
Генерация пары ключей (в UNIX-подобных ОС) осуществляется командой $ ssh-keygen
Генерация пары SSH-2 RSA-ключей длиной 4096 бита программой puttygen под UNIX?подобными ОС:
$ puttygen -t rsa -b 4096 -o sample
Некоторые клиенты, например, PuTTY, имеют и графический интерфейс пользователя.
Для использования SSH в Python существуют такие модули, как python-paramiko и python-twisted-conch.
SSH-туннелирование
SSH-туннель -- это туннель, создаваемый посредством SSH-соединения и используемый для шифрования туннелированных данных. Используется для того, чтобы обезопасить передачу данных в Интернете. При пересылке через SSH-туннель незашифрованный трафик любого протокола шифруется на одном конце SSH-соединения и расшифровывается на другом. Практическая реализация может выполняться несколькими способами:
· Созданием Socks-прокси для приложений, которые не умеют работать через SSH-туннель, но могут работать через Socks-прокси
· Использованием приложений, умеющих работать через SSH-туннель.
· Созданием VPN-туннеля, подходит практически для любых приложений.
· Если приложение работает с одним определённым сервером, можно настроить SSH-клиент таким образом, чтобы он пропускал через SSH-туннель TCP-соединения, приходящие на определённый TCP-порт машины, на которой запущен SSH-клиент. Например, клиенты Jabber подключаются по умолчанию на порт 443. Тогда, чтобы настроить подключение к серверу Jabber через SSH-туннель, SSH-клиент настраивается на перенаправление подключений с любого порта локальной машины на удалённый сервер: $ ssh -L 4430:jabber.example.com:443 somehost. В данном случае Jabber-клиент настраивается на подключение к порту 4430 сервера localhost (если ssh-клиент запущен на той же машине что и Jabber-клиент). Для создания ssh-туннеля необходима машина с запущенным ssh-сервером и доступом к jabber.example.com. Такая конфигурация может использоваться в случае, если с локальной машины доступ к jabber.example.com закрыт файерволом, но есть доступ к некоторому ssh-серверу, у которого ограничения доступа в Интернет отсутствуют.
Техническая информация о протоколе
SSH -- это протокол прикладного уровня. SSH-сервер обычно прослушивает соединения на TCP-порту 22. Спецификация протокола SSH-2 содержится в RFC 4251. Для аутентификации сервера в SSH используется протокол аутентификации сторон на основе алгоритмов электронно-цифровой подписи RSA или DSA. Для аутентификации клиента также может использоваться ЭЦП RSA или DSA, но допускается также аутентификация при помощи пароля (режим обратной совместимости с Telnet) и даже ip-адреса хоста (режим обратной совместимости с rlogin). Аутентификация по паролю наиболее распространена; она безопасна, так как пароль передаётся по зашифрованному виртуальному каналу. Аутентификация по ip-адресу небезопасна, эту возможность чаще всего отключают. Для создания общего секрета (сеансового ключа) используется алгоритм Диффи -- Хеллмана (DH). Для шифрования передаваемых данных используется симметричное шифрование, алгоритмы AES, Blowfish или 3DES. Целостность передачи данных проверяется с помощью CRC32 в SSp илиHMAC-SHA1/HMAC-MD5 в SSp. Для сжатия шифруемых данных может использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP. Сжатие SSH включается лишь по запросу клиента, и на практике используется редко.
Основные характеристики протокола CMIP
CMIP реализует весь набор услуг CMIS. С помощью этих услуг протокол CMIP поддерживает следующую услугу удаленных операций:
Запрос (invoke);
Возврат результата;
Возврат ошибки;
Отклонение запроса пользователем услуги;
Отклонение запроса провайдером услуги.
Управляющая информация от менеджера к агенту, передаваемая по протоколу CMIP кодируется в соответствии с правилами ASN.1 и BER.
Для каждой операции определен формат блока данных, переносимых по сети от менеджера агенту, и наоборот.
Формат протокольных блоков данных CMIP описывается нотацией ASN.1 и имеет гораздо более сложную структуру, чем блоки SNMP. Например, блок данных операции M-GET имеет поля для задания имен атрибутов, значения которых запрашивает менеджер, а также поля задания параметров обзора и фильтрации. Имеются также поля для задания параметров прав доступа к объекту.
Применение протокола CMIP определяет достаточно высокий начальный уровень сложности системы управления, так как для его работы необходимо реализовать ряд вспомогательных служб, объектов и баз данных объектов.
Уведомления агента CMIP всегда передаются с помощью надежного транспортного протокола и в случае потери будут переданы повторно.
Протокол CMIP рассчитан на агентов, которые могут по одной простой команде от менеджера выполнить сложную последовательность действий.
Протокол CMIP существенно лучше масштабируется, так как может воздействовать сразу на несколько объектов, а ответы от агентов проходят через фильтры, которые ограничивают передачу управляющей информации только определенным агентам и менеджерам. Протокол CMIP, который является протоколом взаимодействия между агентами и менеджерами системы управления OSI, позволяет с помощью одной команды воздействовать сразу на группу агентов, применив такие опции, как обзор и фильтрация.
MIB для протокола CMIP не имеют единого стандарта и разрабатываются каждым производителем телекоммуникационного оборудования только для своего собственного оборудования. Исключение составляет только стандарт на MIB по системам передачи G.722, G.774.
Протокол CMIP и услуги CMIS
Доступ к управляющей информации, хранящейся в управляемых объектах, обеспечивается с помощью элемента системы управления, называемого службой CMSIE (Common Management Information Service Element). Служба CMSIE построена в архитектуре распределенного приложения, где часть функций выполняет менеджер, а часть - агент. Взаимодействие между менеджером и агентом осуществляется по протоколу CMIP. Услуги, предоставляемые службой CMSIE, называются услугами CMIS (Common Management Information Services).
Протокол CMIP и услуги CMIS определены в стандартах Х.710 и Х.711 ITU-T. Услуги CMIS разделяются на две группы - услуги, инициируемые менеджером (запросы), и услуги, инициируемые агентом (уведомления).
Услуги, инициируемые менеджером, включают следующие операции:
· M-CREATE инструктирует агента о необходимости создать новый экземпляр объекта определенного класса или новый атрибут внутри экземпляра объекта;
· M-DELETE инструктирует агента о необходимости удаления некоторого экземпляра объекта определенного класса или атрибута внутри экземпляра объекта;
· M-GET инструктирует агента о возвращении значения некоторого атрибута определенного экземпляра объекта;
· M-SET инструктирует агента об изменении значения некоторого атрибута определенного экземпляра объекта;
· M-ACTION инструктирует агента о необходимости выполнения определенного действия над одним или несколькими экземплярами объектов.
Агент инициирует только одну операцию:
M-EVENT_REPORT - отправка уведомления менеджеру.
Для реализации своих услуг служба CMISE должна использовать службы прикладного уровня стека OSI - ACSE, ROSE.
Отличие услуг CMIS от аналогичных услуг SNMP состоит в большей гибкости. Если запросы GET и SET протокола SNMP применимы только к одному атрибуту одного объекта, то запросы M-GET, M-SET, M-ACTION и M-DELETE могут применяться к более чем одному объекту. Для этого стандарты CMIP/CMIS вводят такие понятия, как обзор (scoping), фильтрация (filtering) и синхронизация (synchronization).
Обзор
Запрос CMISE может использовать обзор, чтобы опросить одновременно несколько объектов. Вводятся четыре уровня обзора:
· базовый объект, определенный своим отличительным именем FDN;
· объекты, расположенные на n-м уровне подчинения относительно базового в дереве включения;
· базовый объект и все объекты, расположенные на подчиненных ему уровнях до n-го (включительно) в дереве включения;
· поддерево - базовый объект и все ему подчиненные в дереве включения.
Фильтрация
Фильтрация заключается в применении булевого выражения к запросу менеджера. Запрос применяется только к тем объектам и их атрибутам, для которых данное булево выражение верно. Булевы выражения могут включать операторы отношения =>, <=,<,> или определенные атрибуты. Возможно построение сложных фильтров на основе объединения нескольких фильтров в один составной.
Синхронизация
При выполнении запросов к нескольким объектам используется одна из двух схем синхронизации: атомарная или «по возможности». При атомарной схеме запрос выполняется только в том случае, когда все объекты, попадающие в область действия обзора или фильтра, могут успешно выполнить данный запрос. Синхронизация «по возможности» подразумевает передачу запроса всем объектам, к которым запрос относится. Операция завершается при выполнении запроса любым количеством объектов.
Протокол CMIP представляет собой набор операций, прямо соответствующих услугам CMIS. Таким образом, в протоколе CMIP определены операции M-GET, M-SET, M-CREATE и т. д. Для каждой операции определен формат блока данных, переносимых по сети от менеджера агенту, и наоборот. Формат протокольных блоков данных CMIP описывается нотацией ASN.1 и имеет гораздо более сложную структуру, чем блоки SNMP. Например, блок данных операции M-GET имеет поля для задания имен атрибутов, значения которых запрашивает менеджер, а также поля задания параметров обзора и фильтрации, определяющих множество экземпляров объектов, на которые будет воздействовать данный запрос. Имеются также поля для задания параметров прав доступа к объекту.
Сравнение протоколов SNMP и CMIP
· Применение протокола SNMP позволяет строить как простые, так и сложные системы управления, а применение протокола CMIP определяет некоторый, достаточно высокий начальный уровень сложности системы управления, так как для его работы необходимо реализовать ряд вспомогательных служб, объектов и баз данных объектов.
· Агенты CMIP выполняют, как правило, более сложные функции, чем агенты SNMP. Из-за этого операции, которые менеджеру можно выполнить над агентом SNMP, носят атомарный характер, что приводит к многочисленным обменам между менеджером и агентом.
· Уведомления (traps) агента SNMP посылаются менеджеру без ожидания подтверждения, что может привести к тому, что важные сетевые проблемы останутся незамеченными, так как соответствующее уведомление окажется потерянным, в то время как уведомления агента CMIP всегда передаются с помощью надежного транспортного протокола и в случае потери будут переданы повторно.
· Решение части проблем SNMP может быть достигнуто за счет применения более интеллектуальных MIB (к которым относится RMON MIB), но для многих устройств и ситуаций таких MIB нет (или нет стандарта, или нет соответствующей MIB в управляемом оборудовании).
· Протокол CMIP рассчитан на интеллектуальных агентов, которые могут по одной простой команде от менеджера выполнить сложную последовательность действий.
· Протокол CMIP существенно лучше масштабируется, так как может воздействовать сразу на несколько объектов, а ответы от агентов проходят через фильтры, которые ограничивают передачу управляющей информации только определенным агентам и менеджерам.
сетевой протокол операционный текстовый
TELNET (англ. TErminaLNETwork) -- сетевой протокол для реализации текстового интерфейса по сети (в современной форме -- при помощи транспорта TCP). Название «telnet» имеют также некоторые утилиты, реализующие клиентскую часть протокола. Современный стандарт протокола описан в RFC 854.
Выполняет функции протокола прикладного уровня модели OSI.
Назначение протокола TELNET в предоставлении достаточно общего, двунаправленного, восьмибитного байт-ориентированного средства связи. Его основная задача заключается в том, чтобы позволить терминальным устройствам и терминальным процессам взаимодействовать друг с другом. Предполагается, что этот протокол может быть использован для связи вида терминал-терминал («связывание») или для связи процесс-процесс («распределенные вычисления»).
Устройство
Хотя в сессии Telnet выделяют клиентскую и серверную сторону, протокол на самом деле полностью симметричен. После установления транспортного соединения (как правило, TCP) оба его конца играют роль «сетевых виртуальных терминалов» (англ. Network Virtual Terminal, NVT), обменивающихся двумя типами данных:
· Прикладными данными (то есть данными, которые идут от пользователя к текстовому приложению на стороне сервера и обратно);
· Командами протокола Telnet, частным случаем которых являются опции, служащие для уяснения возможностей и предпочтений сторон.
Хотя Telnet-сессии, выполняющейся по TCP, свойственен полный дуплекс, NVT должен рассматриваться как полудуплексное устройство, работающее по умолчанию в буферизированном строковом режиме.
Прикладные данные проходят через протокол без изменений , то есть на выходе второго виртуального терминала мы видим именно то, что было введено на вход первого. С точки зрения протокола данные представляют просто последовательность байтов (октетов), по умолчанию принадлежащих набору ASCII, но при включенной опции Binary -- любых. Хотя были предложены расширения для идентификации набора символов , но на практике ими не пользуются. Все значения октетов прикладных данных кроме \377 (десятичное 255) передаются по транспорту как есть. Октет \377 передаётся последовательностью \377\377 из двух октетов. Это связано с тем, что октет \377 используется на транспортном уровне для кодирования опций.
Опции
Протокол предоставляет по умолчанию минимальную функциональность и набор расширяющих её опций. Принцип оговоренных опций требует проводить переговоры при включении каждой из опций. Одна сторона инициирует запрос, а другая сторона может либо принять, либо отвергнуть предложение. Если запрос принимается, то опция немедленно вступает в силу. Опции описаны отдельно от протокола как такового, и их поддержка программным обеспечением произвольна. Клиенту протокола (сетевому терминалу) предписывается отвергать запросы на включение неподдерживаемых и неизвестных опций.
Принтер и клавиатура NVT
Принтер NVT имеет неопределённую ширину каретки и длину страницы и должен иметь представление всех 95 печатных символов US-ASCII (коды с 32 по 126). Управляющие символы имеют следующие значения:
Название |
Описание |
||
Нет операции |
|||
Переводит принтер на следующую строку печати, оставаясь на той же горизонтальной позиции. |
|||
CarriageReturn (CR) * |
Перемещает принтер к левой границе текущей строки. |
||
Производит аудио или видеосигнал (но НЕ перемещает головку принтера). |
|||
Перемещает головку принтера на один символ по направлению к левой границе. |
|||
HorizontalTab (HT) |
Перемещает принтер на следующую остановку горизонтальной табуляции. Остается неопределённым как сторона определяет и устанавливает эти остановки табуляции. |
||
VerticalTab (VT) |
Перемещает принтер на следующую остановку вертикальной табуляции. Остается неопределённым как сторона определяет и устанавливает эти остановки табуляции. |
||
Перемещает принтер к верхней части следующей страницы, оставаясь на той же горизонтальной позиции. |
Поддержка действия символов, помеченных как *, обязательна. Прочие могут производить заданное действие или не производить никакого; одна сторона не обязана предполагать ничего определённого о поддержке конкретных необязательных управляющих символов другой стороной.
Последовательность «CR LF» должна обрабатываться как единый символ перевода строки и использоваться всякий раз, когда требуется их объединённое действие; последовательность «CR NUL» должна использоваться, где требуется только возврат каретки; и использования символа CR следует избегать в других контекстах.
Структура команд Telnet
Каждая команда TELNET является многобайтовой последовательностью, начинающейся с кода \377 (десятичное: 255) «InterpretasCommand» (IAC) и кода команды. Команды, отвечающие за договоренности по опции, являются трехбайтовыми последовательностями, где третий байт является кодом опции. Нижеперечисленные коды и кодовые последовательности имеют соответственный смысл только когда следуют сразу за IAC.
Название |
Код (десятичный/ шестнадцатеричный) |
Описание |
|
Завершает согласование, начатое командой SB |
|||
Нет операции. |
|||
Синхронизация (Synch) обмена данными. Эта команда всегда сопровождается TCP Urgentnotification. |
|||
Нажатакнопка «Break» или «Attention». |
|||
InterruptProcess |
Приостанавливает, прерывает, аварийно прекращает или завершает процесс. |
||
Подавление вывода текущего процесса. Также отправляет сигнал Synch пользователю. |
|||
Отправляет обратно ответ терминала, состоящий из печатных символов. |
|||
Получатель должен удалить предыдущий символ, если это возможно. |
|||
Стереть последнюю введённую строку, то есть все данные, полученные после последнего перевода строки. |
|||
Ожидается передача данных. |
|||
Начало согласования опции, требующего передачи параметров. |
|||
Указывает на желание исполнять или подтверждает, что сейчас исполняется указанная опция. |
|||
WON"T опция |
Указывает на отказ начать или продолжить исполнять указанную опцию. |
||
Запрос на то, чтобы другая сторона исполнила или подтвердила исполнение указанной опции. |
|||
DON"T опция |
Требование на то, чтобы другая сторона остановила исполнение или подтвердила то, что указанная опция более не исполняется. |
||
Байт данных 255. |
Применения
Исторически Telnet служил для удалённого доступа к интерфейсу командной строки операционных систем. Впоследствии его стали использовать для прочих текстовых интерфейсов, вплоть до игр MUD и анимированного ASCII-art. Теоретически, даже обе стороны протокола могут являться не только людьми, но и программами.
Иногда клиенты telnet используются для доступа к другим протоколам на основе транспорта TCP, см. #Telnet и другие протоколы.
Протокол telnet используется в управляющем соединении FTP, то есть заходить на сервер командой telnet ftp.example.net ftp для выполнения отладки и экспериментов не только возможно, но и правильно (в отличие от применения клиентов telnet для доступа к HTTP, IRC и большинству других протоколов).
Безопасность
В протоколе не предусмотрено использование ни шифрования, ни проверки подлинности данных. Поэтому он уязвим для любого вида атак, к которым уязвим его транспорт, то есть протокол TCP. Для функциональности удалённого доступа к системе в настоящее время применяется сетевой протокол SSH (особенно его версия 2), при создании которого упор делался именно на вопросы безопасности. Так что следует иметь в виду, что сессия Telnet весьма беззащитна, если только не осуществляется в полностью контролируемой сети или с применением защиты на сетевом уровне (различные реализации виртуальных частных сетей). По причине ненадёжности от Telnet как средства управления операционными системами давно отказались.
Telnet и другие протоколы
В среде специалистов по технологиям internet распространено мнение, что клиент Telnet пригоден для осуществления ручного доступа (например, в целях отладки) к таким протоколам прикладного уровня как HTTP, IRC, SMTP, POP3 и прочим текст-ориентированным протоколам на основе транспорта TCP. Однако, использование клиента telnet в качестве клиента TCP вызывает следующие нежелательные эффекты:
· Клиент может передать данные, которые вы не вводили (опции Telnet);
· Клиент не будет принимать октет \377;
· Клиент будет искажать октет \377 при передаче;
· Клиент вообще может отказаться передавать октеты со старшим битом 1.
Такие программы как netcat действительно обеспечивают чистый доступ к TCP, однако требуются специальные ухищрения (как то stty -icrnl на UNIX-системе) для передачиперевода строки как CR LF (что требуется многими протоколами). Обычно клиент Telnet по умолчанию передаёт любой перевод строки как CR LF, независимо от его кодирования в системе клиента. Также для отладочного доступа к прикладным протоколам (кроме FTP и, собственно, Telnet) является использование клиента PuTTY в режиме «Raw» (чистый доступ к TCP) -- PuTTY преобразует переводы строки отдельно от поддержки протокола Telnet.
Подобные документы
Физический уровень протокола CAN. Скорость передачи и длина сети. Канальный уровень протокола CAN. Рецессивные и доминантные биты. Функциональная схема сети стандарта CAN. Методы обнаружения ошибок. Основные характеристики сети. Протоколы высокого уровня.
реферат , добавлен 17.05.2013
Электронная почта (E-Mail) и ее основные компоненты: информационный ресурс, почтовый сервер, клиент и протоколы их взаимодействия. Сравнительная характеристика протоколов SMTP, POP3 и IMAP4. Телеконференции, файловые архивы FTP, Telnet, World Wide Web.
контрольная работа , добавлен 19.01.2011
Общие понятия, задачи и характеристика компьютерной сети TMN: технология управления, состав и назначение основных элементов, функциональные возможности, архитектура. Реализация управления в модели ВОС. Сравнительная характеристика протоколов SNMP и CMIP.
курсовая работа , добавлен 18.03.2011
Описание общих функций сетевого уровня модели OSI: протоколирование, маршрутизация и логическая адресация. Изучение принципов работы сетевого протокола TCP/IP и сетевых утилит командной строки. Адрес локальной сети и определение класса сети Интернет.
презентация , добавлен 05.12.2013
Протокол как набор соглашений и правил, определяющих порядок обмена информацией в компьютерной сети. Краткое описание и характеристика некоторых протоколов используемых в работе Интернет: TCP/IP, POP3, IMAP4, SMTP, FTP, HTTP, WAIS, TELNET, WAP.
презентация , добавлен 27.04.2011
Анализ и сравнение различных методов реализации системы защиты сетевых соединений. Виды сетевых атак и методика их негативного воздействия, возможные последствия и меры их профилактики. Структура протокола создания защищенных сетевых соединений ISAKMP.
дипломная работа , добавлен 19.06.2010
Общая характеристика протокола ICMP, его назначение и формат сообщений. Анализ применимости протокола ICMP при переходе с набора протоколов IP v4 на набор IP v6. Свойства и принцип работы, сферы применения протоколов обмена маршрутной информацией.
курсовая работа , добавлен 24.08.2009
Работы по созданию сети ARPANET, протоколы сетевого взаимодействия TCP/IP. Характеристика программного обеспечения для TCP/IP. Краткое описание протоколов семейства TCP/IP с расшифровкой аббревиатур. Архитектура, уровни сетей и протоколы TCP/IP.
реферат , добавлен 03.05.2010
Функция протокола и структура пакета разрабатываемого протокола. Длина полей заголовка. Расчет длины буфера на приеме в зависимости от длины пакета и допустимой задержки. Алгоритмы обработки данных на приеме и передаче. Программная реализация протокола.
курсовая работа , добавлен 18.05.2014
Услуги Интернета: электронная почта, передача файлов. Получение услуг сети через удаленный компьютер. Протоколы сети Internet: HTTP, FTP, Telnet, WAIS, Gopher, SMTP, IRC. Цели Внедрения видео-конференции-связи. Организация и проведение телеконференций.
SSH - (Secure Shell) - сетевой протокол, позволяющий производить удалённое управление компьютером и передачу файлов. Сходен по функциональности с протоколом Telnet и rlogin, однако использует алгоритмы шифрования передаваемой информации.
Недостатки telnet привели к очень быстрому отказу от использования этого протокола в пользу более безопасного и функционального протокола SSH. SSH предоставляет все те функциональные возможности, которые представлялись в telnet, с добавлением эффектного кодирования с целью предотвращения перехвата таких данных, как логины и пароли. Введенная в протоколе SSH система аутентификации с использованием публичного ключа гарантирует, что удаленный компьютер действительно является тем, за кого себя выдает.
Криптографическая защита протокола SSH не фиксирована, возможен выбор различных алгоритмов шифрования. Клиенты и серверы, поддерживающие этот протокол, доступны для различных платформ. Кроме того, протокол позволяет не только использовать безопасный удалённый shell на машине, но и туннелировать графический интерфейс - X Tunnelling (только для Unix-подобных ОС или приложений, использующих графический интерфейс X Window System). Так же SSH способен передавать через безопасный канал (Port Forwarding) любой другой сетевой протокол, обеспечивая (при надлежащем конфигурировании) возможность безопасной пересылки не только X-интерфейса, но и, например, звука.
Однако протокол SSH не решает всех проблем сетевой безопасности. Он лишь фокусирует свое внимание на обеспечении безопасной работы таких приложений, как эмуляторы терминала. Использование реализаций протокола SSH на серверах и в клиентских приложениях помогает защитить данные лишь в процессе передачи. Протокол SSH ни коим образом не является заменой брандмауэров, систем обнаружения вторжений, сетевых сканеров, систем аутентификации и других инструментов, позволяющих защитить информационные системы и сети от атак.
39.Роль и задачи сервера в локальной сети.
В общем понимании сервер – это вычислительная машина, обладающая, как правило, высокой производительностью и другими вычислительными ресурсами, предназначенная для предоставления определённых возможностей для компьютеров локальной или глобальной сети. Эти возможности называют сетевыми сервисами .
Задачи сервера:
1.обеспечения доступа к данным, хранящимся на серверных дисках организации;
2.хранение, обработку и доступ к базам данных компании;
3.программную обработку данных, которые посылает ему пользователь, и выдаёт этому пользователю конечные результаты;
4.выдачу интернет-страницы пользователю, который её запрашивает;
5.отправки, получения, хранения и распределения электронных писем, которые посылают все пользователи локальной сети.
Сетевые службы.
Для конечного пользователя сеть - это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть - это, прежде всего, тот набор сетевых служб, с помощью которых он получает возможность просмотреть список имеющихся в сети компьютеров, прочитать удаленный файл, распечатать документ на «чужом» принтере или послать почтовое сообщение. Именно совокупность предоставляемых возможностей - насколько широк их выбор, насколько они удобны, надежны и безопасны - определяет для пользователя облик той или иной сети.
Кроме собственно обмена данными, сетевые службы должны решать и другие, более специфические задачи, например, задачи, порождаемые распределенной обработкой данных. К таким задачам относится обеспечение непротиворечивости нескольких копий данных, размещенных на разных машинах (служба репликации), или организация выполнения одной задачи параллельно на нескольких машинах сети (служба вызова удаленных процедур). Среди сетевых служб можно выделить административные, то есть такие, которые в основном ориентированы не на простого пользователя, а на администратора и служат для организации правильной работы сети в целом.
Реализация сетевых служб осуществляется программными средствами. Основные службы - файловая служба и служба печати - обычно предоставляются сетевой операционной системой, а вспомогательные, например служба баз данных, факса или передачи голоса, - системными сетевыми приложениями или утилитами, работающими в тесном контакте с сетевой ОС. Вообще говоря, распределение служб между ОС и утилитами достаточно условно и меняется в конкретных реализациях ОС.
При определении степени удобства разделяемого ресурса часто употребляют термин «прозрачность». Прозрачный доступ - это такой доступ, при котором пользователь не замечает, где расположен нужный ему ресурс - на его компьютере или на удаленном. После того как он смонтировал удаленную файловую систему в свое дерево каталогов, доступ к удаленным файлам становится для него совершенно прозрачным. Сама операция монтирования также может иметь разную степень прозрачности - в сетях с меньшей прозрачностью пользователь должен знать и задавать в команде имя компьютера, на котором хранится удаленная файловая система, в сетях с большей степенью прозрачности соответствующий программный компонент сети производит поиск разделяемых томов файлов безотносительно мест их хранения, а затем предоставляет их пользователю в удобном для него виде, например в виде списка или набора пиктограмм.
Для обеспечения прозрачности важен способ адресации (именования) разделяемых сетевых ресурсов. Имена разделяемых сетевых ресурсов не должны зависеть от их физического расположения на том или ином компьютере. В идеале пользователь не должен ничего менять в своей работе, если администратор сети переместил том или каталог с одного компьютера на другой. Сам администратор и сетевая операционная система имеют информацию о расположении файловых систем, но от пользователя она скрыта. Такая степень прозрачности пока редко встречается в сетях, - обычно для получения доступа к ресурсам определенного компьютера сначала приходится устанавливать с ним логическое соединение. Такой подход применяется, например, в сетях Windows NT
В книге подробно рассмотрены настройки сетевых сервисов, позволяющих создать сервер требуемой конфигурации и функциональности на основе ОС Linux. Вы сможете настроить сервер любого типа: от сервера локальной сети до Интернет-сервера и сервера удаленного доступа. Детальна описано администрирование Linux.
Изложение материала построено на основе дистрибутивов Red Hat и Mandrake. Много уникальной информации: запуск Windows-игр под Linux и создание Linux-сервера для игрового зала, настройка антивирусов Dr. Web и AVP под Linux, программа учета трафика MRTG, система защиты и обнаружения атак LIDS, а также многое другое. Особое внимание уделено безопасности Linux-серверов. Достаточно подробно описана сама ОС Linux и приведен справочник ее команд. Прочитав книгу, вы станете обладателями знаний по настройке и компилированию ядра, созданию собственных rpm-пакетов, командному интерпретатору bash, использованию массивов RAID. Вы узнаете внутренний мир Linux. Книга подойдет как для профессиональных, так и для начинающих администраторов, поскольку изложение материала начинается с установки ОС Linux, а в первой главе дано описание основных сетевых технологий и протоколов (Курс Молодого Администратора).
Все приведенные в книге листинги проверены на практике и размещены на прилагаемом CD. Помимо этого на нем содержится много справочной информации (HOWTO, RFC), a также статей, посвященных Linux. Размещен богатый набор вспомогательных утилит и программного обеспечения для сервера (Apache, MySQL, MRTG и др.).
Книга:
Разделы на этой странице:
Сервис Telnet обеспечивает базовую эмуляцию терминалов удаленных систем, поддерживающих протокол Telnet над протоколом TCP/IP. Обеспечивается эмуляция терминалов Digital Equipment Corporation VT 100, Digital Equipment Corporation VT 52, TTY. Протокол Telnet описан в документе RFC 854, который вы найдете на прилагаемом компакт-диске.
Любые команды, выполняемые с помощью Telnet, обрабатываются telnet-сервером, а не локальным компьютером. Пользователь лишь видит результат выполнения этих команд.
Для использования Telnet на удаленном компьютере должен быть установлен telnet-демон. На компьютере пользователя нужно установить программу-клиент. Практически в каждой операционной системе существует утилита telnet, которая является клиентом для протокола telnet (см. рис. 8.2).
Сервис Telnet был и остается одним из самых популярных способов удаленной регистрации и работы на удаленной машине. Основным его недостатком является то, что любая информация, в том числе и пароли, передается в открытом виде без какого-либо кодирования.
SSH (Secure Shell) - программа, позволяющая вам зарегистрироваться на удаленных компьютерах и установить зашифрованное соединение. Существует также «безопасная» версия telnet - stelnet.
SSH использует криптографию открытого ключа для шифрования соединения между двумя машинами, а также для опознавания пользователей.
Рис. 8.2.Telnet-клиент для Windows
Оболочку ssh можно использовать для безопасной регистрации на удаленном сервере или копировании данных между двумя машинами, в то же время предотвращая атаки путем присоединения посередине (session hijacking) и обманом сервера имен (DNS spotting).
Оболочка Secure Shell поддерживает следующие алгоритмы шифрования:
BlowFish - это 64-разрядная схема шифрования. Этот алгоритм часто используется для высокоскоростного шифрования данных больших объемов.
Тройной DES (Data Encryption Standard) - стандарт для шифрования данных. Данный алгоритм довольно старый, поэтому не рекомендуется его использовать. Обычно DES используется для шифрования несекретных данных.
IDEA (International Data Encryption Algorithm) - международный алгоритм шифрования информации. Этот алгоритм работает со 128-разрядным ключом и поэтому он более защищен, чем BlowFish и DES.
RSA (Rivest-Shamir-Adelman algorithm) - алгоритм Ривеста-Шамира-Адельмана. Представляет собой схему шифрования с открытым и секретным ключами.
При выборе алгоритма шифрования нужно исходить из конфиденциальности информации, которую вам нужно передать. Если информация секретна, лучше использовать алгоритмы IDEA или RSA. Если же вы просто не хотите передавать данные в открытом виде, используйте алгоритм BlowFish, поскольку он работает значительно быстрее, чем DES.
Оболочка ssh очень эффективна против анализаторов протоколов, так как она не только шифрует, но и сжимает трафик перед его передачей на удаленный компьютер. Программу ssh можно скачать по адресу http://www.cs.hut.fi/ssh/ . Версия ssh для UNIX распространяется бесплатно, а за Windows-версию (имеется в виду клиент для Windows) нужно заплатить.
Оболочка ssh незаменима в тех случаях, когда удаленно нужно администрировать сервер или когда сервер не имеет собственного монитора. При использовании telnet все данные, которые передаются через telnet-соединение, доступны в открытом виде. А значит, имена пользователей и пароли будут доступны всем, кто прослушивает трафик с помощью анализатора. Шифрование ssh выполняет, используя несколько различных алгоритмов, включая DES и 3DES.
Программа состоит из демона sshd, который запускается на Linux/UNIX-машине, и клиента ssh, который распространяется как для Linux, так и для Windows. Чтобы установить ssh, возьмите исходные тексты и поместите их по традиции в каталог /usr/src/. Затем распакуйте архив и установите программу, выполнив следующую последовательность действий:
cd /usr/src/
tar xzf ssh-2.4.0.tar.gz
cd ssh-2.4.0
./configure
make
make install
Чтобы ssh начал работать, необходимо запустить демон sshd на той машине, к которой предполагается подключение. Желательно добавить команду запуска в сценарий загрузки системы для автоматического запуска. Демон sshd работает по 22 порту (см. листинг 8.6). Если не ошибаюсь, ssh невозможно использовать вместе с xinetd/inetd - его нужно запускать подобно httpd– серверу в режиме standalone.
Листинг 8.6. Фрагмент файла /etc/services
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
Обычно с настройкой sshd не возникает никаких неприятных моментов. Подробно настройка демона будет рассмотрена чуть ниже в этой главе. Теперь попробуйте зарегистрироваться на этой машине через ssh. Для этого нужно установить этот же пакет на другую машину под управлением Linux/UNIX (или установить Windows-клиент ssh) и ввести команду:
$ ssh hostname.domain
ssh запросит вас ввести пароль пользователя. В качестве имени пользователя для установки соединения будет использовано имя текущего пользователя, то есть имя, под которым вы сейчас зарегистрированы в системе. В случае, если аутентификация пройдет успешно, начнется сеанс связи. Прекратить сеанс можно комбинацией клавиш Ctrl+D.
Если вам нужно указать другое имя пользователя, используйте параметр –l программы ssh:
ssh –l user hostname.ru
Так можно указать программе ssh, от имени какого пользователя нужно регистрироваться на удаленной машине (см. рис. 8.3).
При использовании Windows-клиента имя компьютера, имя пользователя и пароль нужно ввести в диалоговом окне программы. Если соединение не устанавливается, попробуйте выбрать метод кодирования blowfish. Если и это не поможет, выберите 3DES.
Работа в ssh аналогична работе в telnet. Вы можете администрировать удаленную машину также легко, как и локальную. Опции программы ssh указаны в табл. 8.5.
Рис.8.З. Регистрация на удаленной машине
Опции программы ssh Таблица 8.5
Опция | Описание |
---|---|
-а | Отключает перенаправление аутентификации агента соединения |
-А | Включает перенаправление аутентификации агента соединения |
-с blowfish|3des | Позволяет выбрать алгоритм шифрования при использовании первой версии протокола SSH. Можно указать или blowfish, или 3des |
-с шифр | Задает список шифров, разделенных запятыми в порядке предпочтения. Только для второй версии протокола SSH. Допускаются значения blowfish, twofish, arcfour, cast, des и 3des |
-f | Данная опция переводит ssh в фоновый режим после аутентификации пользователя. Рекомендуется использовать для запуска программы Х11 . Например, ssh –f hostxterm |
-i | идент_файл Задает нестандартный идентификационный файл (для нестандартной RSA/DSA-аутентификации) |
-l имя_пользоват | Указывает от имени какого пользователя будет осуществляться регистрация на удаленной машине |
-р порт | Определяет порт, к которому подключится программа ssh (по умолчанию используется порт 22) |
-q | «Тихий режим». Будут отображаться только сообщения о фатальных ошибках. Все прочие предупреждающие сообщения в стандартный выходной поток выводиться не будут |
-x | Отключить перенаправление Х11 |
-X | Включить перенаправление Х11 |
-1 | Использовать только первую версию протокола SSH |
-2 | Использовать только вторую версию протокола SSH |
-4 | |
-6 |
Оболочка ssh использует два файла конфигурации ssh_conf и sshd_conf. Думаю, что нет смысла говорить о том, что они находятся в директории /etc/ssh. Рекомендую в файле sshd_conf прописать следующую строчку:
allowedadress 10.1.1.1 10.1.2.1 10.1.3.1
Это означает, что доступ по ssh может быть выполнен только с машин с адресами 10.1.1.1, 10.1.2.1, 10.1.3.1. Это оградит ваш компьютер от нежелательных вторжений извне.
Программа stelnet во всем полностью аналогична программе telnet, но она выполняет шифрование трафика, который передается во время telnet-соединения.
Демон sshd - это программа-демон для оболочки ssh. Обычно sshd запускается на машине, к которой подключаются клиенты ssh. Последние версии демона sshd поддерживают две версии протокола ssh - ssh версия 1, и ssh версия 2.
Протокол SSH версия 1
У каждого узла есть свой RSA-ключ (обычно 1024 бит), который используется для идентификации узла. Этот ключ еще называется открытым. Дополнительно, при запуске демона, генерируется еще один RSA-ключ - ключ сервера (обычно 768 бит). Этот ключ создается заново каждый час и никогда не сохраняется на диске.
Каждый раз при установке соединения с клиентом демон отправляет ему в ответ свой открытый ключ и ключ сервера. Клиент сравнивает полученный открытый ключ со своей базой данных, чтобы проверить, не изменился ли он. Затем клиент случайным образом генерирует 256-разрядное число и кодирует его, используя одновременно два ключа - открытый ключ и ключ сервера. Обе стороны используют этот случайный номер как ключ сессии, который используется для кодирования всех передаваемых во время сессии данных.
Затем клиент пытается аутентифицировать себя, используя.rhosts-аутентифи-кацию, аутентификацию RSA или же аутентификацию с использованием пароля.
Обычно.rhosts-аутентификация небезопасна и поэтому она отключена.
Протокол SSH версия 2
Версия 2 работает аналогично: каждый узел имеет определенный DSA-ключ, который используется для идентификации узла. Однако, при запуске демона ключ сервера не генерируется. Безопасность соединения обеспечивается благодаря соглашению Диффи-Хелмана (Diffie-Hellman key agreement).
Сессия может кодироваться следующими методами: 128-разрядный AES, Blowfish, 3DES, CAST128, Arcfour, 192-разрядный AES или 256-разрядный AES.
Опции демона sshd указаны в табл. 8.6.
Опции демона sshd Таблица 8.6
Опция | Описание |
---|---|
-b биты | Определяет число битов для ключа сервера (по умолчанию 768). Данную опцию можно использовать, только если вы используете протокол SSH версии 1 |
-d | Режим отладки (DEBUG). В этом режиме сервер не переходит в фоновый режим и подробно протоколирует свои действия в системном журнале. Использование данной опции особенно полезно при изучении работы сервера |
-е | Если указана это опция, демон sshd отправляет отладочные сообщения не в системный журнал, а на стандартный поток ошибок |
-f конфиг_файл | Задает альтернативный файл конфигурации. По умолчанию используется /etc/ssh/sshd_config |
-g время | Предоставляет клиенту, не прошедшему аутентификацию, дополнительное время, чтобы аутентифицировать себя. По умолчанию время равно 600 секундам. Если за это время клиент не смог аутентифицировать себя, соединение будет прекращено. Значение 0 интерпретируется как бесконечное ожидание |
-h | файл_ключа Задает альтернативный файл открытого ключа (ключ узла). По умолчанию используется файл /etc/ssh/ssh_host_key. Эта опция может понадобиться, чтобы sshd мог выполняться не только от имени суперпользователя root. Кроме этого, частым использованием этой опции является запуск sshd из сценариев, задающих различные настройки в зависимости от времени суток. Например, в дневное (рабочее) время устанавливаются одни опции, а в вечернее(иерабочее) время - другие |
-i | Используется, если нужно запускать sshd через суперсервер xinetd (inetd). Обычно демон sshd не запускается суперсервером xinetd (inetd), а запускается при загрузке системы, потому что демону sshd требуется некоторое время (10 секунд) для генерирования ключа сервера, прежде чем он сможет ответить на запросы клиентов |
-k время | Задает время, спустя которое ключ сервера будет создан заново. По умолчанию время составляет 3600 секунд (1 час). Данную опцию можно использовать, только если вы используете протокол SSH версии 1 |
-р порт | Указывает альтернативный порт, который демон sshd будет прослушивать. По умолчанию используется порт 22 |
-q «Тихий режим». | В данном режиме протоколирование сессии производиться не будет. Обычно протоколируется начало аутентификации, результат аутентификации и время окончания сессии |
-t | Тестовый режим. Данный режим применяется для проверки корректности файла конфигурации |
-D | При использовании этой опции демон не будет переходить в фоновый режим |
-4 | Разрешается использовать IP-адреса только в формате IPv4 |
-6 | Разрешается использовать IP-адреса только в формате IPv6 |
Файл конфигурации демона /etc/ssh/sshd_config выглядит примерно так, как это показано в листинге 8.7
Листинг 8.7 Файл конфигурации /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.38 2001/04/15 21:41:29 deraadt Exp $
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# This is the sshd server system-wide configuration file. See sshd(8)
# for more information.
Port 22
# Protocol 2,1
# ListenAddress 0.0.0.0
# ListenAddress::
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 768
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin yes
#
# Don"t read ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# Uncomment if you don"t trust ~/.ssh/known_hosts for
RhostsRSAAuthentication
# IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding yes
X11DisplayOffset 10
PrintMotd yes
# PrintLastLog no
KeepAlive yes
# Logging
SyslogFacility AUTHPRIV
LogLevel INFO
# obsoletes QuietMode and FascistLogging
RhostsAuthentication no
#
# For this to work you will also need host keys in /etc/ssh/
ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
#
RSAAuthentication yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
PermitEmptyPasswords no
# Uncomment to disable s/key passwords
# ChallengeResponseAuthentication no
# Uncomment to enable РАМ keyboard-interactive authentication
# Warning: enabling this may bypass the setting of "PasswordAuthentication"
# PAMAuthenticationViaKbdInt yes
# To change Kerberos options
# KerberosAuthentication no
# KerberosOrLocalPasswd yes
# AFSTokenPassing no
# KerberosTicketCleanup no
# Kerberos TGT Passing does only work with the AFS kaserver
# KerberosTgtPassing yes
# CheckMail yes
# UseLogin no
# MaxStartups 10:30:60
# Banner /etc/issue.net
# ReverseMappingCheck yes
Subsystem sftp/usr/libexec/openssh/sftp-server
SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.
SSH | |
---|---|
Название | Secure Shell |
Уровень (по модели OSI) | Прикладной |
Семейство | TCP/IP |
Порт/ID | 22/TCP |
Назначение протокола | Удалённый доступ |
Спецификация | RFC 4251 |
Основные реализации (клиенты) |
Для создания общего секрета (сеансового ключа) используется алгоритм Диффи - Хеллмана (DH). Для шифрования передаваемых данных используется симметричное шифрование , алгоритмы AES , Blowfish или 3DES . Целостность передачи данных проверяется с помощью CRC32 в SSH1 или HMAC -SHA1 /HMAC -MD5 в SSH2. Для сжатия шифруемых данных может использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP . Сжатие SSH включается лишь по запросу клиента, и на практике используется редко. Стандарты и программные реализацииПервая версия протокола, SSH-1, была разработана в 1995 году исследователем Тату Улёненом из Технологического университета Хельсинки (Финляндия). SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, несовместимая с SSH-1. Протокол приобрел ещё большую популярность, и к 2000 году у него было около двух миллионов пользователей. В настоящее время под термином «SSH» обычно подразумевается именно SSH-2, так как первая версия протокола ввиду существенных недостатков сейчас практически не применяется. Для использования SSH в Python существуют такие модули, как python-paramiko и python-twisted-conch. SSH-туннелированиеSSH-туннель - это туннель, создаваемый посредством SSH-соединения и используемый для шифрования туннелированных данных. Используется для того, чтобы обезопасить передачу данных в Интернете (аналогичное назначение имеет IPsec). При пересылке через SSH-туннель незашифрованный трафик любого протокола шифруется на одном конце SSH-соединения и расшифровывается на другом. Практическая реализация может выполняться несколькими способами:
$ ssh -L 4430 :jabber.example.com:443 somehost В данном случае Jabber-клиент настраивается на подключение к порту 4430 сервера localhost (если ssh-клиент запущен на той же машине что и Jabber-клиент). Для создания ssh-туннеля необходима машина с запущенным ssh-сервером и доступом к jabber.example.com. Такая конфигурация может использоваться в случае, если с локальной машины доступ к jabber.example.com закрыт файерволом, но есть доступ к некоторому ssh-серверу, у которого ограничения доступа в Интернет отсутствуют. |
SSH (Secure Shell - Защищенная оболочка ) -- это сетевой протокол, обеспечивающий защищенную аутентификацию, соединение и безопасную передачу данных между хостами сети, путем шифрования, проходящего через него трафика, с возможной компрессией данных. Еще одной важной функциональной особенностью, является возможность создания защищенных, шифрованных туннелей, для безопасной передачи через небезопасную среду (например интернет), других сетевых протоколов, так-же с возможность сжатия трафика. Кроме того протокол SSH отлично работает с форвардингом (переадресация, перенаправление) портов одной машины на порты другой в том числе и форвардинг удаленных клиентов XWindow . Сейчас протокол SSH , является стандартом, и широко используется, например, для серверных систем, то есть выполнения различных команд и манипуляций в оболочке сервера через безопасное соединение, копирования файлов через сеть, вроде резервных копий данных.
Протокол SSH , существует в двух вариантах, коммерческая версия, разрабатываемая SSH inc, и бесплатная, с открытым исходным кодом, OpenSSH , которая в основном и используется на большинстве серверных платформ. Реализация OpenSSH , есть в любой операционной системе семейства Unix, и в большинстве из них, SSH сервер и SSH клиент, являются стандартными утилитами. Все ниже написанное будет касаться OpenSSH и операционной системы FreeBSD. Существуют две версии протокола SSH , не совместимые между собой. Первая реализация протокола SSH , SSH - 1 , была разработана в 1995 году. Вторая версия, SSH - 2 , выпущена в 1996 году. В 2006 году, протокол SSH был принят ассоциацией IETF в качестве интернет стандарта. Сейчас повсеместно используется именно вторая версия протокола SSH , поскольку во-первых, протокол SSH версии 1, страдал серьезными уязвимостями, во вторых в версия 2 использует более мощные алгоритмы шифрования, кроме того поддерживает возможность обнаружения умышленного искажения данных. Алгоритмы шифрования:
- Протокол SSH, версии 1 DES, 3DES, blowfish
- Протокол SSH, версии 2 AES-128, AES-192, AES-256, blowfish, CAST-128, ArcFour
- Протокол SSH, версии 1 нет
- Протокол SSH, версии 2 HMAC-MD5, HMAC-SHA-1, HMAC-RIPEMD
Способы аутентификации по протоколу SSH, состав программного пакета OpenSSH
Безопасность протокола SSH обеспечивается следующими программными решениями:- Шифрование всего трафика, проходящего через SSH соединение, выполняемое по одному из возможных алгоритмов, выбираемых в процессе переговоров сторон сеанса связи. Шифрование трафика соединения, препятствует его перехвату и использованию в злонамеренных целях. За счет выбора различных алгоритмов шифрования, систему становится очень гибкой, позволяя, например, не использовать алгоритмы, в которых были обнаружены уязвимости или потенциальные угрозы безопасности, или использовать только те алгоритмы, которые поддерживаются каждой из сторон;
- Аутентификация SSH сервера производится всегда, при любом соединении, что не позволяет подменить трафик или сам сервер;
- Аутентификация SSH клиента может происходить различными способами, что, с одной стороны, делает сам процесс аутентификации более безопасным, с другой, делает систему еще более гибкой, упрощая работу с ней;
- Контроль целостности сетевых пакетов, дает возможность отследить незаконные изменения трафике соединения, в случае обнаружения данного факта, соединение обрывается незамедлительно;
- ВременнЫе параметры аутентификации, предотвращают возможность использования перехваченных и через некоторое время, расшифрованных данных соединения.
- GSSAPI-based аутентификация
- Host-based аутентификация;
- Аутентификация пользователя с помощью публичного ключа;
- Аутентификация "вызов-ответ" (challenge-response );
- Ну и наконец обычная аутентификация пользователя, по паролю;
- sshd - это собственно SSH сервер, программа-демон;
- ssh - программа-клиент, ставшая заменой для rlogin и telnet ;
- scp - программа для удаленного копирования через протокол SSH , замена для rcp ;
- sftp - безопасный ftp-клиент;
- sftp-server - подсистема обеспечивающая передачу файлов через протоколу SSH ;
- ssh-keygen - генератор ключей
- ssh-keyscan - "сборщик" публичных ключей хостов;
- ssh-agent - агент аутентификации, для удержания приватных ключей;
- ssh-add - небольшая программа для добавления ключей в ssh-agent ;