1. Что такое SSH?
Secure Socket Shell (SSH), также известный как просто Secure Shell, представляет собой криптографический протокол, в основном используемый для обеспечения безопасного доступа к удаленным серверам и устройствам через Интернет. Он работает на основе криптографии с открытым ключом, которая обеспечивает механизм взаимной аутентификации между сервером и клиентом и устанавливает зашифрованный канал связи между ними по незащищенной сети.
Хотите знать как сгенерировать ssh ключ в windows при помощи git bash?
Ищите как сгенерировать ssh в Putty?
Ищите как сгенерировать ключи в Linux?
SSH широко используется для включения следующих функций:
- Безопасный доступ к удаленным системам
- Безопасное выполнение команд в удаленных системах
- Безопасная удаленная доставка обновлений программного обеспечения
- Безопасная интерактивная и автоматизированная передача файлов
- Автоматический вход на сервера
- Безопасное управление критически важными системами сетевой инфраструктуры, такими как маршрутизаторы, брандмауэры, серверы, виртуальные машины, операционные системы и многое другое.
SSH обычно включен в большинстве операционных систем. Он включен по умолчанию в Linux, Unix и Mac OS. Соединения SSH можно инициировать непосредственно через программу терминал. Однако в ОС Windows подключения SSH должны быть инициированы с помощью клиентской программы SSH. Некоторые из популярных клиентских программ, доступных сегодня, — это Putty, wolfSSH и SecureCRT.
2. Что такое ключи SSH?
Ключи SSH — это пара открытых и закрытых ключей, которые используются для аутентификации и установления зашифрованного канала связи между клиентом и удаленным компьютером через Интернет.
3. Как работает SSH?
SSH работает по модели клиент/сервер, где «SSH-клиент» — это часть программного обеспечения в системе пользователя, которая может взаимодействовать с удаленным хостом, а «SSH-сервер» — это удаленный хост, который обеспечивает доступ через безопасное соединение SSH.
Чтобы клиент мог инициировать и установить безопасное соединение с удаленным сервером, он использует три различные технологии шифрования — симметричное шифрование, асимметричное шифрование и хеширование. Общий процесс подробно описан ниже и состоит из двух этапов.
Фаза 1: Генерация общего секрета
- Квитирование TCP инициируется клиентом, во время которого он подтверждает свою личность серверу, и обе стороны договариваются о протоколах шифрования, которым необходимо следовать.
- Сервер предоставляет свой открытый ключ, чтобы подтвердить свою личность клиенту.
- «Ключ сеанса» создается обеими сторонами с использованием алгоритма Диффи-Хеллмана, который будет использоваться для шифрования всего сеанса. Здесь общедоступные и частные данные как с сервера, так и с клиента объединяются для создания этого сеансового ключа или «общего секрета», который является симметричным ключом (т. е. один и тот же ключ может использоваться для шифрования и расшифровки информации).
- Симметричное шифрование устанавливается с помощью сеансового ключа, который защищает транзакцию от внешнего перехвата.
Фаза 2: Аутентификация клиента
- Сервер аутентифицирует клиента либо путем получения зашифрованного пароля, либо с помощью ключей SSH. Поскольку пароли менее надежны, чем ключи SSH, из-за их уязвимости к атакам грубой силы, рекомендуется использовать последние.
- Аутентификация на основе ключей SSH начинается с того, что клиент сообщает серверу учетные данные пары ключей, с помощью которых он хотел бы аутентифицировать себя. В этом случае и сервер, и клиент имеют соответствующие открытые ключи.
- Сервер проверяет наличие этой пары ключей в своей базе данных, а затем использует свой открытый ключ для шифрования сообщения и отправляет его клиенту.
- Клиент расшифровывает сообщение с помощью соответствующего закрытого ключа, а затем объединяет базовое значение с сеансовым ключом для создания хеш-значения.
- Он отправляет хеш-значение обратно на сервер.
- Сервер получает это хеш-значение, а затем создает свое собственное хэш-значение (используя исходное незашифрованное сообщение и общий сеансовый ключ). Если оба хеш-значения совпадают, сервер воспринимает это как доказательство того, что клиент является владельцем закрытого ключа, и предоставляет ему аутентификацию.
- Как только аутентификация установлена, обе стороны открывают зашифрованный канал для связи друг с другом.
4. Сертификаты SSH и SSL/TLS — в чем разница?
Асимметричное шифрование является ключевым компонентом как ключей SSH, так и сертификатов SSL/TLS (сертификаты x.509). Хотя их средства работы могут быть похожими, они работают совершенно по-разному.
SSL в основном используется для защиты соединения между веб-сайтом и веб-сервером. SSH используется для установления безопасного соединения между двумя удаленными системами через Интернет.
Сертификаты x.509 требуют, чтобы пары ключей, используемые в процессе асимметричного шифрования, были прикреплены к цифровому сертификату, который имеет цифровую подпись доверенного выдающего органа ( центры сертификации или центры сертификации). Без сертификата, сопровождающего открытый ключ, протоколы SSL/TLS нельзя безопасно использовать в Интернете.
Напротив, аутентификация на основе ключей SSH использует как симметричное, так и асимметричное шифрование. Более того, использование ключей SSH не регулируется и не регулируется центральным органом. Они генерируются, распространяются и используются строго участниками сделки.
Важным преимуществом SSH перед SSL/TLS является тот факт, что он обеспечивает высокозащищенный удаленный доступ к серверам и устройствам. С другой стороны, аутентификация на основе сертификата x.509 должна быть развернута вместе с другими протоколами, такими как FTP (протокол передачи файлов), для достижения такого уровня функциональности. Это ожидаемое ограничение, поскольку сертификаты x.509 обеспечивают безопасность для чрезвычайно больших объемов трафика, которые обычно не требуют такой специализированной функциональности (например, посетители на веб-сайте магазина), а ключи SSH используются только внутри или между группами ИТ/безопасности. организаций.
Еще одно существенное различие между SSH и SSL/TLS заключается в том, что для установления SSH-соединения требуется, чтобы и клиент, и сервер взаимно аутентифицировались с помощью своих пар открытого и закрытого ключей соответственно. Но в случае подключения SSL/TLS только серверу необходимо аутентифицировать себя для клиента с помощью пары открытого и закрытого ключей. Клиенту не нужно доказывать свою подлинность серверу. Проще говоря, пользователи SSH — это привилегированные пользователи, которым разрешен доступ к удаленным системам, и для получения доступа они должны подтвердить свою подлинность на сервере. С SSL каждый, кто посещает веб-сайт, может взаимодействовать с сервером. Им не нужно аутентифицировать себя.
5. Использование SSH в вашей организации
5.1. Риски использования
Поскольку не существует руководящего органа, регулирующего использование ключей SSH, существует компонент риска, основанного на неопределенности. Ключи SSH генерируются на разовой основе, создавая возможность разрастания ключей (т. е. несколько ключей могут быть отброшены и оставлены без управления после того, как они больше не используются). Более того, отсутствие определенных процессов управления учетными данными SSH означает отсутствие конкретной инвентаризации. Крупные организации обычно имеют значительное количество ключей SSH в файле — оставленные без управления, они могут стать потенциальными лазейками в сеть или целями для кражи или взлома данных.
Еще один ключевой процесс, за которым необходимо следить, — ротация ключей. Устаревшие ключи представляют собой слабые звенья в виде недостаточно надежных паролей и устаревших алгоритмов, которые могут быть использованы хакерами в корыстных целях.
5.2. Лучшие практики управления ключами
Применение политик, контроль аудита и видимость репозитория ключей SSH — вот некоторые из рекомендуемых передовых практик для повышения уровня безопасности организации в отношении их PKI.
Получить видимость:
Периодически сканируйте свою сеть с помощью инструмента обнаружения, чтобы найти и инвентаризировать ключи SSH. Затем сопоставьте их с соответствующими конечными точками и прикрепите к ним необходимую операционную информацию, например пароли, для легкого доступа администратора.
Повернуть ключи:
Устаревшие ключи SSH, если к ним получить доступ, уязвимы для взлома кодов доступа и, следовательно, для проникновения в сеть. Определите политику, которая обязывает регулярно генерировать, менять ключи и ротацию ключей SSH, и уведомлять об этом заинтересованные стороны. Коды доступа, если они используются, не должны использоваться повторно — процесс смены ключей может быть автоматизирован, чтобы уменьшить предел риска, связанный с ручной сменой.
Политика аудита и обеспечения соблюдения:
Создайте и внедрите общеорганизационную политику, которой должны придерживаться специалисты по безопасности и ИТ. Ведите строгие журналы аудита, чтобы обеспечить прозрачность доступа, модификации и использования каждого ключа SSH и учетных данных.
Управление доступом через разрешения:
Используйте службы каталогов для назначения уровней привилегий и ролей для всех членов соответствующих команд. Таким образом, только члены команды с требуемым уровнем допуска могут изменять учетные данные SSH, что обеспечивает лучшую отслеживаемость, а также сводит к минимуму недокументированные ключи или несанкционированные модификации.
Избегайте жесткого кодирования ключей:
Исключите практику жесткого кодирования ключей SSH в программных приложениях. Это рискованно, так как слабый пароль может подвергнуть все приложение кибер-эксплойтам. Кроме того, устранение этой уязвимости также затруднено из-за жестко запрограммированных ключей. Используйте централизованно управляемые системы для управления процессами SSH с помощью контроля на основе ролей.
Хотите знать как сгенерировать ssh ключ в windows при помощи git bash?