Добрый день уважаемые гуру форума,
Пожалуйста, подскажите, какой софт лучше выбрать для SSO (и почему), чтобы в результате получить наиболее оптимальное решение для различных устройств (Linux, Windows, Web типа WordPress и т.п.)? Нужно, чтобы была возможность для аутентификации использовать аппаратное крипто (U2F, FIDO2 или PKCS11), чтобы исключить возможность аутентификации через украденный пароль или ключ, хранящийся на рабочей станции (подразумевается, что аппаратная ключница - это уже не рабочая станция, а соседний компьютер, подключенный к рабочей станции хотя бы по USB). Кроме того нужно, чтобы такой SSO хорошо интегрировался с обратным прокси типа NGINX Proxy Manager, SWAG и т.п.:
https://github.com/NginxProxyManager/nginx-proxy-manager/issues/437
https://github.com/NginxProxyManager/nginx-proxy-manager/pull/2630
https://github.com/NginxProxyManager/nginx-proxy-manager/issues/313
для защиты веб ресурсов, которые пока самостоятельно не поддерживают плагины SSO.
Т.е. хотелось бы, чтобы получился хотя бы частично self-hosted аналог JumpCloud в миниатюре.
Как вариант присматриваюсь к связке FreeIPA+KeyCloak
Если я правильно понял, то KeyCloak поддерживает регистрацию нескольких токенов FIDO2 аналогично Google.com
Среди относительно популярных SSO также мне известны: Authelia, Authentik, Kanidm, Okta, Ory, Dex, etc. Сравнение части из них со стороны Authentik (возможно предвзятое): https://goauthentik.io/
Насколько я понял из обзоров, Authentik самый тяжелый (около 2GB RAM), а KeyCloak последнее время достаточно хорошо оптимизировали, и он потребляет менее 500 Mb RAM при средней нагрузке?
В целом я сильно неуверен в безопасности SSO. Можно ли считать аутентификацию через U2F/PKCS11 -> FreeIPA+KeyCloak -> Приложение
такой же безопасной, как и аутентификацию напрямую в приложение без SSO, т.е. только U2F/PKCS11 -> Приложение
без звена FreeIPA+KeyCloak
?
При использовании ключей U2F/PKCS11 хранит ли софт FreeIPA+KeyCloak долговременно (дольше аутентифицированной сессии) какие-либо важные секреты у себя на сервере? Т.е. облегчает ли злоумышленнику задачу входа в систему получение (например, кража) ZFS снэпшота такого сервера FreeIPA+KeyCloak ? Ведь украсть неизвлекаемый ключ только из носителя U2F/PKCS11 практически невозможно без использования бэкдоров трехбуквенных спецслужб или очень дорогой операции по извлечению и декодированию памяти такого носителя, сравнимой со взломом операционной системы современной банковской карты с чипом?
Наверно, bastion hosts (пограничные Internet узлы для входящих админских подключений) все же лучше никогда не подключать к подобному SSO и использовать на них только самые минимальные, но хорошо защищенные варианты аутентификации SSH типа PKCS11 (Nitrokey PRO2 или Rutoken ECP2) или U2F? С другой стороны, например, Linode использует какую-то систему SSO для аутентификации через учетку Github и Google. А ведь их облако ворочает миллионами U$D доходов и потенциальных убытков в случае взлома?
Желательна рекомендация софта из вашего реального опыта, т.е. того, с чем вы уже работали или тестировали и собираетесь перейти на такой софт в своей организации.
И вишенка на торте, где находится волшебный docker-compose.yml к такому SSO? :)