Вопрос или проблема
Я надеюсь, кто-то сможет мне с этим помочь.
У меня установлена GVM v24.0.0 на Kali 2024.4. Оказалось, я хочу выполнить сканирование нескольких серверов, используя SSH + аутентификацию по открытому ключу. Эти серверы используют Ubuntu 24.04 с аутентификацией LDAP. У них настроен пользователь np-scan (как локальный пользователь) с открытым ключом в ~/.ssh/authorized_keys.
Аутентификация с пользователем np-scan с использованием команды ssh
работает без проблем, однако, когда я запускаю сканирование, openvas не может получить доступ.
Я пытаюсь запустить только скрипт /var/lib/openvas/plugins/ssh_authorization.nasl с помощью следующей команды:
openvas-nasl -B -X -t 10.0.9.91 -i /var/lib/openvas/plugins /var/lib/openvas/plugins/ssh_authorization.nasl -d --kb="Services/ssh=2222" --kb="Secret/SSH/login=np-scan" --kb="Secret/SSH/privatekey=/root/.ssh/id_ed25519-np-scan" --kb="global_settings/ssh/debug=1"
Я предварительно установил переменную окружения export OPENVAS_LIBSSH_DEBUG=1
, чтобы показать больше деталей. Вот результат:
lib misc-Message: 14:50:33.723: set key login/SSH/required_login_info_given -> 1
lib nasl-Message: 14:50:33.723: Connecting to SSH server '10.0.9.91' (port 2222, sock 0)
[2025/02/02 14:50:33.724178, 1] ssh_config_parse_line: Unsupported option: ProxyUseFdpass, line: 6
[2025/02/02 14:50:33.724213, 1] ssh_config_parse_line: Unsupported option: CheckHostIP, line: 7
[2025/02/02 14:50:33.724234, 1] ssh_config_parse_line: Unsupported option: ProxyUseFdpass, line: 14
[2025/02/02 14:50:33.724281, 1] ssh_config_parse_line: Unsupported option: CheckHostIP, line: 15
[2025/02/02 14:50:33.724352, 1] ssh_config_parse_line: Unsupported option: HashKnownHosts, line: 52
SSH available authentication methods: publickey
lib nasl-Message: 14:50:33.830: SSH public key authentication failed for session 9001: Error converting provided key
lib nasl-Message: 14:50:33.830: SSH authentication failed for session 9001: No more authentication methods to try
It was not possible to login using the provided SSH credentials. Hence authenticated checks are not enabled. Error:
lib misc-Message: 14:50:33.832: set key login/SSH/failed -> 1
lib misc-Message: 14:50:33.832: set key login/SSH/failed/port -> 2222
lib misc-Message: 14:50:33.833: set key login/SSH/failed/reason -> It was not possible to login using the provided SSH credentials. Hence authenticated checks are not enabled. Error:
lib misc-Message: 14:50:33.834: set key HostDetails -> Auth-SSH-Failure
lib misc-Message: 14:50:33.834: set key HostDetails/NVT -> 1.3.6.1.4.1.25623.1.0.90022
lib misc-Message: 14:50:33.834: set key HostDetails/NVT/1.3.6.1.4.1.25623.1.0.90022/Auth-SSH-Failure -> Protocol SSH, Port 2222, User np-scan : Login failure
Я наблюдаю, что появляется ошибка SSH public key authentication failed for session 9001: Error converting provided key
. Согласно коду openvas-scanner на Github (https://github.com/greenbone/openvas-scanner/blob/27ab641e5afb2d11d079319d5d770bfba8cf2cc2/nasl/nasl_ssh.c#L951) это происходит из-за того, что функция libssh ssh_pki_import_privkey_base64
не может импортировать ключ. Я думаю, что вместо содержимого он получает путь к файлу ключа. Я попытался передать содержимое закрытого ключа в качестве аргумента, но это не дало никакого результата.
Ответ или решение
При возникновении ошибки «Error converting provided key» при использовании OpenVAS для выполнения сканирования с аутентификацией SSH с использованием публичного ключа, важно рассмотреть несколько ключевых аспектов проблемы: формат ключа, поддержка и специфику командной строки OpenVAS.
Теория
Ошибка «Error converting provided key» указывает на то, что OpenVAS не смог импортировать ваш закрытый ключ SSH. Это может происходить из-за нескольких причин, связанных с форматированием ключа, синтаксической ошибкой при передаче пути к ключу или несовместимостью в используемом формате ключа.
libssh, библиотека, используемая OpenVAS для обработки SSH, может иногда некорректно интерпретировать путь к ключу или его содержимое, если они передаются неправильно. Функция ssh_pki_import_privkey_base64
, используемая библиотекой libssh, ожидает, что закрытый ключ будет предоставлен в действительном формате Base64. Если формат или метод передачи отличается, это может стать источником проблемы.
Пример
Когда вы используете следующие команды:
openvas-nasl -B -X -t 10.0.9.91 -i /var/lib/openvas/plugins /var/lib/openvas/plugins/ssh_authorization.nasl -d --kb="Services/ssh=2222" --kb="Secret/SSH/login=np-scan" --kb="Secret/SSH/privatekey=/root/.ssh/id_ed25519-np-scan" --kb="global_settings/ssh/debug=1"
диагностика ошибок указывает, что проблема может быть в интерпретации пути к закрытому ключу или кодировке файла ключа. Например, ключ может быть в формате, который OpenVAS не поддерживает напрямую (возможно, новый формат Ed25519), или предоставляется путь, который libssh неверно интерпретирует как необходимость преобразования содержимого в формате Base64.
Применение
-
Проверка формата ключа: Убедитесь, что ваш SSH-ключ находится в правильном формате. Возможно, OpenVAS ожидал другой формат (например, RSA вместо Ed25519). Выполните команду
ssh-keygen
для преобразования формата, если это необходимо:ssh-keygen -p -m PEM -f /путь/к/вашему/ключу
Это преобразует ключ в формат PEM, который может быть более совместим с устаревшими системами и библиотеками.
-
Проверка пути к ключу: Подтвердите, что путь к закрытому ключу, указанный в команде, правильный и что OpenVAS имеет необходимые разрешения на доступ к этому файлу. Убедитесь, что права доступа установлены так, чтобы пользователь, запускающий OpenVAS, мог читать файл ключа.
-
Передача содержимого ключа: Если вы уверены в пути, попробуйте явным образом передать содержимое ключа. Сначала убедитесь, что ключ закодирован в формате Base64:
cat /root/.ssh/id_ed25519-np-scan | base64
Затем передайте закодированное содержимое в OpenVAS, убедившись, что вы используете соответствующий формат передачи с флагами командной строки, если это поддерживается.
-
Обновление компонентов: Убедитесь, что все компоненты GVM и OpenVAS обновлены до последних доступных версий. Проблемы совместимости могут быть устранены в более поздних версиях.
-
Конфигурация SSH: Перепроверьте файл конфигурации SSH для любых ненужных или устаревших параметров, таких как
ProxyUseFdpass
иCheckHostIP
, которые могут быть причиной предупреждений об «Unsupported option». Хотя эти предупреждения напрямую не связаны с ошибкой ключа, их устранение может улучшить общую стабильность соединения. -
Журналирование и диагностика: Продолжайте использовать переменные среды как
OPENVAS_LIBSSH_DEBUG=1
, чтобы отслеживать более полную информацию по процессу аутентификации и путям поиска решения.
Устранение ошибки требует тщательной проверки и учета всех возможных причин, связанных с ключами SSH и их обработкой. В случае дальнейших сложностей рекомендуется обратиться к технической документации или форумам поддержки OpenVAS для детального разбора вашей спецификации использования.