[[FreeIPA]]
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
kb:freeipa [2014/03/20 23:09]
stevko
kb:freeipa [2014/10/01 11:56] (current)
stevko "profesionálnejší" úvod
Line 1: Line 1:
 +====== 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.
  
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki