Fedora jako ldap server vol. 3

Posledně se nám podařilo zprovoznit vzdálenou autentifikaci k jednomu desktopu s Fedora Workstation. Nicméně uživatele stále vkládáme formou souborů .ldif. Dnešním cílem tedy je vytvořit jednotné konfigurační místo pro správu celého adresáře. K tomuto účelu využijeme francouzský projekt Fusion Directory, který přidá webové rozhraní pro správu celého adresáře.

Příprava na instalaci

Fusion Directory můžete instalovat ze zdrojových kódů, případně jsou nabízeny i balíčky pro běžné distribuce (Cent OS, Debian). My se budeme držet návodu k CentOS, Fedora není oficiálně podporovaná, takže v průběhu instalace budeme řešit pár problémů. Následující instrukce najdete i ve webovém manuálu. Zvažte pro produkční nasazení výše zmíněný CentOS, nebo projekt FreeIPA.

Importujeme GPG klíče, abychom mohli že stažené balíčky opravdu pochází od autorů Fusion Directory. Klíč nejprve stáhneme z veřejného serveru a později ho naimportujeme do systému.

gpg --keyserver keys.gnupg.net --recv-key 0xD744D55EACDA69FF
# Vyexportování do souboru
gpg --export -a "FusionDirectory Project Signing Key <[email protected]>" > FD-archive-key
# Uložíme klíč do očekávatelné cesty v systému
cp FD-archive-key /etc/pki/rpm-gpg/RPM-GPG-KEY-FUSIONDIRECTORY
# Import do správce balíčků RPM
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-FUSIONDIRECTORY

Jakmile přidáme klíče, musíme ještě nastavit nové repozitáře, ze kterých později nainstalujeme fusion-directory. Soubory s definicí repozitářů vkládejte do umístění /etc/yum.repos.d/.

[fusiondirectory]
name=Fusiondirectory Packages for RHEL / CentOS 7
baseurl=http://repos.fusiondirectory.org/fusiondirectory-current/rhel7/RPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-FUSIONDIRECTORY

[fusiondirectory-extra]
name=Fusiondirectory Extra Packages for RHEL / CentOS 7
baseurl=http://repos.fusiondirectory.org/fusiondirectory-extra/rhel7/RPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-FUSIONDIRECTORY
EOF

Fusiondirectory ukládá uživatele s objectClass inetOrgPerson, kterou jsme v předcházejících dílech nepoužili. Instalační program nabízí možnost migrovat takovéto objekty, nicméně u mě to skončilo chybou. Proto spíše doporučuji staré skupiny odstranit přes ldapdelete. Co je ovšem nejdůležitější je inetOrgPerson přidat mezi známá schémata vašeho LDAP serveru.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Instalace

Začneme instalací hlavního balíčku fusiondirectory. Balíček má poměrně velké množství závislostí, mj. například webový server, php, různé pomocné knihovny, atd. Pokud byste náhodou instalovali fusiondirectory na jinou distribuci, pamatujte, že potřebujete PHP ve verzi alespoň 7.1. Balíček selinux instalujte vždy, i když nemáte selinux aktivní.

dnf install fusiondirectory fusiondirectory-selinux fusiondirectory-schema

Spouštění služeb

Fusiondirectory je webová aplikace, která potřebuje ke svému spuštění webový server. O tom, jak konfigurovat webový server si můžete přečíst někde na internetu (nebo se k tomu vrátíme v nějakém budoucím článku). Nezapomeňte umožit přes firewall (pokud běží) připojení z vnějšku na HTTP(S) a umožnit automatické spuštění webového serveru po startu a okamžitě ho spustit.

firewall-cmd --add-service=http --permanent
systemctl enable httpd
systemctl start httpd

Je trochu nepříjemné, že balíčkování Fusiondirectory nefunguje na Fedoře optimálně, takže nainstalovaný šablonovací systém Smarty neobsahuje podporu pro bloky s překládaným textem. Naštěstí soubor je možné nalinkovat z jiného repozitáře.

ln -s /usr/share/php/Smarty3/plugins/block.t.php /usr/share/php/Smarty/plugins/

Pokud se vše podaří, dostanete po zadání adresy <IP/hostname>/fusiondirectory/ve webovém prohlížeči na titulní stránku instalačního procesu:

fusion-directory-vstup

Vstupní obrazovka instalace Fusion Directory

Zkopírujte kód z obrazovky, abyste umožnili vašemu sezení v prohlížeči nakonfigurovat celé FusionDirectory. Tento příkaz vypadá typicky takto:

echo -n 6v98tj0nnak8q547r7d5135j1v > /var/cache/fusiondirectory/fusiondirectory.auth 

Instalace bude provedená v angličtině.

Výběr jazyka

Další obrazovka provádí kontrolu celého prostředí. Instalace do kontejneru postavené na Fedoře 30 odhalila problém s chybějící podporou JSON, kterou lze snadno vyřešit instalací balíčku dnf install php-json a konfigurační problém se souborem php.ini, kde zakážeme posílání hlavičky prozrazující přítomnost PHP na serveru. Upravte soubor /etc/php.ini a nahraďte expose_php = On za expose_php = Off. Úpravy php.ini musíte aplikovat restartováním služby php-fpm systemctl restart php-fpm. Teď již vše svítí zeleně a můžeme pokračovat.

Kontrola prostředí

Konfigurace je hotová!

Než budete pokračovat dál je potřeba upozornit na to, že se někde po cestě ztratila šablona konfigurace, takže by nemohlo dojít k dokončení instalace. Tuto šablonu stáhneme z oficiálního gitlabu a uložíme na odpovídající umístění.

curl https://gitlab.fusiondirectory.org/fusiondirectory/fd/raw/1.3-fixes/contrib/fusiondirectory.conf?inline=false > /usr/share/doc/fusiondirectory/fusiondirectory.conf

FusionDirectory používá vlastní atributy pro uložení nastavení a stavu celé aplikace. Tyto atributy rozšiřují schéma openldap serveru a je potřeba nahrát z připojených .schema souborů. Schémata vkládá nástroj fusiondirectory-insert-schema a nachází se v /etc/openldap/schema/fusiondirectory/ (přepínače -i jako insert -c pokračovat, pokud selže jeden ze schémat selže).

fusiondirectory-insert-schema -i -c *.schema

Teď už jen vyplňte jméno uživatele, způsob připojení a přes “Status” ověřte, že připojení se povedlo navázat.

Propojení LDAP a Fusion Directory

Neexistující schémata v LDAP serveru

Komplexnější nastavení FusionDirectory serveru následuje teď . K většině voleb se můžete vrátit i dodatečně. Doporučuji nastavit Users RDN na ou=People, aby to odpovídalo původnímu nastavení z minulých dílů a Login Attribute na both.

Poslední velké nastavení

Tady vidíme poslední kontrolu nastavení. Migrování existujících dat z předchozích dílů je bohužel problematické, tak Josefa Smrka (znáte z minulých dílů) smažeme ze serveru ldapdelete -x -W -D "cn=admin,dc=mojefedora,dc=cz" "cn=Josef Smrk,ou=People,dc=mojefedora,dc=cz" a ou=Groups,dc=mojefedora,dc=cz zmigrujeme zvlášť. Následující řádky proveďte přes ldapmodify -x -W -D "cn=admin,dc=mojefedora,dc=cz".

changetype: modify
add: objectClass
objectClass: gosaDepartment

Migrace dat a nastavení správy uživatelů

Poslední obrazovka nás vyzývá k uložení konfigurace. Stáhněte konfiguraci a přeneste na server. Já to třeba dělám tak, že si otevřu konfiguraci v textové editoru a její obsah zkopíruji do schránky, přes SSH si v přikazovém řádku zadám cat > /etc/fusiondirectory/fusiondirectory.conf a vložím text ze schránky, Enter a Ctrl + D pro vložení a ukončení zadávání.

Tak či tak po vložení konfigurace musíte opravit oprávnění pomocí příkazu fusiondirectory-setup --check-config opravit oprávnění.

Checking FusionDirectory's config file
/etc/fusiondirectory/fusiondirectory.conf exists…
/etc/fusiondirectory/fusiondirectory.conf is not set properly, do you want to fix it ?:  [Yes/No]?
Yes

Stažení konfigurace

Heureka! FusionDirectory je nainstalované. Jediná potíž je, že nemůžeme tvořit POSIX uživatele, abychom mohli využít naposledy nakonfiguranou desktopovou Fedoru. To se snadno vyřeší doinstalovaním odpovídajícího pluginu. Některé pluginy mění i strukturu LDAP serveru, takže je nutné nahrát i odpovídající schéma (podobně jako při instalaci). Po instalaci se stačí odhlásit a opět přihlásit a měli byste mít novou záložku aktivní. Pluginy i schémata jsou v repozitáři.

Posixový účet uživatele

Obrazovka Fusion Directory po přihlášení

sudo dnf install fusiondirectory-plugin-posix

Doporučuji vyzkoušet ACL správu v Fusion Directory (oddělená od ACL v OpenLDAP), která umožňuje uživatelům spravovat svoje informace a je možné si ji pohodlně naklikat ve webovém rozhraní.

Toto byl poslední díl tohoto krátkého seriálu. Pokusíme se vydat na našem webu článek o projektu FreeIPA, který je podstatně zajímavější (a komplexnější) projekt zahrnující LDAP, Kerberos, webové rozhraní atd. Děkujeme, pokud jste s námi udrželi chod a případné připomínky směřujte prosím do komentářů. Na našem fóru jsme připraveni pomoci, pokud se vyskytne nějaký problém a případně si můžeme jen tak popovídat v naší telegramové skupině.