====== FreeIPA ====== FreeIPA je riešenie od RedHatu pre centralizovanú správu užívateľov. Dokáže nastaviť, ktorí užívatelia môžu pristupovať ku ktorým počítačom. Zároveň umožňuje centrálne spravovať oprávnenia sudo a tiež ssh kľúče. Náš server má adresu ipa.brm (Mac: 52:54:00:16:26:30). Ide o virtuálny stroj na data.brm. ===== Ako nastaviť klienta, Debian ===== Chceme brmlabí počítač nastaviť ako klienta pre FreeIPA. Nech je to počítač, ktorého hostname je client.brm. Nainštalujeme balíček sssd/unstable, openssh-server (6.2, testingu) a sudo-ldap. Na ipa.brm sa prihlásime a získame ticket pre admina (''kinit admin''). Povieme serveru, že bude mať nového klienta: ipa host-add client.brm Dokumentácia hovorí použiť ''ipa host-add --force --ip-address=192.168.xx.xx client.brm'', vyzerá, že to nie je potrebné, ale môžeme použiť. Povieme serveru, že ho má //manažovať//: ipa host-add-managedby --hosts=ipa.brm client.brm Vezmeme si zo serveru //keytab// pre klienta: ipa-getkeytab -s ipa.brm -p host/client.brm -k client.keytab Zo servera si vezmeme vzniknutý súbor client.keytab a súbor ''/etc/ipa/ca.crt'' a presunieme sa na klienta. Na klientskej stanici umiestnime ''ca.crt'' do adresára ''/etc/ipa/'' (tak, ako bol na serveri) a súbor ''client.keytab'' uložíme ako ''/etc/krb5.keytab''. Ak nemá, nastavíme mu práva na 0600 (a podľa dokumentácie ešte správny SElinuxový kontext, ale to na Debiane zvyčajne nie je). Vytvoríme súbor ''/etc/sssd/sssd.conf'' s nasledovným obsahom (rovnaký ako na iných strojoch, mení sa iba riadok s ''ipa_hostname'') [sssd] config_file_version = 2 services = nss, pam, ssh, sudo debug_level = 0x00FF domains = brm [nss] [pam] [domain/brm] cache_credentials = True krb5_store_password_if_offline = True ipa_domain = brm dns_discovery_domain = brm id_provider = ipa auth_provider = ipa access_provider = ipa ipa_hostname = client.brm chpass_provider = ipa ipa_server = ipa.brm ldap_tls_cacert = /etc/ipa/ca.crt Balíček ''sssd'' by pri svojej inštalácii mal pridať príslušné položky do súborov v ''/etc/pam.d'' Skontrolujeme, či tam fakt sú: root@client:/etc/pam.d# grep sss * common-account:account [default=bad success=ok user_unknown=ignore] pam_sss.so common-auth:auth [success=1 default=ignore] pam_sss.so use_first_pass common-password:password sufficient pam_sss.so use_authtok common-session:session optional pam_sss.so Na koniec ''/etc/pam.d/common-session'' pridáme ešte session optional pam_mkhomedir.so skel=/etc/skel/ umask=0022 Dokumentácia hovorí, že je vhodnejšie použiť ''pam_oddjob_mkhomedir'', ale ten nevyzerá, že by v Debiane bol. Nastavíme v ''/etc/nsswitch.conf'' použitie ''sss'' a ''ldap'' pre ''sudo'' (u ''sudo'' má byť ''ldap'', ''sss'' asi nemusí/nemá?) passwd: compat sss group: compat sss shadow: compat sss hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis sss sudoers: files ldap sss Upravíme súbor ''/etc/krb5.conf'': [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = BRM dns_lookup_realm = false dns_lookup_kdc = true rdns = false ticket_lifetime = 24h forwardable = yes [realms] BRM = { kdc = ipa.brm:88 master_kdc = ipa.brm:88 admin_server = ipa.brm:749 default_domain = brm pkinit_anchors = FILE:/etc/ipa/ca.crt } [domain_realm] .brm = BRM brm = BRM Nastavíme ''sudo'' v súbore ''/etc/sudo-ldap.conf'' (pričom za HESLO dosadíme heslo, ktoré zistíme napríklad z konfiguráku od už nastaveného klienta): binddn uid=sudo,cn=sysaccounts,cn=etc,dc=brm bindpw HESLO ssl start_tls tls_cacertfile /etc/ipa/ca.crt tls_checkpeer yes bind_timelimit 5 timelimit 15 uri ldap://ipa.brm sudoers_base ou=SUDOers,dc=brm Sudo potrebuje nastavené //nisdomainname//, tak nastavíme (v Debiane snáď príkazom ''nisdomainname'' (čo vyzerá, že neprežije reštart, takže to zapíšeme do ''/etc/defaultdomain''). nisdomainname brm Nastavíme v ''sshd_config''u: PubkeyAuthentication yes UsePAM yes AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys AuthorizedKeysCommandUser nobody GSSAPIAuthentication yes To by malo byť všetko. Ak chceme, môžeme ešte nastaviť v ''sshd_config'' ďalšie veci (napríklad zakázať heslo, ak chceme iba kľúče z FreeIPA, tak ''AuthorizedKeysFile /dev/null'', ak sa nebojíme, prípadne nastavíme ''AuthorizedKeysFile'' len na kľúče v /root/.ssh/authorized_keys, fantázií sa medze nekladú) FreeIPA vie aj rozdistribuovávať ''known_hosts'', to zatiaľ nemám preskúšané. Ešte resetujeme na klientovi ''sssd'' a ''sshd'' (''service sssd restart'' a ''service ssh restart'') a otestujeme, že ''sss_ssh_authorizedkeys //username//'' nám vracia správne kľúče. Tým sme na klientovi hotoví. Prihlásime sa do https://ipa.brm ako ''admin'' a nastavíme skupiny pre nového hosta a to, čo potrebujeme.