class: center, middle # FreeIPA auf AlmaLinux ### Hauke Goos-Habermann #### https://goos-habermann.de ##### 25.5.2021 --- ### Über mich - Entwickler des Softwareverteilungssystems m23 - Organisator der Kieler Open Source und Linux Tage - Dienstleister zu m23, Linux und Freier Software - Softwareentwicklung (PHP, BASH, C/C++, JS, Python und was sonst so gebraucht wird...) - Administration - Schulungen - Support - Beratung - quasi **alles**, *was mit Linux zu tun hat* - Aktuell: Neues Kundenprojekt auf Basis von AlmaLinux/FreeIPA --- ### AlmaLinux - Ersatz für den eingestellten RHEL-Fork CentOS - Entwicklung vorangetrieben durch CloudLinux (10 Jahre Erfahrung mit der Erstellung von RHEL-Forks) - Versprechen - Immer frei und immer OpenSource - Keine Lizenzeinschränkungen oder Einschränkung des Einsatzzwecks - Zu jedem RHEL wird es einen AlmaLinux OS Fork geben - Community wird bei allen wichtigen Entscheidungen mit einbezogen - Sicherheits- und Wartungsaktualisierungen bis 2029 - CloudLinux wird jährlich 1Mio US$ in die Entwicklung investieren .cls[ .copyright[Quelle
https://almalinux.org/#about
] ] --- ### Installation: AlmaLinux * AlmaLinux-8.3-x86_64-boot.iso herunterladen von https://mirrors.almalinux.org/isos/x86_64/8.3.html * Virtuelle Maschine in VirtualBox anlegen * Profil: Linux/Red Hat (64-Bit) * RAM: 4 GB (4096 MB) * Festplattengröße: 25 GB * **Wichtig**: Grafikcontroller: VBoxSVGA mit 32 MB nehmen. * Umkonfigurieren: 2 CPUs, Netzwerkbrücke * Vom ISO booten * Im Installationsprogramm * Statische (lokale) IP (z.B. ***192.168.1.183***) * FQDN-Rechnernamen (z.B. ***srv.alma.local***) * ***https://repo.almalinux.org/almalinux/8/BaseOS/x86_64/os/*** als Installationsquelle * Basisumgebung: Minimale Installation Tip: In *KeePassX* einen Eintrag anlegen und bei **Benutzername:** eintragen: **repo.almalinux.org&almalinux&8&BaseOS&x86?64&os&** Dann zur VM und wieder zu KeePassX wechseln und **Strg+V** für *"Auto-Type"* drücken. Das Repo wird dann durch simulierte Tastenanschläge, bei ausgewählem Repo-Feld, eingetippt. --- ### FreeIPA-Server *"Distribution"* von verschiedenen Komponenten zum Installieren eines **I**dentity-(Identitätsfeststellung), **P**olicy-(Regelwerk) und **A**udit(Überprüfung)-Systems: * 389 Directory Server: LDAP-Datenbank zum strukturierten Speichern von Informationen (z.B. Benutzer, Gruppen oder Zugriffsrechte) * MIT Kerberos: Ausstellung und Überprüfung von Tickets zum Legitimieren von Benutzern/Rechnern bei Diensten * chrony: NTP-Server zur Zeitsynchronistation aller beteiligten Systeme und Komponenten * Bind: DNS-Server zum Auflösen von (internen) Hostnamen zu IP-Adressen * PKI: Dogtag Certificate System * Weboberfläche: Für die Administration * CLI, REST-API, XMLRPC, JSONRPC-API und Python-SDK: Schnittstellen für Kommandozeile und Skripte --- ### FreeIPA-Server-Installation 1 Den FreeIPA-Server gibt es als Paket für AlmaLinux, Fedora, (CentOS,) RHEL und Debian SID/unstable oder auch als Docker-Image vom FreeIPA-Projekt. ```bash myTimezone='Europe/Berlin' KRB_realm='ALMA.LOCAL' adminUserKerberosPassword='adminTest' directoryManagerpassword='directoryTest' # Netzerk-, Domaineinstellungen auslesen myFQDN="$(hostname -f)" myHostname="$(hostname -s)" myDomain="$(hostname -d)" myIP=$(hostname -I | cut -d' ' -f1) # Für ipa-Kommando wichtig export LC_ALL="C.UTF-8" # Zeitzone setzen (da America/New_York voreingestellt) timedatectl set-timezone "$myTimezone" # Hostname soll nicht zu localhost aufgelöst werden sed -i "/^127\.0\..*$myHostname$/d" /etc/hosts # Hostnamen und FQDN zur externen IP auflösen echo "$myIP $myFQDN $myHostname" >> /etc/hosts ``` --- ### FreeIPA-Server-Installation 2 ```bash # IDM-Modul freischalten, damit ipa-server verfügbar wird yum -y module enable idm:DL1 # Schnellere Zufallszahlen yum -y install rng-tools systemctl start rngd systemctl enable rngd # Ports der einzelnen Dienste in der Firewall freischalten for port in dns http https kerberos kpasswd ldap ldaps ntp do firewall-cmd --permanent --add-service=$port done firewall-cmd --reload # Alle freigeschalteten Dienste auflisten firewall-cmd --list-all # FreeIPA-Pakete installieren yum install -y ipa-server ipa-server-dns ``` --- ### FreeIPA-Server-Installation 3 * DNS-Server für das Auflösen von externen FQDN wählen und beim Parameter *"--forwarder"* eintragen: * Eigener Router: a.b.c.d * Freifunk München (zensurfrei): 5.1.66.255 * Google Public DNS: 4.4.4.4 oder 8.8.8.8 * Cloudflare: 1.1.1.1 ```bash # FreeIPA konfigurieren ipa-server-install --setup-dns --domain=$myDomain --hostname=$myFQDN \ --admin-password=$adminUserKerberosPassword \ --ds-password=$directoryManagerpassword --realm=$KRB_realm \ --forwarder=5.1.66.255 --auto-reverse --mkhomedir ``` * **Do you want to configure chrony with NTP server or pool address? [no]** beantworten mit "no" * **Continue to configure the system with these values? [no]** beantworten mit "yes" * Warten... --- ### FreeIPA-Server-Installation 4 ```bash # Testen, ob sich der Kerberos-Admin anmelden kann yes $adminUserKerberosPassword | kinit admin # Testen, ob der Kerberos-Admin über IPA-CLI auffindbar ist ipa user-find admin # NTP-Server aktivieren sed -i -e 's/^#allow/allow/' -e 's/^# allow/allow/' /etc/chrony.conf systemctl restart chronyd ``` ***Wichtig:*** Für "ipa" wird immer ein gültiges Kerberos-Ticket eines Admin-Kontos benötigt --- ### Client in FreeIPA anlegen Eine mit m23 aufgesetzte VM soll mit FreeIPA verknüpft werden. Diese hat folgende Eigenschaften: * Distribution: LinuxMint 20 * Desktop: Mate * FQDN: cl.alma.local * IP: 192.168.1.78 In FreeIPA per Kommandozeile hinzufügen ```bash # DNS-Eintrag ipa dnsrecord-add alma.local cl --a-rec 192.168.1.78 # Host-Eintrag ipa host-add cl.alma.local --desc="Test-VM" --os="Linux Mint 20" \ --password="bulkPasswd" ``` *"bulkPasswd"* ist frei wählbar und kann einmalig genutzt werden, um einen Rechner an einen FreeIPA-Server anzubinden. --- ### FreeIPA-Client-Installation 1 Als **root** am Client anmelden und dann: ```bash # Test: FQDN gesetzt? hostname -f # Test: FQDN (lokal) auflösbar? ping cl.alma.local # Grundlegende Parameter des FreeIPA-Servers KRB_realm='ALMA.LOCAL' ipaServerFQDN='srv.alma.local' ipaServerIP='192.168.1.183' myDomain="$(hostname -d)" # FreeIPA-Server muß auflösbar sein sed -i "/$ipaServerFQDN/Id" /etc/hosts echo "$ipaServerIP $ipaServerFQDN" >> /etc/hosts # Test: FreeIPA-Server auflösbar? ping srv.alma.local ``` --- ### FreeIPA-Client-Installation 2 ```bash # Fragen zu Kerberos-Client und PAM vorab in debconf beantworten echo "krb5-config krb5-config/kerberos_servers string krb5-config krb5-config/add_servers_realm string $KRB_realm krb5-config krb5-config/default_realm string $KRB_realm krb5-config krb5-config/add_servers boolean false krb5-config krb5-config/admin_server string krb5-config krb5-config/read_conf boolean true libpam-runtime libpam-runtime/override boolean false libpam-runtime libpam-runtime/profiles multiselect pwquality, \ unix, sss, systemd, gnome-keyring, capability" | debconf-set-selections # FreeIPA-Client-Paket installieren DEBIAN_FRONTEND=noninteractive apt-get install -y freeipa-client # Client konfigurieren und mit FreeIPA-Server verknüpfen yes yes | ipa-client-install --ntp-server=$ipaServerFQDN \ --domain=$myDomain --enable-dns-updates --password="bulkPasswd" \ --realm=$KRB_realm --server=$ipaServerFQDN # getent passwd/group ermöglichen (macht das System aber ggf. langsamer) sed -i '/^\[domain\/.*]$/a enumerate = true' /etc/sssd/sssd.conf systemctl restart sssd ``` --- ### FreeIPA-Weboberfläche Am Browserrechner den FQDN des FreeIPA-Servers auflösbar machen. Entweder ***nameserver 192.168.1.183*** am Anfang von ***/etc/resolv.conf*** als ersten DNS-Server ODER folgendes in ***/etc/hosts*** ```bash echo "192.168.1.183 srv.alma.local" >> /etc/hosts ``` eintragen. (Alternativ auch den FreeIPA-Client installieren) Dann im Browser ***https://srv.alma.local/*** aufrufen und mit * Benutzer: admin * Paßwort: adminTest anmelden. --- class: center, middle ### Informationen zu mir und meinen Dienstleistungen, m23, ... ### https://goos-habermann.de