mokey é um aplicativo da web que fornece ferramentas de gerenciamento de contas de usuário de autoatendimento para FreeIPA. A motivação para este projeto foi implementar a funcionalidade de criação de conta de autoatendimento e redefinição de senha ausente no FreeIPA. Este recurso não é fornecido por padrão no FreeIPA, veja aqui para mais informações e a justificativa por trás desta decisão. mokey não é um plugin FreeIPA, mas um aplicativo independente completo que usa a API JSON FreeIPA. mokey não requer alterações no esquema LDAP subjacente e usa um banco de dados MariaDB para armazenar tokens de acesso. A experiência do usuário e a interface da web podem ser personalizadas para atender aos requisitos da aparência de uma organização. mokey é escrito em Go e lançado sob uma licença BSD modificada.
mokey deve ser considerado software alfa e usado por sua conta e risco. Existem riscos de segurança inerentes ao fornecimento de recursos como redefinições de senha de autoatendimento e podem tornar seus sistemas vulneráveis a abusos.
Nota: o mokey precisa ser instalado em uma máquina já cadastrada no FreeIPA. Também é recomendado ter o pacote ipa-admintools instalado. Inscrever um host no FreeIPA está fora do escopo deste documento.
Para instalar o mokey, baixe uma cópia do binário pré-compilado aqui.
Arquivo tar.gz:
$ tar xvzf mokey-VERSION-linux-x86_64.tar.gz
pacotes deb e rpm:
$ sudo dpkg -i mokey_VERSION_amd64.deb
$ sudo rpm -ivh mokey-VERSION-amd64.rpm
Crie uma conta de usuário e função no FreeIPA com o privilégio “Modificar usuários e redefinir senhas”. Esta conta de usuário será usada pelo aplicativo mokey para redefinir as senhas dos usuários. A permissão "Modificar usuários" também precisa ter o "ipauserauthtype" habilitado. Execute os seguintes comandos (requer a instalação do 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
Edite o arquivo de configuração mokey e defina o caminho para o arquivo keytab. Os valores para token_secret
e csrf_secret
serão gerados automaticamente para você se deixados em branco. Defina esses valores secretos se desejar que as sessões persistam após uma reinicialização. Para outras opções de configuração específicas do site, veja aqui:
$ 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 = ""
É altamente recomendável executar o mokey usando HTTPS. Você precisará de um certificado SSL/chave privada usando PKI do FreeIPA, autoassinado ou de uma autoridade de certificação comercial. A criação de certificados SSL está fora do escopo deste documento. Você também pode executar o mokey atrás do haproxy ou Apache/Nginx.
Inicie o serviço mokey:
$ systemctl restart mokey
$ systemctl enable mokey
mokey permite aos usuários adicionar/remover chaves públicas ssh. Os servidores registrados no FreeIPA podem ser configurados para ter chaves públicas de usuários de pesquisa sshd no LDAP adicionando as seguintes linhas em /etc/ssh/sshd_config e reiniciando o sshd:
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey implementa o fluxo de login/consentimento para lidar com solicitações de desafio do Hydra. Isso serve como ponte entre o provedor de identidade Hydra e FreeIPA. Para obter mais informações sobre Hydra e o fluxo de login/consentimento, veja aqui.
Para configurar o fluxo de login/consentimento do Hydra, defina as seguintes variáveis em /etc/mokey/mokey.toml
:
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Quaisquer clientes OAuth configurados no Hydra serão autenticados via mokey usando FreeIPA como provedor de identidade. Para obter um exemplo de aplicativo cliente OAuth 2.0/OIDC, veja aqui.
Primeiro, você precisará do Go v1.21 ou superior. Clone o repositório:
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey é lançado sob uma licença estilo BSD. Veja o arquivo LICENÇA.