- Обзор
- Что такое фигерпринт SSH?
- Как создаются фингерприты SSH
- Как получить фингерприты SSH
- Определение различных форматов фингерпринтов SSH
- Формат MD5
- Формат SHA-1
- Формат SHA256
- Сравнение
- Сравнение фингерпринтов в разных форматах
- Сравнение одинаковых форматов
- Сравнение различных форматов
- Лучшие практики и соображения
- Получение доверенных фингерпринтов
- Проверка совпадений отпечатков
- Настройка SSH-клиента
- Заключение
Обзор
Secure Shell (SSH) – это фундаментальный инструмент для удаленного администрирования систем и безопасного обмена данными в среде Linux.
Одним из важнейших аспектов безопасности SSH является проверка подлинности серверов по фингерпритам.
Фингерприты SSH служат уникальными идентификаторами, которые позволяют нам подтверждать подлинность удаленных серверов перед установлением соединения, тем самым предотвращая атаки типа «человек посередине».
В этом уроке мы рассмотрим концепцию отпечатков SSH и их различные форматы в Linux.
Сначала мы рассмотрим распространенные форматы MD5 и SHA-256, а также способы получения отпечатков SSH.
После этого мы углубимся в их идентификацию и подтверждение. И наконец, мы расскажем о лучших практиках управления отпечатками SSH.
Что такое фигерпринт SSH?
Отпечаток SSH – это криптографическое хэш-значение, которое однозначно идентифицирует SSH-сервер.
По сути, он служит цифровой подписью, которая помогает проверить подлинность и целостность удаленного сервера перед установкой SSH-соединения.
Как создаются фингерприты SSH
При настройке SSH-сервера генерируется пара криптографических ключей: открытый ключ и закрытый ключ.
Открытый ключ используется для генерации фингерпринта, который является уникальным представлением идентификационных данных сервера.
Этот отпечаток может быть получен и сравнен в процессе SSH-соединения, чтобы убедиться в подлинности сервера.
Как получить фингерприты SSH
Чтобы получить фингерприты SSH, мы можем использовать команду ssh-keygen, после которой следует опция -l для вывода списка отпечатков пальцев файла открытого ключа и -f для указания имени файла ключа:
MD5 обеспечивает простые и быстрые вычисления и пользуется широкой поддержкой для совместимости со старыми системами.
Однако у него есть существенные недостатки, в том числе уязвимость к атакам на столкновения.
Поэтому он считается слабым и небезопасным для криптографических целей.
Формат SHA-1
Формат SHA-1, Secure Hash Algorithm 1, вычисляет 160-битное хэш-значение, представленное в виде строки, закодированной в base64:
SHA-1 также обеспечивает более быстрые вычисления по сравнению с SHA-256 и совместим со старыми системами.
Однако он уязвим к атакам коллизии, что делает его слабым и менее безопасным для использования в криптографии.
Формат SHA256
Формат SHA-256, Secure Hash Algorithm 256-bit, вычисляет 256-битное хэш-значение.
Аналогичным образом оно представляется в виде 64-символьного шестнадцатеричного числа:
Мы выяснили, что в новых версиях ssh-keygen по умолчанию используется хэш-алгоритм SHA-256.
Он обеспечивает высокую криптографическую безопасность и устойчив к атакам на коллизии.
Однако он имеет более медленное время вычисления по сравнению с MD5 и SHA-1 и может не поддерживаться на очень старых системах.
Устаревшие сетевые команды Linux и их замены
Сравнение
Давайте еще раз рассмотрим три формата в таблице:
Хеш-алгоритм | Длина | Уровень безопасности | Скорость | Совместимость |
---|---|---|---|---|
MD5 | 128-bit | Слабый | Быстрый | Высокая |
SHA-1 | 160-bit | Слабый | Умеренный | Высокая |
SHA-256 | 256-bit | Сильный | Медленный | Умеренная (современные системы) |
Сравнение фингерпринтов в разных форматах
Проверка фингерпринтов SSH – важный шаг в обеспечении безопасности SSH-соединений.
Сравнивая фингерпринт, представленный сервером, с доверенным, хранящимся на стороне клиента, мы можем убедиться, что подключаемся к нужному серверу, а не к злоумышленнику, пытающемуся совершить атаку «человек посередине».
Этот процесс проверки помогает защитить конфиденциальные данные и предотвратить несанкционированный доступ к удаленным системам.
Сравнение одинаковых форматов
Если оба формата используют один и тот же хэш-алгоритм, мы можем сравнить их вручную.
Для успешного соединения необходимо, чтобы все строки символов в обоих отпечатках совпадали.
В качестве альтернативы можно автоматизировать сравнение строк с помощью простого скрипта:
Если ключи совпадают, можно смело продолжать соединение.
Сравнение различных форматов
И наоборот, мы не можем напрямую сравнивать отпечатки в разных форматах
Сначала нам нужно получить фингерпринт в нужном формате с помощью опции -E, которую мы использовали ранее, или опции -o в ssh:
Аналогичным образом мы можем запросить md5:
После этого мы можем использовать тот же скрипт, который мы создали ранее, чтобы сравнить два отпечатка.
Более продвинутый подход предполагает загрузку открытого ключа в систему, поддерживающую различные форматы хэшей:
Эта команда загружает информацию об открытом ключе для сервера testhost и сохраняет ее в файле testhost.ssh-keyscan.
Далее мы можем отобразить сохраненные ключи:
На выходе получаем необработанные данные открытого ключа, которые пригодятся для различных целей, в том числе для заполнения файла known_hosts или проверки подлинности сервера.
После этого мы анализируем ключи, хранящиеся в testhost.ssh-keyscan, и получаем их отпечатки тем же методом, что и раньше:
Система отобразит информацию о ключе вместе с его отпечатком SHA-256.
Наконец, мы можем сравнить отпечатки с помощью скрипта compare_fingerprints.sh, который мы создали ранее.
Лучшие практики и соображения
Проверка отпечатков SSH – важный шаг в защите удаленных соединений.
Мы всегда должны быть уверены, что устанавливаем соединения с нужными серверами, чтобы избежать потенциальных рисков безопасности.
Получение доверенных фингерпринтов
Важно получать доверенные отпечатки из надежных источников.
Это может быть официальная документация сервера, защищенные каналы, предоставленные администратором, или прямая передача от доверенного лица.
Мы должны с опаской относиться к отпечаткам, найденным в Интернете или из ненадежных источников, поскольку злоумышленники могут подделать их, чтобы скомпрометировать наше соединение.
Проверка совпадений отпечатков
Прежде чем приступить к подключению, необходимо тщательно сравнить отпечатки с помощью методов, о которых мы говорили ранее.
Даже одна опечатка или несовпадение символов может стать тревожным сигналом.
Если фингерпринты не совпадают, следует проявить осторожность.
Также может помочь обращение к администратору сервера для проверки правильности отпечатков или полное прерывание соединения, если возникнут подозрения.
Настройка SSH-клиента
Кроме того, некоторые SSH-клиенты позволяют настроить более строгие параметры проверки хоста.
Включение этих настроек добавляет дополнительный уровень безопасности, заставляя нас подтверждать отпечаток для каждого нового сервера, к которому мы подключаемся.
Этот процесс повышает безопасность, хотя может быть неудобен для часто посещаемых серверов.
Заключение
В этой статье мы узнали, что отпечатки SSH генерируются с помощью различных криптографических алгоритмов, таких как MD5, SHA-1 и SHA-256, каждый из которых имеет свои преимущества и потенциальные уязвимости.
Хотя MD5 и SHA-1 широко поддерживаются и работают быстро, они считаются менее безопасными и постепенно отходят на второй план, уступая место SHA-256 и другим усовершенствованным алгоритмам.
При проверке отпечатков SSH необходимо точно их сравнивать, особенно если форматы хэшей различаются.
Наконец, использование таких команд, как ssh-keygen с опцией -E или ssh-keyscan, поможет получить и сравнить отпечатки различных форматов, что гарантирует, что мы подключаемся к нужному серверу.
см. также:
- 🔐 Унаследованный алгоритм обмена ключами SSH
- 🔒 ASSH: усовершенствованный способ взаимодействия с SSH
- 🔐 Как проверить конфигурацию клиента SSH
- 🐧 Как установить правильные права доступа к каталогам SSH на Linux
- 🔐 Как автоматически принять отпечаток ключа ( фингерпринт ) SSH?
- 🐧 Как проверить конфигурацию клиента OpenSSH