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.