mokey는 FreeIPA용 셀프 서비스 사용자 계정 관리 도구를 제공하는 웹 애플리케이션입니다. 이 프로젝트의 동기는 FreeIPA에 없는 셀프 서비스 계정 생성 및 비밀번호 재설정 기능을 구현하는 것이었습니다. 이 기능은 FreeIPA에서 기본적으로 제공되지 않습니다. 이 결정에 대한 자세한 정보와 근거는 여기를 참조하세요. mokey는 FreeIPA 플러그인이 아니라 FreeIPA JSON API를 사용하는 완전한 독립형 애플리케이션입니다. 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 = ""
HTTPS를 사용하여 mokey를 실행하는 것이 좋습니다. FreeIPA의 PKI를 사용하거나 자체 서명되거나 상용 인증 기관의 SSL cert/private_key가 필요합니다. SSL 인증서 생성은 이 문서의 범위를 벗어납니다. haproxy 또는 Apache/Nginx 뒤에서 mokey를 실행할 수도 있습니다.
Mokey 서비스를 시작하세요:
$ systemctl restart mokey
$ systemctl enable mokey
mokey를 사용하면 사용자가 SSH 공개 키를 추가/제거할 수 있습니다. FreeIPA에 등록된 서버는 /etc/ssh/sshd_config에 다음 줄을 추가하고 sshd를 다시 시작하여 LDAP에서 sshd 조회 사용자 공개 키를 갖도록 구성할 수 있습니다.
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody
mokey는 Hydra의 인증 확인 요청을 처리하기 위한 로그인/동의 흐름을 구현합니다. 이는 Hydra와 FreeIPA ID 제공자 간의 다리 역할을 합니다. Hydra 및 로그인/동의 흐름에 대한 자세한 내용은 여기를 참조하세요.
Hydra 로그인/동의 흐름을 구성하려면 /etc/mokey/mokey.toml
에서 다음 변수를 설정하십시오.
[hydra]
admin_url = "http://127.0.0.1:4445"
login_timeout = 86400
fake_tls_termination = true
Hydra에 구성된 모든 OAuth 클라이언트는 FreeIPA를 ID 공급자로 사용하여 mokey를 통해 인증됩니다. OAuth 2.0/OIDC 클라이언트 애플리케이션의 예는 여기를 참조하세요.
먼저 Go v1.21 이상이 필요합니다. 저장소를 복제합니다.
$ git clone https://github.com/ubccr/mokey
$ cd mokey
$ go build .
mokey는 BSD 스타일 라이센스로 출시됩니다. 라이센스 파일을 참조하십시오.