Как я могу перечислить MAC, шифры и KexAlogrithms, поддерживаемые моим ssh-сервером?

19

Как я могу определить поддерживаемые MAC, шифры, длину ключа и KexAlogrithms, поддерживаемые моими ssh-серверами?

Мне нужно создать список для внешнего аудита безопасности. Я ищу что-то похожее на openssl s_client -connect example.com:443 -showcerts. Из моего исследования sshиспользуются шифры по умолчанию, как указано в man sshd_config. Однако мне нужно решение, которое я могу использовать в скрипте, и в нем man sshd_configнет информации о длине ключа . Я должен исправить себя здесь: Вы можете указать ServerKeyBitsв sshd_config.

Я предполагаю, что ssh -vv localhost &> ssh_connection_specs.outвозвращает нужную мне информацию, но я не уверен, являются ли перечисленные шифры шифрами, поддерживаемыми клиентом или сервером. Также я не уверен, как запустить этот неинтерактивный скрипт.

Есть ли удобный способ получить SSHинформацию о соединении?

Хенрик Пингел
источник
3
Оказалось, что, sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"как предлагает @Jakuje, работает только на хостах RHEL7, но не на RHEL6. Я закончил тем, что использовал nmap --script SSH2-hostkey localhostиnmap --script ssh-hostkey localhost
Хенрик Пингел
ssh -vvвыводит поддерживаемую функциональность как клиент-сервер (ctos) и сервер-клиент (stoc). Однако, похоже, что эти результаты ограничены тем, что поддерживают обе стороны, что делает их менее полезными для аудита безопасности.
Моше

Ответы:

18

Вы упускаете несколько моментов в своем вопросе:

  • Какая у тебя версия openssh? Это может немного отличаться по версиям.
  • ServerKeyBits опция для протокола версии 1, которую вы, надеюсь, отключили!

Поддерживаемые шифры, MAC и алгоритмы Kex всегда доступны в руководстве, и это не имеет ничего общего с длиной ключа.

Включенные шифры, MAC-адреса и алгоритмы KexAlgorithm - это те, которые предлагаются с использованием соединения, как вы указали. Но их можно получить и другими способами, например, используяsshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

Чтобы получить длину ключа вашего сервера (ключей), вы можете использовать ssh-keygen: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

но вы, вероятно, захотите также размеры модулей, которые предлагаются и используются во время обмена ключами, но это действительно зависит от метода обмена ключами, но он также должен быть читаемым из результатов отладки ssh -vvv host.

Jakuje
источник
1
Благодарю. Оказалось, что sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"работали только мои хозяева RHEL7, но не RHEL6. Я закончил тем, что использовал nmap --script SSH2-hostkey localhostиnmap --script ssh-hostkey localhost
Хенрик Пингель
1
Хост RHEL6 с последним обновлением openssh также должен исправить это.
Jakuje
Чёрт, ты прав насчёт этого. Я только проверил на устаревшей ВМ ... спасибо
Хенрик Пингел
sshd -T будет предлагать только информацию о шифрах, настроенных в файле sshd_config, а не о том, что действительно может быть добавлено к нему, поскольку поддерживается двоичным
Даниэль Дж.
10

Как я могу определить поддерживаемые MAC, шифры, длину ключа и KexAlogrithms, поддерживаемые моими ssh-серверами?

Похоже, что ответ на /superuser//a/1219759/173408 также является ответом на ваш вопрос. Умещается в одну строку:

nmap --script ssh2-enum-algos -sV -p 22 1.2.3.4

Вот вывод на простой машине Debian 9.4 с текущей версией SSH:

Запуск Nmap 7.01 (https://nmap.org) в 2018-05-22 13:40 CEST
Отчет о сканировании Nmap для 1.2.3.4
Хост работает (задержка 0,00024 с).
ПОРТ ГОСУДАРСТВЕННАЯ СЛУЖБА ВЕРСИЯ
22 / tcp open ssh OpenSSH 7.4p1 Debian 10 + deb9u3 (протокол 2.0)
| SSH2-перечислений-Algos:
| kex_algorithms: (10)
| curve25519-sha256
| curve25519-sha256@libssh.org
| ECDH-SHA2-nistp256
| ECDH-SHA2-nistp384
| ECDH-SHA2-nistp521
| Диффи-Хеллмана-группа обменных sha256
| Диффи-Хеллмана-group16-sha512
| Диффи-Хеллмана-group18-sha512
| Диффи-Хеллмана-group14-sha256
| Диффи-Хеллмана-group14-sha1
| server_host_key_algorithms: (5)
| SSH-RSA
| RSA-sha2-512
| RSA-sha2-256
| ECDSA-SHA2-nistp256
| SSH-ed25519
| encryption_algorithms: (6)
| chacha20-poly1305@openssh.com
| AES128-СУУ
| aes192-СУУ
| AES256-СУУ
| aes128-gcm@openssh.com
| aes256-gcm@openssh.com
| mac_algorithms: (10)
| umac-64-etm@openssh.com
| umac-128-etm@openssh.com
| hmac-sha2-256-etm@openssh.com
| hmac-sha2-512-etm@openssh.com
| hmac-sha1-etm@openssh.com
| umac-64@openssh.com
| umac-128@openssh.com
| HMAC-sha2-256
| HMAC-sha2-512
| HMAC-SHA1
| алгоритмы сжатия: (2)
| никто
| _ zlib@openssh.com
Информация о сервисе: ОС: Linux; CPE: cpe: / o: linux: linux_kernel

Обнаружение службы выполнено. Пожалуйста, сообщайте о любых неверных результатах на https://nmap.org/submit/.
Nmap выполнено: 1 IP-адрес (1 хост) сканируется за 0,52 секунды
Стефан Гурихон
источник
1
Я получаю PORT STATE SERVICE VERSION 22/tcp filtered sshс этой командой - хотя я могу войти на тот же сервер через SSH.
Эй
Вы буквально использовали команду или заменили 1.2.3.4на IP вашего сервера?
Стефан Гурихон
Я использовал IP моего сервера.
эй ,