SSH (от английского Secure SHell, обозначающего «безопасная оболочка») – шифрующий данные сетевой протокол, работающий на сеансовом уровне. Позволяет удаленно управлять операционной системой и туннелировать ТСР-соединения.

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

Первый протокол SSH под названием SSH-1, был создан в 1995 году в Финляндии Тату Улененом из Технологического института Хельсинки. Необходимость его создания обосновывалась тем, что существующие на тот момент протоколы абсолютно не обеспечивали защиту передаваемых данных и при наличии соответствующего программного обеспечения типа сниффера злоумышленник мог очень легко завладеть конфиденциальной информацией пользователей сети.

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

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

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

Протокол SSH является устойчивым к атакам по прослушиванию (сниффингу) трафика и к атакам включения в сессию, то есть если сессия установлена, ее перехватить и расшифровать уже невозможно, но атакам man-in-the-middle данный протокол все-таки к сожалению является подверженным. При проведении данного типа атак подбирается слепок ключа сервера и сервер таким образом попадает под полное управление злоумышленника. Для предотвращения данного типа атак используют довольно элементарные меры безопасности: слепки ключа сервера не должны передаваться по открытым каналам доступа и быть незашифрованными.

Во всех UNIX-подобных операционных системах поддержка SSH представлена в виде как серверных, так и клиентских утилит. Для других операционных систем также разработано довольно много утилит-реализаций SSH. Свою популярность протокол SSH обрел после того, как в открытом доступе появились и стали широко используемыми программы-снифферы и вследствие их использования возникшие проблемы безопасности и факты неоднократного взлома тех или иных узлов сети.

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

Какие же существуют рекомендации по безопасному использованию протокола SSH на сервере? Их несколько:

  1. Запретите удаленный root-доступ.
  2. Не отключайте доступ без пароля или с пустым паролем.
  3. Выберите нестандартный порт SSH.
  4. Используйте для шифрования длинные RSA-ключи (длиной 2048 бит и более).
  5. Ограничьте список IP-адресов, с которых будет разрешен доступ. Это осуществляется настройками файервола.
  6. Не используйте популярные и простые логины и пароли.
  7. Регулярно просматривайте логии об ошибках аутентификации, в них зачастую присутствует информация о попытках взлома и подбора пароля к Вашей системе.
  8. Установите интеллектуальную систему обнаружения вторжений.
  9. Чаще используйте ловушки, которые подделывают SSH-сервисы.

На этом мы заканчивает рассмотрение такой интересной темы, как протокол SSH, серверы и клиенты, работающие на его основе

Кстати, это тоже интересно:

  1. Протокол SSL
  2. Криптография
  3. Socks
  4. TCP/IP
  5. Сканер портов