Есть ли способ установить минимальный размер, принимаемый sshd в качестве открытого ключа RSA?
Я хочу ограничить пользователей использованием ключей RSA, созданных с помощью ssh-keygen -b 8196 или выше.
Я не видел ни одной опции в sshd_config. Есть опция ServerKeyBits, но, похоже, она применима только для SSHv1.
В современных версиях sshd (новее, чем когда был задан вопрос) вы можете использовать AuthorizedKeysCommand для получения открытых ключей пользователя. Обычно его используют для получения ключей из центрального хранилища (ldap, mysql ...). Но вы также можете использовать это для фильтрации ключей пользователя. Вы также должны установить для файла AuthorizedKeys значение none, чтобы избежать возврата к нефильтрованным ключам.
8196?!?!?
Я сам не пробовал, но, возможно, компилирую из исходников после изменения ssh.h:
/* Minimum modulus size (n) for RSA keys. */
#define SSH_RSA_MINIMUM_MODULUS_SIZE 768
до желаемого размера модуля?
Я собираюсь согласиться и с CodeInChaos, и с Брэдом. Они высказывают некоторые обоснованные соображения о сомнительном подходе, который вы применяете к обеспечению безопасности ssh.
Как бы то ни было, вы можете заглянуть в PAM. Если вы проверите /etc/pam.d/sshd, вы увидите, какие модули безопасности использует sshd. Вы можете написать свой собственный модуль, чтобы гарантировать, что открытый ключ RSA, используемый для аутентификации, был сгенерирован с использованием 8196 бит, а затем поместить модуль в / lib / security. Затем добавьте в /etc/pam.d/sshd строку, которая выглядит так:
account required /lib/security/<my_fancy_security>.so
Признаюсь, я не уверен, какой механизм вы бы использовали для проверки используемого ключа. Например, вы можете попробовать проверить длину символа используемого открытого ключа. На моей машине генерация пары ключей rsa с открытым и частным доступом всегда дает открытый ключ длиной 1424 символа и закрытый ключ длиной 6446 символов. Аналогично, генерация ключа rsa с 2048 битами всегда дает открытый ключ с 400 символами и закрытый ключ с 1766 символами. Обратите внимание, что это, похоже, зависит от ОС; у меня на ноутбуке есть ключи разной длины. Это немалое ограничение.
Это лучшее, что я могу сразу придумать. Если sshd не предлагает вам решения, возможно, вам придется проявить творческий подход и начать кодирование.