freeipa-lab.-
Table of Contents
Guida: Installazione e Configurazione di FreeIPA (Server e Client)
Questa guida illustra i passaggi principali per:
- Installare e configurare un FreeIPA Server.
- Unire i client al dominio FreeIPA (ldap/kerberos).
- Montare le home directory degli utenti da un file server NAS, in modo da centralizzare i dati.
Sommario
- 1. Introduzione
- 2. Setup e Requisiti
- 3. Installazione FreeIPA Server
- 4. Creazione Utenti e Gruppi
- 5. Configurazione NAS per le Home Directory
- 6. Configurazione FreeIPA Client
- 7. Test e Verifica Finale
- 8. Buone Pratiche e Consigli
- 9. Riferimenti
1. Introduzione
FreeIPA (Free Identity, Policy and Audit) è una soluzione integrata che fornisce:
- Gestione di identità (LDAP),
- Autenticazione centralizzata (Kerberos),
- Controllo di accesso basato su host e servizi,
- Integrazione con DNS e NTP.
Questa guida aiuta a impostare un server FreeIPA per autenticare utenti in un laboratorio, utilizzando un NAS (NFS) per memorizzare le home directory in modo che gli utenti abbiano un ambiente coerente indipendentemente dalla postazione su cui accedono.
2. Setup e Requisiti
- Sistema operativo: Fedora, RHEL, CentOS Stream (versione >= 7/8/9) o derivati.
- DNS: È consigliato che il server FreeIPA gestisca anche la zona DNS o che il vostro DNS esterno punti correttamente al server IPA. Assicuratevi di avere i record A e PTR corretti per il server e i client.
- NTP: server e client devono essere sincronizzati.
- Firewall: sul server FreeIPA vanno aperte tutte le porte necessarie (80/tcp, 443/tcp, 389/tcp, 636/tcp, 88/tcp/udp, 464/tcp/udp, 53/tcp/udp se gestite anche il DNS).
- Hostname: il server e i client devono avere host FQDN validi.
3. Installazione FreeIPA Server
3.1 Requisiti Server
- Assicurarsi che il nome host del server sia il suo Fully Qualified Domain Name (FQDN), ad esempio
ipa.lab.students.cs.unibo.it. - Configurare la risoluzione DNS corretta (nameserver).
3.2 Installazione Pacchetti
Installare i pacchetti necessari. Ad esempio su Fedora/CentOS/RHEL:
sudo dnf install -y freeipa-server freeipa-server-dns
3.3 Configurazione Iniziale di FreeIPA Server
sudo ipa-server-install --setup-dns \
--mkhomedir \
--realm LAB.STUDENTS.CS.UNIBO.IT \
--domain lab.students.cs.unibo.it \
--ds-password <PASSWORD_DS> \
--admin-password <PASSWORD_ADMIN> \
--hostname ipa.lab.students.cs.unibo.it \
--forwarder 130.136.3.1 \
--unattended
- –setup-dns: abilita il DNS integrato di FreeIPA (facoltativo).
- –mkhomedir: crea automaticamente la home directory per gli utenti al primo login.
- –realm: nome Kerberos (maiuscolo).
- –domain: dominio DNS (minuscolo).
- –ds-password: password Directory Manager (LDAP).
- –admin-password: password utente admin di FreeIPA.
- –hostname: FQDN del server.
- –forwarder: DNS forwarder (se gestisci DNS integrato).
- –unattended: esecuzione non interattiva.
3.4 Verifica
systemctl status ipa
È anche possibile accedere all’interfaccia web su https://ipa.lab.students.cs.unibo.it/ con l’utente admin.
4 Creazione Utenti e Gruppi
- Da WebGui
- Accedere alla webgui

- Premere su Add

- Compilare tutti i campi stando attenti al gruppo se impostato

- Da CLI
## Crea un utente
ipa user-add nomeutente --first=Nome --last=Utente --email=nome.utente@example.com
## Imposta o reimposta password
ipa passwd nomeutente
5 Configurazione NAS per le Home Directory
- Esportare la share NFS dal NAS: ad esempio /mnt/pool0/lab_home/user_lab.
- UID/GID: FreeIPA sincronizza gli UID/GID degli utenti, quindi gli utenti appariranno con le stesse credenziali su ogni client.
- Controllare le impostazioni di esportazione, ad esempio /etc/exports (dipende dal NAS in uso).
6 Configurazione FreeIPA Client
- name: set-variabiles
set_fact:
nas_ip: 130.136.201.200
mounting_point_nas: /mnt/pool0/lab_home/user_lab
freeipa_client_domain: lab.students.cs.unibo.it
freeipa_client_server: ipa.lab.students.cs.unibo.it
freeipa_client_realm: LAB.STUDENTS.CS.UNIBO.IT
freeipa_client_principal: admin
freeipa_client_password: fedoraadm
freeipa_client_fqdn: ipa.lab.students.cs.unibo.it
freeipa_client_install_options:
- "--mkhomedir"
- name: Uninstall ipa-client
become: true
ansible.builtin.command: ipa-client-install --uninstall
ignore_errors: True
- name: Install all required packages
become: true
ansible.builtin.package:
name:
- freeipa-client
state: absent
- name: Delete ipa folder
ansible.builtin.file:
state: absent
path: /etc/ipa/*
- name: Unconditionally reboot the machine with all defaults
ansible.builtin.reboot:
msg: "Rebooting machine in 5 seconds"
- name: Configurare /etc/resolv.conf
become: true
ansible.builtin.lineinfile:
path: /etc/resolv.conf
regexp: '^nameserver'
line: 'nameserver 130.136.3.1'
state: present
- name: Install all required packages
become: true
ansible.builtin.package:
name:
- nfs-common
- freeipa-client
state: present
- name: Change hostname
shell: hostnamectl set-hostname "{{ hostname }}".lab.students.cs.unibo.it
- name: Create dir for home mount
become: true
file:
state: directory
path: /home/mnt
- name: Modify /etc/fstab file
become: true
ansible.posix.mount:
path: /home/mnt
src: "{{ nas_ip }}:{{ mounting_point_nas }}"
fstype: nfs
opts: default
state: mounted
- name: Install FreeIPA client
become: true
block:
- name: Install FreeIPA client
ansible.builtin.command: >
sudo ipa-client-install -v
--domain={{ freeipa_client_domain }}
--server={{ freeipa_client_server }}
--realm={{ freeipa_client_realm }}
--principal={{ freeipa_client_principal }}
--password={{ freeipa_client_password }}
--force
--enable-dns-updates
--mkhomedir
--unattended
args:
creates: /etc/ipa/default.conf
- name: Modify permission for home directory
become: true
lineinfile:
path: /etc/login.defs
regexp: "^{{ item.regex }}"
line: "{{ item.line }}"
state: present
loop:
- { regex: "UMASK", line: "UMASK 0700" }
- { regex: "HOME_MODE", line: "HOME_MODE 0700" }
- name: Unconditionally reboot the machine with all defaults
ansible.builtin.reboot:
msg: "Rebooting machine in 5 seconds"
6.2 Spiegazione Task chiave
- Disinstallazione e pulizia: rimuove precedenti configurazioni (ipa-client-install –uninstall) e i file sotto /etc/ipa/.
- Reboot: riavvia la macchina dopo la pulizia.
- DNS: configura /etc/resolv.conf per puntare al server DNS (130.136.3.1).
- Installazione pacchetti: freeipa-client e nfs-common.
- Impostazione hostname: hostnamectl set-hostname.
- Montaggio NFS: crea /home/mnt e aggiorna /etc/fstab per montare la share nas_ip:mounting_point_nas.
- ipa-client-install: registra il client al server FreeIPA (–unattended, –mkhomedir).
- Permessi home directory: modifica UMASK e HOME_MODE in /etc/login.defs.
- Riavvio finale: per completare la configurazione.
7 Riferimenti & Tips
7.1 Configurazione TrueNAS
Per la configurazione di TrueNAS per far si che tramite NFS rilevi anche gli uid degli utenti, dobbiamo impostare TrueNAS in questo modo:
image