Как отключить алгоритмы шифрования/MAC SSH в Linux

По некоторым соображениям безопасности, вам может потребоваться изменить алгоритмы шифрования/MAC и ключа SSH.

Алгоритмы шифрования в OpenSSH

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

Когда клиент SSH подключается к серверу, каждая сторона предлагает другой стороне списки параметров подключения. Это, с соответствующим ключевым словом ssh_config:

  • KexAlgorithms: методы обмена ключами, которые используются для генерации ключей для каждого соединения.
  • HostkeyAlgorithms: алгоритмы открытых ключей, используемые SSH-сервером для аутентификации клиента SSH.
  • Ciphers (Шифры): шифры для шифрования соединения
  • MAC: коды аутентификации сообщений, используемые для обнаружения модификации трафика.

Для успешного соединения для каждого параметра должен быть хотя бы один взаимно поддерживаемый выбор.

Если клиент и сервер не могут договориться о взаимном наборе параметров, то соединение будет неудачным. OpenSSH (7.0 и выше) выдаст сообщение об ошибке следующего вида:

При этом предлагая алгоритм: diffie-hellman-group1-sha1.

В данном случае клиент и сервер не смогли договориться об алгоритме обмена ключами. Сервер предложил только один метод diffie-hellman-group1-sha1. OpenSSH поддерживает этот метод, но не включает его по умолчанию, поскольку он слаб и находится в теоретическом диапазоне так называемой атаки Logjam.

Несколько связанных опций вступают в игру позже при аутентификации пользователя.

  • PubkeyAcceptedKeyTypes (ssh/sshd): алгоритмы открытых ключей, которые будут опробованы клиентом и приняты сервером для аутентификации с открытым ключом (например, через .ssh/authorized_keys).
  • HostbasedKeyTypes (ssh) и HostbasedAcceptedKeyTypes (sshd): типы ключей, которые будут опробованы клиентом и приняты сервером для аутентификации на основе хоста (например, через .rhosts или .shosts).

Несоответствие между клиентом и сервером во время аутентификации приведет к тому, что аутентификация не будет выполнена, несмотря на то, что она кажется настроенной.

Например, ключ пользователя ssh-dss может быть указан в .ssh/authorized_keys, но не пройти аутентификацию, поскольку по умолчанию sshd не принимает этот тип ключей.

Лучшим решением для таких сбоев является обновление программного обеспечения на другом конце и/или замена слабых типов ключей на более безопасные современные типы. OpenSSH отключает только те алгоритмы, которые мы активно рекомендуем не использовать, потому что они известны как слабые. В некоторых случаях это может быть не сразу возможно, поэтому вам может потребоваться временно отключить слабые алгоритмы, чтобы сохранить доступ.

В случае вышеприведенного сообщения об ошибке, OpenSSH можно настроить на включение алгоритма обмена ключами diffie-hellman-group1-sha1 (или любого другого, который отключен по умолчанию) с помощью опции KexAlgorithms, либо в командной строке:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 user@legacyhost

либо в файле ~/.ssh/config:

'+' перед списком указывает ssh добавить алгоритм к набору по умолчанию клиента, а не заменять его. При добавлении вы автоматически перейдете на лучший поддерживаемый алгоритм, когда сервер начнет его поддерживать.

Еще один пример, на этот раз, когда клиент и сервер не могут договориться об алгоритме открытого ключа для аутентификации хоста:

Unable to negotiate with legacyhost: no matching host key type found. Их предложение: ssh-dss

OpenSSH 7.0 и выше аналогично отключает алгоритм открытого ключа ssh-dss (DSA). Он тоже слаб, и мы не рекомендуем его использовать. Его можно снова включить с помощью параметра конфигурации HostKeyAlgorithms:

или в файле ~/.ssh/config:

В зависимости от конфигурации сервера, возможно, что другие параметры соединения не будут согласованы. Вы можете найти опции конфигурации Ciphers и/или MACs полезными для их включения. Также можно запросить, какие алгоритмы поддерживает ssh:

  • ssh -Q cipher # Список поддерживаемых шифров
  • ssh -Q mac # Список поддерживаемых MAC-адресов
  • ssh -Q key # Список поддерживаемых типов открытых ключей
  • ssh -Q kex # Список поддерживаемых алгоритмов обмена ключами.

Наконец, можно также запросить конфигурацию, которую ssh использует при попытке подключения к определенному хосту, используя опцию -G:

что приведет список всех опций конфигурации, включая выбранные значения для параметров Ciphers, MACs, HostKeyAlgorithms и KexAlgorithms.

  • ssh -vv Servername ciphers listed
  • ssh -Q kex
  • ssh -Q cipher
  • ssh -Q cipher-auth
  • ssh -Q mac
  • ssh -Q kex
  • ssh -Q ключ

Пример вывода:

Проверка существующей конфигурации SSHD

Проверьте разрешенные шифры, macs и ключевые алгоритмы перед отключением.

Проверка существующей конфигурации

Редактирование конфигурации SSHD

Вы должны отключить шифры и macs с помощью команд, приведенных ниже. Удалите macs и шифры, которые вы не хотите разрешать, затем сохраните файл. Если в конфигурационном файле SSHD нет конфигурации ciphers и macs, добавьте новую строку в конец файла.

И добавляем следующие строки

Редактирование конфигурации SSHD

И перезапускаем службу

Проверьте новую конфигурацию

sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

 

Понравилась статья? Поделиться с друзьями:
Добавить комментарий