Файл: Протокол безопасных соединений SSH (История протокола SSH).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 328

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

В данной курсовой работе будет рассмотрена тема протокол безопасных соединений SSH. Протокол SSH расшифровывается как Secure Shell или безопасная оболочка. Основное предназначение при удалённом управлении защитить все конфиденциальные данные с помощью зашифровки передаваемой информации. Целью курсовой работы будет ознакомиться с историей создания, устройством SSH и его возможным использованием на практике.

Понимание истории создания протоколов SSH покажет развитие данного направления технологий и даст понимание необходимости их использования.

Понимание возможностей SSH позволит находить им применение при разработке системы, а знание архитектуры необходимость применить именно их в конкретной системе.

На практике рассмотрим, как создать и сконфигурировать сервер с протоколом SSH.

В качестве источников будут применяться различные книги по ОС Linux поскольку большинстве случаев протокол SSH применяется в этой ОС, а также материалы с официального сайта www.ssh.com.

Глава 1. История протокола SSH

Для организации удаленного доступа к консоли сервера ранее использовался протокол telnet, и в каждую сетевую операционную систему, будь то FreeBSD или Windows 95 (которую, впрочем, сложно впрямую назвать сетевой), включался telnet-клиент. Эта программа так и называется — telnet (в Windows — telnet.exe). Подключившись с помощью telnet к удаленному компьютеру, вы можете работать с ним как обычно. В окне telnet-клиента представлена как бы консоль удаленного компьютера: вы будете вводить команды и получать результат их выполнения — все так, как если бы вы работали непосредственно за удаленным компьютером.

Но технологии не стоят на месте, и протокол telnet устарел. Сейчас им практически никто не пользуется. На смену ему пришел протокол SSH (Secure Shell), который, как видно из названия, представляет собой безопасную оболочку. Главное отличие SSH от telnet состоит в том, что в соответствии с этим протоколом все данные (включая пароли доступа к удаленному компьютеру, отдельные файлы и пр.) передаются в зашифрованном виде. Причиной создания SSH стало то, что во времена telnet участились случаи перехвата паролей и другой важной информации.

Протокол Secure Shell был первоначально разработан Тату Илоненом в 1995 году в ответ на случай взлома в финской сети университетов. Анализатор паролей был установлен на сервере, подключенном непосредственно к магистрали, и когда он был обнаружен, в его базе данных были тысячи имен пользователей и паролей, в том числе несколько от компании Илонена.[1]


Этот инцидент побудил Илонена изучать криптографию и разработать решение, которое он мог бы использовать сам для безопасного входа в систему через Интернет. Его друзья предложили дополнительные функции, и три месяца спустя, в июле 1995 года, Илонен опубликовал первую версию как открытый исходный код. Это стало OpenSSH. Позже он взял протокол для стандартизации в IETF и разработал протокол передачи файлов SSH (SFTP). В декабре 1995 года он основал SSH Communications Security Corp., чтобы обеспечить коммерческую поддержку протокола.

Илонен по-прежнему работает над темами, относящимися к Secure Shell, особенно по управлению ключами, а также по более широким темам кибербезопасности.

Сегодня протокол используется для управления более чем половиной мировых веб-серверов и практически каждым компьютером с Unix или Linux, как локальным, так и облачным. Специалисты по информационной безопасности и системные администраторы используют его для настройки, управления, обслуживания и эксплуатации большинства межсетевых экранов, маршрутизаторов, коммутаторов и серверов в миллионах критически важных сетей и сред нашего цифрового мира. Он также встроен во многие решения для передачи файлов и управления системами.

[2]

Новый протокол заменил несколько устаревших инструментов и протоколов, включая telnet , ftp , FTP / S , rlogin , rsh и rcp .

У протокола SSH по умолчанию используется 22 порт и это не случайность так было задумано разработчиком. Первоначальная версия SSH (Secure Shell) была написана весной 1995 года. В это время telnet и FTP широко использовались.

Во время разработки SSH планировалось заменить оба протокола telnet(порт 23) и ftp(порт 21). Порт 22 был свободен и это по мнению разработчика давало доверие пользователя к новому протоколу.

Основной процесс распределения портов был довольно простым в то время. Интернета было меньше, и человечество было на самых ранних стадиях интернет-бума. Номера портов были выделены IANA (Управление по присвоению номеров в Интернете). Разработчик написал в эту структуру и протокол SSH получил 22 порт. По умолчанию сервер SSH по-прежнему работает на порту 22. Однако бывают случаи, когда он работает на другом порту. Подробнее об этом в следующей главе.

[3]

Глава 2. Устройство и возможное использование протокола SSH


Протокол SSH использует шифрование для защиты соединения между клиентом и сервером. Все аутентификация пользователя, команды, выходные данные и передача файлов зашифрованы для защиты от атак в сети.

Протокол работает в модели клиент-сервер, что означает, что соединение устанавливается клиентом SSH, подключающимся к серверу SSH. Клиент SSH управляет процессом установки соединения и использует криптографию с открытым ключом для проверки подлинности сервера SSH. После фазы установки протокол SSH использует строгие симметричные алгоритмы шифрования и хеширования, чтобы обеспечить конфиденциальность и целостность данных, которыми обмениваются клиент и сервер.

На рисунке ниже представлен упрощенный процесс настройки безопасного подключения оболочки.[4]

Рисунок1

Протокол используется в корпоративных сетях для:

  • обеспечение безопасного доступа для пользователей и автоматизированных процессов
  • интерактивная и автоматическая передача файлов
  • выдача удаленных команд
  • управление сетевой инфраструктурой и другими критически важными компонентами системы.

Как только соединение между клиентом и сервером SSH установлено, передаваемые данные шифруются в соответствии с параметрами,[5] согласованными в настройке. Во время согласования клиент и сервер согласовывают алгоритм симметричного шифрования, который будет использоваться, и генерируют ключ шифрования, который будет использоваться. Трафик между связывающимися сторонами защищен с помощью отраслевых стандартных алгоритмов надежного шифрования (таких как AES (Advanced Encryption Standard)), а протокол SSH также включает механизм, который обеспечивает целостность передаваемых данных с использованием стандартных хеш-алгоритмов (таких как SHA -2 (стандартный алгоритм хеширования).

Когда протокол SSH стал популярным, Тату Илонен взял его в IETF для стандартизации. Теперь это интернет-стандарт, который описан в следующих документах:

RFC 4251 - Архитектура протокола Secure Shell (SSH)

RFC 4253 - Протокол транспортного уровня Secure Shell (SSH)

RFC 4252 - Протокол аутентификации Secure Shell (SSH)

RFC 4254 - Протокол соединения Secure Shell (SSH)

Формат файла открытого ключа не является формальным стандартом (это информационный документ), но многие реализации поддерживают этот формат. RFC 4716 - формат файла открытого ключа Secure Shell (SSH)[6]

Протокол передачи файлов SFTP (SSH File Transfer Protocol) является, вероятно, наиболее широко используемым протоколом передачи файлов безопасных сегодня. Протокол SFTP работает по протоколу SSH как подсистема. Первоначально он был разработан Tatu Ylonen для SSH 2.0 в 1997-1998 годах. Нет отдельного порта SFTP; он использует обычный порт SSH. Полную документацию по протоколу SFTP можно найти в Internet-Draft draft-ietf-secsh-filexfer-02.


SFTP (SSH File Transfer Protocol) - это безопасный протокол передачи файлов. Он работает по протоколу SSH. Он поддерживает полную функциональность безопасности и аутентификации SSH.

SFTP имеет довольно много изменений по сравнению с устаревший FTP в качестве протокола передачи файлов, и быстро заменяет FTP / S . Он обеспечивает все функциональные возможности, предлагаемые этими протоколами, но более безопасно и надежно, и с более простой настройкой. По сути, больше нет причин использовать устаревшие протоколы.

SFTP также защищает от перехвата паролей и атак «человек посередине» . Он защищает целостность данных с помощью шифрования и криптографических хеш-функций и аутентифицирует как сервер, так и пользователя.

Номер порта SFTP - это порт SSH 22. Это в основном просто сервер SSH. Протокол SFTP может быть инициирован только после того, как пользователь вошел на сервер, используя SSH. На серверах нет отдельного порта SFTP. Не нужно настраивать еще одну дыру в брандмауэрах.

Номер порта можно настроить, изменив Port 22директиву в / etc / ssh / sshd_config . Это также можно указать с помощью -p <port>опции sshd . Клиент SSH и программы sftp также поддерживают эту -p <port>опцию.

В редких случаях сервер SSH также может быть запущен без привилегий суперпользователя, и в этом случае он должен быть запущен в непривилегированном порту (т. Е. Номер порта> = 1024).

Эта -p <port>опция может использоваться для указания номера порта для подключения при использовании ssh команды в Linux. Опция -P <port>(примечание: заглавная P) может использоваться с SFTP и scp. Параметр командной строки номера порта SSH переопределяет любое значение, заданное в файлах конфигурации.

SSH является одним из немногих протоколов, которые часто разрешаются через брандмауэры. Неограниченный исходящий SSH очень распространен, особенно в небольших и более технических организациях. Входящий SSH обычно ограничен одним или несколькими серверами.

Настроить исходящий SSH в брандмауэре очень просто. Если вообще существуют ограничения на исходящий трафик, просто создайте правило, которое позволяет TCP-порту 22 выходить. Это все. Если вы хотите ограничить адреса назначения, вы также можете ограничить правило, разрешающее доступ только к внешним серверам вашей организации в облаке или к серверу перехода, который защищает облачный доступ.

Однако неограниченный исходящий SSH может быть рискованным. Протокол SSH поддерживает туннелирование . Основная идея заключается в том, что SSH-сервер на внешнем сервере можно прослушивать из любого места, перенаправлять их обратно в организацию и затем подключаться к какому-либо внутреннему серверу.


Это может быть очень удобно в некоторых условиях. Разработчики и системные администраторы часто используют его, чтобы открыть туннель, который они могут использовать для получения удаленного доступа из дома или со своего ноутбука, когда они путешествуют.[7]

Однако это, как правило, нарушает политику и отнимает контроль у администраторов брандмауэра и группы безопасности. Это может, например, нарушать PCI , HIPAA или NIST SP 800-53 . Он может быть использован хакерами и иностранными спецслужбами, чтобы оставить бэкдор в организации. [8]

Для входящего доступа есть несколько практических альтернатив:

  • Настройте брандмауэр для переадресации всех подключений к порту 22 на определенный IP-адрес во внутренней сети или DMZ
  • Используйте разные порты на брандмауэре для доступа к разным серверам
  • Разрешите доступ по SSH только после того, как вы вошли в систему с помощью VPN (виртуальная частная сеть), обычно с использованием протокола IPsec

Для получения доступа по SSH через iptables (Iptables - это межсетевой экран, встроенный в ядро Linux. Обычно он настроен на защиту сервера путем предотвращения доступа к любым портам, которые не были открыто открыты.)Если iptables на сервере включен, следующие команды могут использоваться для разрешения входящего доступа SSH:

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Они должны быть запущены от имени пользователя root.

Для сохранения конфигураций, на некоторых системах это можно сделать с помощью команды:

service iptables save

Для работы SFTP нужен SFTP-клиент. Многие клиентские реализации SFTP доступны. Многие клиенты SSH поддерживают SFTP. Вот некоторые из них:

  • Tectia SSH Client
  • WinSCP
  • FileZilla
  • PuTTY
  • Cyberduck

SFTP-сервер обычно входит в реализацию SSH. Большинство организаций используют Tectia SSH или OpenSSH в качестве сервера; оба идут с реализациями сервера SFTP из коробки. Существуют такие версии:

  • Tectia SSH Server для Windows
  • Tectia SSH Server для мейнфреймов IBM z / OS
  • OpenSSH - сервер с открытым исходным кодом для Linux и Unix
  • FileZilla - бесплатный sftp сервер для Windows

Команда SCP в Linux является программой передачи файлов для SFTP в Linux. Интерфейс scpкомандной строки был разработан после старой команды rcp в BSD Unix. Scp также обычно поставляется с пакетом OpenSSH.

Типичное использование:

scp [-r] file ... [user@]host:[path]

По сути, это копирует один или несколько файлов на данный хост. Если user указано, то они копируются в эту учетную запись на хосте. Если нет user, то предполагается, что используется то же имя пользователя, что и на стороне клиента. Если path задано, то файлы копируются в этот каталог (относительно домашнего каталога данного пользователя). Если нет path, файлы копируются в домашний каталог пользователя. Если –r опция указана, то файлы могут быть каталогами, а данный каталог и все его подкаталоги и файлы в них (рекурсивно) копируются.[9]