Протокол SSH

Для обеспечения безопасности передачи данных между компьютерами сети, удаленной работы и администрирования операционной системы был разработан сетевой протокол семейства TCP/IP — SSH (Secure Shell — «безопасная оболочка»).
По своим функциям SSH схож с подобными протоколами Telnet и rlogin, но его отличает повышенный уровень шифрования трафика и возможность безопасно использовать любой другой протокол. Модификации SSH (сервер, клиент) доступны для многих операционных систем.
Существует два вида протоколов SSH-1 и SSH-2. Основное их отличие в использовании трех внутренних протоколов — транспортного уровня, соединения и аутентификации. В SSH-1 они объединены в один неделимый протокол, а в SSH-2 они разделены на отдельные модули, что делает последний более гибким и надежным сервисом создания безопасных связей.
Механизм обеспечения безопасности данных протоколом SSH
Приложения клиента посылают запросы на открытие сессии определенному порту сервера. Сервисы прослушивают специфические запросы, отправленные, как правило, прямым текстом, и реагируют нужным образом.
Наиболее часто используемые порты – это FTP (21), SMTP (25), HTTP (80), TELNET (23). Протокол SSH создает «безопасную оболочку» таким подключениям, перенаправляя пакеты на 22 порт (обслуживаемый SSH), где преобразовывает, шифрует и инкапсулирует данные.
Сам протокол является достаточно гибким, и предоставляет пользователю множество механизмов защиты данных.
Применение протокола SSH
Область применения протокола SSH практически неограничена. Исходя из его основной функции — удаленного входа в операционную систему, протокол используют:
- системные администраторы для удаленной настройки компьютеров локальной сети;
- для настройки почтовых служб (повышает безопасность данных);
- для скрытого обмена внутри сети массивными файлами;
- для интернет-игр.
Функции надежного шифрования, сжатия, аутентификации и системы контроля данных, реализуемые протоколом SSH-2, позволяют использовать его для сокрытия и защиты от внешних атак передаваемой информации, сократить количество используемого трафика, снизить нагрузку на центральный процессор за счет создания многопоточного соединения через порт SSH.
На сегодняшний день протокол SSH-2 является наиболее надежным соединением для удаленного доступа. Однако развитие технологий дает возможность хакерам находить уязвимые места в любом протоколе и наносить ощутимый вред атакуемым объектам.
Какие порты используются протоколами ssh
Сетевой протокол 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, виртуальной машине в облаке и т.п.) через небезопасную среду (Интернет).
Что такое SSH
В этой статье мы расскажем, что такое SSH, для чего он нужен и как работает.
SSH (от англ. secure shell ― безопасная оболочка) ― это защищенный сетевой протокол для удалённого управления сервером через интернет.
Подключиться удаленно можно на всех тарифах услуги хостинга (кроме Host-Lite), VPS, а также Dedicated.
Версии протокола SSH
Существуют две версии протокола SSH. Первая (SSH-1) появилась в 1995 году — в то время широко использовались Telnet и FTP. Их главным недостатком была уязвимость соединения, поэтому SSH-подключение заинтересовало пользователей. Однако первая версия протокола SSH-1 имела много технических недоработок. Через год появилась, более безопасная вторая версия протокола — SSH-2. Именно она в 2006 году была признана стандартным протоколом в интернете.
Функции SSH
Протокол SSH предназначен для:
- передачи данных (почта, видео, изображения и другие файлы) через защищённое соединение,
- удаленного запуска программ и выполнения команд на сервере через командную строку,
- сжатия файлов для удобной передачи данных,
- переадресации портов и передачи шифрованного трафика между портами разных машин.
SSH-соединение состоит из 2-х компонентов: SSH-сервер и SSH-клиент. Что такое SSH-сервер? Это программа, которая устанавливает связь и производит аутентификацию с устройством пользователя. Он установлен на самом сервере. SSH-клиент используется для входа на удалённую машину и передачи ей команд. Он устанавливается на устройстве, с которого пользователь хочет подключиться к серверу. Бесплатный вариант клиента и сервера — OpenSSH. В операционных системах Unix клиент для OpenSSH установлен по умолчанию. Для Windows нужно установить отдельное приложение — PuTTy.
Принцип работы SSH

Подключение проходит в 3 этапа:
- Установка TCP-соединения. TCP — протокол управления передачей данных. С его помощью удаленный сервер и пользователь могут обмениваться данными.
- Открытие защищенного канала. Исходя из настроек соединения обе стороны обмениваются информацией о способе шифрования и сжатия данных.
- Аутентификация пользователя. Она происходит при помощи открытого ключа. У сервера и клиента есть публичный и частный ключ. Публичный ключ доступен любому. Частный известен только владельцу. Любой может зашифровать сообщение публичным ключом, но расшифровать его можно только частным. Клиент посылает имя пользователя и свой публичный ключ. У сервера есть список пользователей, которые могут подключаться к нему. Он проверяет полученный ключ по своему списку. Если клиент в списке, то сервер генерирует случайное число, шифрует клиента публичным ключом и отправляет его устройству. Клиент расшифровывает число и отправляет его обратно. Если всё расшифровано верно, то происходит успешная аутентификация.
После этих 3-х шагов устройство пользователя может передавать команды, получать или отправлять файлы.
Протокол SSH по умолчанию работает по порту 22. Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников, можно сменить SSH-порты. Как сменить порт, читайте в статьях:
- Как сменить порт на VPS,
- Как сменить порт на выделенном сервере.
Подробнее о том, как подключиться к серверу по SSH:
Помогла ли вам статья?
Спасибо за оценку. Рады помочь
Как поменять (изменить) порт у SSH сервера
![]()
SSH — это сетевой протокол прикладного уровня. Он позволяет безопасно передавать сетевые пакеты. Его используют для удаленного подключения к операционной системе, передачи файлов (как копирование обычных файлов, так и потоковая передача данных, например, с веб-камеры), подключения к базам данных, удаленного запуска команд и т.д. Данный протокол шифрует все данные, включая пароли, поэтому он считается безопасным. Однако для того, чтобы злоумышленники не получили доступ к учётным данным пользователя, у которого есть доступ по SSH, рекомендуется обезопасить свой сервер. По умолчанию SSH слушает порт 22. В целях безопасности рекомендуется сменить порт SSH на нестандартный. Это значительно усложнит жизнь ботам, которые постоянно сканируют серверы и открытые порты и пытаются подобрать логин и пароль для доступа к серверу по SSH по стандартному порту. Помимо смены порта можно настроить блокировку количества попыток подключений к серверу (например, с помощью утилиты fail2ban), отключить подключение по SSH пользователя root, отказаться от простых и угадываемых логинов (таких как admin, ivanov, zabbix и пр.), настроить запрет подключения по паролю и включить подключение только по ключу (требуется предварительная настройка и проверка, иначе можно потерять доступ к серверу по SSH). Как правило для подключения по SSH в терминале Linux используется следующая команда:
# ssh username@ip_address
Если изменить порт, то при подключении к серверу по SSH нужно явно указывать порт (возьмем для примера порт 2233):
# ssh -p 2233 username@ip_address
- Изменение порта SSH
- 1. Конфигурационный файл
- 2. Перезапуск SSH
- 3. Проверка
Изменение порта SSH
Конфигурационный файл
Обязательно проверьте, что порт, на который мы хотим заменить стандартный порт SSH, не занят другими службами. Это можно сделать с помощью утилиты netstat. Для этого потребуется установить пакет net-tools.
Debian/Ubuntu
# apt install net-tools # netstat -tulpan | grep 22
CentOS/AlmaLinux
# yum install net-tools # netstat -anp | grep 22
Вывод будет примерно таким:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 132394/sshd: /: tcp6 0 0 . 22 . * LISTEN 132394/sshd:
Видим, что порт 22 занят. Проверим 2233:
#netstat -tulpan | grep 2233 для Ubuntu/Debian
# netstat -anp | grep 2233 для CentOS/AlmaLinux
Вывод пуст, можно занимать.
Меняем порт в конфигурационном файле SSH сервера, воспользоваться можно любым текстовым редактором:
# vim /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config
Port 22
Если строка начинается с символа #, его нужно удалить, и вместо 22 порта написать любой другой, например, 2233. Сохраняем изменения.
Перезапуск SSH
Если вы допустили какую-либо ошибку в конфигурационном файле, то можете потерять связь с сервером. Будьте осторожны. Для начала лучше потренироваться на тестовом сервере. В идеале у вас должен быть альтернативный доступ к серверу, например по VNC.
Debian/Ubuntu
# systemctl restart ssh
CentOS/AlmaLinux
# systemctl restart sshd
Так как текущая сессия SSH ещё активна, можно открыть новое окно и проверить, что подключение по новому порту работает:
# ssh username@ip_address -p2233
Если подключение удалось, то настройки верные. В противном случае что-то не так, и можно проверить конфигурацию в уже открытом подключении.
Проверка
Debian/Ubuntu
# netstat -tulpan | grep ssh
CentOS/AlmaLinux
# netstat -anp | grep ssh
Если все нормально, увидим похожий результат:
tcp 0 0 *:2233 *:* LISTEN 3849/sshd tcp6 0 0 [::]:2233 [::]:* LISTEN 3849/sshd
root sshd 813 3 tcp6 *:2233 *:* root sshd 813 4 tcp4 *:2233 *:*
Готово. Мы сменили стандартный порт SSH на нестандартный, таким образом усилив безопасность своего сервера