Debian 9/stretch als freeipa client

Freeipa ist eine bequeme Möglichkeit im Linux/Unix-Umfeld eine zentrale Verwaltung von Benutzer und Zugriffsrechte mittels Kerberos, LDAP und Zertifikatsmanagement zu realisieren.
Da es jedoch unter Debian noch nicht den freeipa-client gibt (wie bei Centos/Fedora/Ubuntu), der die Einrichtung übernimmt, muss etwas mehr selber Hand angelegt werden.

## Voraussetzungen

– Der Hostname sollte den vollständigen Domainnamen enthalten, und der Domainname sollte der/einer der von freeipa verwalteten Domains sein.
– Die DNS-Server die von freeipa verwaltet werden sollten genutzt werden

## Installation:
Nach der folgenden [Anleitung](https://arstechnica.com/civis/viewtopic.php?t=1163042)

# Auf den freeipa-Server

kinit admin
ipa host-add –ip-address=IP-des-neues-Clients hostnamen-mit-fqdn
ipa host-add-managedby –hosts=ipa.server.domain hostnamen-mit-fqdn
ipa-getkeytab -s ipa.server.domain -p host/ hostnamen-mit-fqdn -k /tmp/name.keytab

Bei weiteren IP-Adressen (z.B. IPv4 und IPv6), kann die im Webinterface bei den Zonen ergänzt werden.

### Admin
Kopieren der Datei in `/tmp` vom ipa-Server beim client nach `/etc/krb5.keytab`

### Auf dem neuen Client
`aptitude install sssd krb5-user`
Dabei falls nicht automatisch erkannt den REALM richtig eingeben.

Die beiden folgenden Zeilen in der `/etc/ssh/sshd.conf` einfügen für die automatische Verteilung der SSH-Keys:

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

Optional auch Login über Kerberos ermöglichen indem man `GSSAPIAuthentication` ermöglicht

Die `/etc/krb5.conf` kontrollieren, sollte grob wie folgt aussehen (mit NAME = Kerberos-Realm):

[libdefaults]
canonicalize = true
default_realm = NAME
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
ticket_lifetime = 24h
forwardable = true
udp_preference_limit = 0
default_ccache_name = KEYRING:persistent:%{uid}

[realms]
NAME = {
kdc = freeipa.server.domain:88
master_kdc = freeipa.server.domain:88
admin_server = freeipa.server.domain:749
default_domain = name
}

[domain_realm]
.name = NAME
name = NAME
name = NAME

[dbmodules]
NAME = {
db_library = ipadb.so
}
die `/etc/sssd/sssd.conf` sollte etwa so aussehen:

[sssd]
services = sudo, nss, pam, ssh
domains = auth.doppelgrau.de
config_file_version = 2
#debug_level = 7

[domain/name]
#debug_level = 0x07F0
cache_credentials = True
krb5_store_password_if_offline = True
ipa_domain = name
id_provider = ipa
auth_provider = ipa
access_provider = ipa
chpass_provider = ipa
ipa_server = ipa.server.domain

[nss]
memcache_timeout = 600
homedir_substring = /home

[pam]
#debug_level = 7

[sudo]
#debug_level = 7

[ssh]

`chmod 600 /etc/sssd/sssd.conf` ausführen

Für automatische homedirs: `aptitude install libpam-mkhomedir`
Die Datei `/usr/share/pam-configs/mkhomedir` mit folgenden Inhalt anlegen

Name: Create home directory during login
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel

`pam-auth-update` ausführen

Danach am einfachsten reboot, damit alles sicher übernommen wird.