mokey — это веб-приложение, которое предоставляет инструменты самообслуживания для управления учетными записями пользователей для FreeIPA. Мотивацией для этого проекта была реализация функции самостоятельного создания учетной записи и сброса пароля, отсутствующей во FreeIPA. Эта функция не предусмотрена по умолчанию во FreeIPA. Дополнительную информацию и обоснование этого решения см. здесь. mokey — это не плагин FreeIPA, а полноценное автономное приложение, использующее API JSON FreeIPA. mokey не требует изменений в базовой схеме LDAP и использует базу данных MariaDB для хранения токенов доступа. Пользовательский интерфейс и веб-интерфейс можно настроить в соответствии с требованиями внешнего вида организации. mokey написан на Go и выпущен под модифицированной лицензией BSD.
mokey следует считать альфа-версией программного обеспечения и использовать его на свой страх и риск. Такие функции, как самостоятельный сброс пароля, сопряжены с риском для безопасности и могут сделать ваши системы уязвимыми для злоупотреблений.
Примечание: mokey необходимо установить на машину, уже зарегистрированную во FreeIPA. Также рекомендуется установить пакет ipa-admintools. Регистрация хоста во FreeIPA выходит за рамки этого документа.
Чтобы установить mokey, загрузите копию предварительно скомпилированного двоичного файла здесь.
Архив tar.gz:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
пакеты deb, rpm:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
Создайте учетную запись пользователя и роль во FreeIPA с привилегией «Изменение пользователей и сброс паролей». Эта учетная запись пользователя будет использоваться приложением mokey для сброса паролей пользователей. Для разрешения «Изменение пользователей» также необходимо включить «ipauserauthtype». Выполните следующие команды (требуется установка ipa-admintools):
$ mkdir /etc/mokey/private
$ kinit adminuser
$ ipa role-add 'Mokey User Manager' --desc='Mokey User management'
$ ipa role-add-privilege 'Mokey User Manager' --privilege='User Administrators'
$ ipa user-add mokeyapp --first Mokey --last App
$ ipa role-add-member 'Mokey User Manager' --users=mokeyapp
$ ipa permission-mod 'System: Modify Users' --includedattrs=ipauserauthtype
$ ipa-getkeytab -s [your.ipa-master.server] -p mokeyapp -k /etc/mokey/private/mokeyapp.keytab
$ chmod 640 /etc/mokey/private/mokeyapp.keytab
$ chgrp mokey /etc/mokey/private/mokeyapp.keytab
Отредактируйте файл конфигурации mokey и укажите путь к файлу keytab. Значения token_secret
и csrf_secret
будут сгенерированы автоматически, если оставить их пустыми. Установите эти секретные значения, если вы хотите, чтобы сеансы сохранялись после перезапуска. Другие параметры конфигурации для конкретного сайта см. здесь:
$ vim /etc/mokey/mokey.toml
# Path to keytab file
keytab = "/etc/mokey/private/mokeyapp.keytab"
# Secret key for branca tokens. Must be 32 bytes. To generate run:
# openssl rand -hex 32
token_secret = ""
# CSRF token secret key. Should be a random string
csrf_secret = ""
Настоятельно рекомендуется запускать mokey с использованием HTTPS. Вам понадобится SSL-сертификат/частный_ключ либо с использованием PKI FreeIPA, самозаверяющий, либо из коммерческого центра сертификации. Создание сертификатов SSL выходит за рамки этого документа. Вы также можете запустить mokey через haproxy или Apache/Nginx.
Запускаем сервис mokey:
$ systemctl restart mokey
$ systemctl enable mokey
mokey позволяет пользователям добавлять/удалять открытые ключи SSH. Серверы, зарегистрированные во FreeIPA, можно настроить на наличие открытых ключей пользователей для поиска по sshd в LDAP, добавив следующие строки в /etc/ssh/sshd_config и перезапустив sshd:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey реализует поток входа/согласия для обработки запросов на вызов от Hydra. Это служит мостом между Hydra и поставщиком удостоверений FreeIPA. Дополнительную информацию о Hydra и процессе входа в систему и согласия см. здесь.
Чтобы настроить поток входа/согласия Hydra, установите следующие переменные в /etc/mokey/mokey.toml
:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Любые клиенты OAuth, настроенные в Hydra, будут аутентифицированы через mokey с использованием FreeIPA в качестве поставщика удостоверений. Пример клиентского приложения OAuth 2.0/OIDC см. здесь.
Во-первых, вам понадобится Go v1.21 или новее. Клонируем репозиторий:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey выпускается под лицензией в стиле BSD. См. файл ЛИЦЕНЗИИ.