Сетевой протокол Secure Shell (сокращенно SSH) используется для обмена информацией между двумя компьютерами по зашифрованному каналу с высокой степенью безопасности соединения, а также имеет ряд других возможностей.
По своим функциональным особенностям и конфигурации SSH имеет отдаленное сходство с такими протоколами, как telnet и rlogin. Его основным отличием от аналогов является шифрование всего передаваемого трафика, а не отдельных его фрагментов.
Важной особенностью SSH специалисты считают расширенные возможности данного протокола, в частности, его способность передачи любого сетевого протокола через специализированный шифрованный канал связи. Благодаря этому у пользователя появляется не просто возможность удаленно работать на личном ПК, но и передавать текстовые, графические, аудио- и видеопотоки по защищенному шифрованному каналу.
Для максимального удобства пользователя и более быстрой загрузки передаваемой информации протокол также оснащен функцией компрессии данных, реализуемой непосредственно перед процедурой шифрования.
Версии SSH-протокола
В настоящий момент известны две рабочие версии протокола SSH:
SSHv1. Версия 1995 года, сейчас фактически не используется из-за наличия серьезных недостатков в реализации, наиболее подвержена взлому виртуальными злоумышленниками.
Так, например, в культовом фильме «Матрица: Перезагрузка» показана вполне достоверная с технической точки зрения сцена, в которой Тринити взламывает электростанцию. С помощью программы Nmap она находит открытый порт SSH (22 — порт, на котором по умолчанию работает серверная часть SSH), затем запускает эксплойт SSHNuke. Через уязвимость первой версии протокола SSHv1 CRC32 она получает права суперпользователя (root), меняет пароль на свой и отключает электростанцию.
SSHv2. Запущена спустя год после первой версии и является современной модификацией сетевого протокола, устойчивой к агрессивным атакам "man-in-the-middle", благодаря которой злоумышленники не смогут «прослушивать» трафик пользователя.
Еще один уровень защиты второй версии — максимальная степень устойчивости к несанкционированному доступу путем «серединного» подсоединения (например, session hijacking), а также к приему подмены серверных имен (DNS spoofing).
Из вышеизложенного можно сделать вывод, что использование сетевого протокола SSH-2 является единственно приемлемым с точки зрения безопасности и сохранности конфиденциальной информации.
Архитектура протокола SSH
Протокол SSH включает в себя 3 уровня:
- протокол транспортного уровня — используется для аутентификации сервера при запуске системы и для обеспечения конфиденциальности и целостности данных. Реализация технологии происходит поверх соединения TCP/IP;
- протокол аутентификации — предназначен для обеспечения аутентификации пользователя для сервера при его первичном запросе;
- протокол соединения — используется для обеспечения работы отдельных логических каналов поверх единого SSH-соединения.
Как работает протокол SSH
Подключение к удаленному компьютеру по SSH происходит с помощью командного интерпретатора (shell). Во время SSH-сессии все команды, введенные на вашем локальном устройстве (SSH-клиент), будут отправляться через зашифрованный туннель и выполняться на удаленной машине (SSH-сервере). Для этого на ней должно быть запущено специальное ПО — SSH daemon, прослушивающее конкретный сетевой порт, производящее аутентификацию пользователя и предоставляющее ему доступ при удачной авторизации.
Для работы SSH-протокола на локальном компьютере должен быть установлен SSH-клиент, имеющий информацию для успешной аутентификации и авторизации. По умолчанию клиент SSH (обычно это OpenSSH) установлен в большинстве дистрибутивов Linux и других UNIX-подобных систем, но для Windows требуется установить отдельное приложение. Наиболее популярное — Putty, имеющее интерфейс командной оболочки Linux.
Аутентификация происходит либо с использованием пароля, либо с помощью специального SSH-ключа. Доступ по паролю считается небезопасным методом из-за возможности автоматического подбора, поэтому специалисты рекомендуют более безопасный способ — создание SSH-ключей.
Пара из открытого и закрытого ключа создается с помощью утилит puttygen (если используется Putty) или ssh-keygen (если используется OpenSSH). Открытый ключ хранится на сервере, а закрытый — на устройстве пользователя.
Параметры безопасности
Помимо использования ключей для более безопасной работы рекомендуется также изменить и ряд других настроек некоторых параметров серверной части протокола.
Во-первых, подключение с правами суперпользователя (root) и подключение с пустым паролем должны быть запрещены.
Во-вторых, настоятельно рекомендуется изменить стандартный 22 порт SSH-сервера на любой нестандартный. Также хорошей защитой от злоумышленников является закрытие порта (port knocking) — технология, при которой все порты сервера закрыты для подключения, а доступ осуществляется путем установленной последовательности пересылки IP-пакетов.
В-третьих, следует определить сетевые адреса, а также конкретных пользователей или групп пользователей, которым разрешено подключение, и запретить доступ заведомо неблагонадежным адресам, а также некоторым пользователям и группам пользователей.
Этими параметрами настройка безопасного SSH-подключения не ограничивается, здесь приведены лишь базовые сведения. Существует еще множество настроек, предназначенных для того чтобы сделать протокол SSH по-настоящему безопасным методом подключения к удаленному серверу (например, арендованному или размещенному в дата-центре, VPS/VDS, виртуальной машине в облаке и т.п.) через небезопасную среду (Интернет).