Безопасный сетевой протокол 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 версии 1, сейчас вообще, строго не рекомендуется к применению где-либо.

Способы аутентификации по протоколу SSH, состав программного пакета OpenSSH

Безопасность протокола SSH обеспечивается следующими программными решениями:

  • Шифрование всего трафика, проходящего через SSH соединение, выполняемое по одному из возможных алгоритмов, выбираемых в процессе переговоров сторон сеанса связи. Шифрование трафика соединения, препятствует его перехвату и использованию в злонамеренных целях. За счет выбора различных алгоритмов шифрования, систему становится очень гибкой, позволяя, например, не использовать алгоритмы, в которых были обнаружены уязвимости или потенциальные угрозы безопасности, или использовать только те алгоритмы, которые поддерживаются каждой из сторон;
  • Аутентификация SSH сервера производится всегда, при любом соединении, что не позволяет подменить трафик или сам сервер;
  • Аутентификация SSH клиента может происходить различными способами, что, с одной стороны, делает сам процесс аутентификации более безопасным, с другой, делает систему еще более гибкой, упрощая работу с ней;
  • Контроль целостности сетевых пакетов, дает возможность отследить незаконные изменения трафике соединения, в случае обнаружения данного факта, соединение обрывается незамедлительно;
  • ВременнЫе параметры аутентификации, предотвращают возможность использования перехваченных и через некоторое время, расшифрованных данных соединения.

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

  • GSSAPI-based аутентификация
  • Host-based аутентификация;
  • Аутентификация пользователя с помощью публичного ключа;
  • Аутентификация "вызов-ответ" ( challenge-response );
  • Ну и наконец обычная аутентификация пользователя, по паролю;

Методы аутентификации, используются именно в этом порядке, однако у протокола версии 2 есть опция, PreferredAuthentications, позволяющая изменить порядок, установленный по-умолчанию.

В добавок SSH поддерживает дополнительные методы аутентификации пользователя, в зависимости от конкретной операционной системы ( например bsd_auth или PAM)

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

Так как SSH это полноценный сетевой протокол, естественно это и определенный набор программ, необходимых для его работы, как базовой функциональности, так и различных дополнительных возможностей. Поскольку речь у нас идет об операционной системе FreeBSD ( в других версиях Unix, набор может несколько отличаться ), то основными компонентами SSH, являются:

  • sshd - это собственно SSH сервер, программа-демон;
  • ssh - программа-клиент, ставшая заменой для rlogin и telnet;
  • scp - программа для удаленного копирования через протокол SSH, замена для rcp;
  • sftp - безопасный ftp-клиент;
  • sftp-server - подсистема обеспечивающая передачу файлов через протоколу SSH;
  • ssh-keygen - генератор ключей
  • ssh-keyscan - "сборщик" публичных ключей хостов;
  • ssh-agent - агент аутентификации, для удержания приватных ключей;
  • ssh-add - небольшая программа для добавления ключей в ssh-agent;

Как было сказано выше, sshd, это программа, отвечающая за серверную функциональность SSH, запускается она при загрузке операционной системы. Что-бы использовать протокол SSH сразу после установки FreeBSD, нужно разрешить запуск демона sshd в программе инсталляции Sysinstall. Хотя это можно сделать и позже, при условии что у вас есть доступ к терминалу сервера. Разрешить запуск демона sshd, можно через стартовый скрипт /etc/rc.conf, прописав следующую строку:

sshd_enable="YES"

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

Комментарии

ddddddddddddddddddddddddddddddddssssssssssssssssssssssssssddddddddddddd

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
 oooo   ooooooooooooo   .o88o.        .o.        ooooo      ooo             
`888 8' 888 `8 888 `" .888. `888b. `8'
888 888 o888oo .8"888. 8 `88b. 8 oo.ooooo.
888 888 888 .8' `888. 8 `88b. 8 888' `88b
888 888 888 .88ooo8888. 8 `88b.8 888 888
888 888 888 .8' `888. 8 `888 888 888
o888o o888o o888o o88o o8888o o8o `8 888bod8P'
888
o888o
Введите код, изображенный в стиле ASCII-арт.