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_configu:

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.