timorunge.freeipa_server

freeipa_server

Ce rôle installe et configure le serveur FreeIPA selon vos besoins.

Ce playbook s'occupe de l'initialisation de l'utilisateur administrateur Kerberos (nom d'utilisateur : admin, le mot de passe est celui que vous définissez dans freeipa_server_admin_password).

En combinaison avec freeipa (Github), il est possible (et testé) d'utiliser freeipa_server avec la dernière version de FreeIPA elle-même sur Ubuntu >= 18.04 (regardez la section d'exemple).

Ne prend pas en charge Ubuntu 20.04

Ubuntu 20.04 n’a pas le package freeipa-server.

Exigences

Ce rôle nécessite Ansible 2.5.0 ou une version supérieure.

Vous pouvez simplement utiliser pip pour installer (et définir) une version stable :

pip install ansible==2.7.7

Tous les besoins de la plateforme sont listés dans le fichier de métadonnées.

Installation

ansible-galaxy install timorunge.freeipa_server

Variables du Rôle

Il est nécessaire de définir les variables suivantes pour que ce rôle fonctionne (sans personnalisation). Ces variables n'ont pas de valeurs par défaut :

# Mot de passe de l'utilisateur administrateur kerberos - au moins 8 caractères
# Type : Str
freeipa_server_admin_password: Passw0rd
# Domaine DNS principal de la déploiement IPA
# Type : Str
freeipa_server_domain: example.com
# Mot de passe du gestionnaire de répertoire - au moins 8 caractères
# Type : Str
freeipa_server_ds_password: Passw0rd
# Nom d'hôte de cette machine (FQDN)
# Type : Str
freeipa_server_fqdn: ipa.example.com
# Adresse IP du serveur maître
# Type : Str
freeipa_server_ip: 172.20.0.2
# Nom du royaume Kerberos de la déploiement IPA
# Type : Str
freeipa_server_realm: EXAMPLE.COM

Les variables qui peuvent être passées à ce rôle et une brève description les concernant sont les suivantes. (Pour toutes les variables, consultez defaults/main.yml)

# Activer/Désactiver la gestion du dépôt EPEL RedHat
# Type : Bool
freeipa_server_enable_epel_repo: true

# Ajouter automatiquement une entrée dans /etc/hosts
# Type : Bool
freeipa_server_manage_host: true

# Choix du type d'installation du serveur FreeIPA (maître/réplica)
# Type : Str
freeipa_server_type: master

# FQDN du serveur maître FreeIPA
# Type : Str
freeipa_server_master_fqdn: ''

# La commande de base pour l'installation de FreeIPA
# Type : Str
freeipa_server_install_base_command: ipa-{{ 'server' if freeipa_server_type == 'master' else 'replica' }}-install --unattended {{ '--server=' + freeipa_server_master_fqdn if freeipa_server_type == 'replica' }}

# Les options d'installation par défaut de FreeIPA
# Type : List
freeipa_server_install_options:
  - "--realm={{ freeipa_server_realm }}"
  - "--domain={{ freeipa_server_domain }}"
  - "--setup-dns"
  - "--ds-password={{ freeipa_server_ds_password }}"
  - "--admin-password={{ freeipa_server_admin_password }}"
  - "--mkhomedir"
  - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
  - "--ip-address={{ freeipa_server_ip }}"
  - "--no-host-dns"
  - "--no-ntp"
  - "--idstart=5000"
  - "--ssh-trust-dns"
  - "--forwarder=8.8.8.8"
  - "--auto-forwarders"

Exemples

Pour garder le document concis, les options d'installation sont simplifiées. Vous pouvez trouver les options d'installation soit dans ce document soit dans les pages de manuel en ligne pour ipa-server-install.

1) Installer le serveur FreeIPA en tant que maître avec les paramètres par défaut

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-master.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

2) Installer le serveur FreeIPA en tant que réplica avec les paramètres par défaut

- hosts: freeipa-server
  vars:
    freeipa_server_type: replica
    freeipa_server_master_fqdn: ipa-master.example.com
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-replica.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

3) Installer le serveur FreeIPA et l'activer automatiquement sur toutes les interfaces réseau (IPv4)

Vous devez toujours définir freeipa_server_ip si vous souhaitez utiliser freeipa_server_manage_host.

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--ip-address={{ ansible_all_ipv4_addresses | join(' --ip-address=') }}"
  roles:
    - timorunge.freeipa_server

4) Installer le serveur FreeIPA avec des options d'installation personnalisées

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--realm={{ freeipa_server_realm }}"
      - "--domain={{ freeipa_server_domain }}"
      - "--setup-dns"
      - "--ds-password {{ freeipa_server_ds_password }}"
      - "--admin-password {{ freeipa_server_admin_password }}"
      - "--mkhomedir"
      - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
      - "--ip-address={{ freeipa_server_ip }}"
      - "--ip-address=10.0.0.2"
      - "--ip-address=192.168.20.2"
      - "--no-host-dns"
      - "--no-ntp"
      - "--idstart=5000"
      - "--ssh-trust-dns"
      - "--forwarder=8.8.8.8"
      - "--auto-forwarders"
      - "--no-ui-redirect"
      - "--no-ssh"
      - "--no-sshd"
  roles:
    - timorunge.freeipa_server

Options d'installation du serveur FreeIPA

Un aperçu des options d'installation pour ipa-server-install (4.6.4).

Usage: ipa-server-install [options]

Options:
  --version             affiche le numéro de version du programme et quitte
  -h, --help            affiche ce message d'aide et quitte
  -U, --unattended      installation ou désinstallation sans invite de l'utilisateur
  --uninstall           désinstaller une installation existante. La désinstallation peut
                        être exécutée avec l'option --unattended

  Options de base:
    -p DM_PASSWORD, --ds-password=DM_PASSWORD
                        Mot de passe du gestionnaire de répertoire
    -a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
                        mot de passe de l'utilisateur administrateur kerberos
    --ip-address=IP_ADDRESS
                        Adresse IP du serveur maître. Cette option peut être utilisée
                        plusieurs fois
    -n DOMAIN_NAME, --domain=DOMAIN_NAME
                        domaine DNS principal de la déploiement IPA (pas forcément
                        lié au nom d'hôte actuel)
    -r REALM_NAME, --realm=REALM_NAME
                        Nom du royaume Kerberos de la déploiement IPA (généralement
                        un nom en majuscules du domaine DNS principal)
    --hostname=HOST_NAME
                        nom complet de cet hôte
    --ca-cert-file=FILE
                        Fichier contenant les certificats CA pour les fichiers de
                        certificat de service
    --no-host-dns       Ne pas utiliser DNS pour la recherche de nom d'hôte pendant l'installation

  Options du serveur:
    --setup-adtrust     configure la capacité de confiance AD
    --setup-kra         configure un KRA dogtag
    --setup-dns         configure le bind avec notre zone
    --idstart=IDSTART   La valeur de départ pour la plage d'ID (par défaut aléatoire)
    --idmax=IDMAX       La valeur max pour la plage d'ID (par défaut :
                        idstart+199999)
    --no-hbac-allow     N'installe pas la règle HBAC allow_all
    --no-pkinit         désactive les étapes de configuration pkinit
    --no-ui-redirect    Ne pas rediriger automatiquement vers l'interface Web
    --dirsrv-config-file=FILE
                        Le chemin d'accès au fichier LDIF utilisé pour modifier
                        la configuration de dse.ldif lors de l'installation de l
                        instance du serveur de répertoire

  Options de certificat SSL:
    --dirsrv-cert-file=FILE
                        Fichier contenant le certificat SSL du serveur de répertoire
                        et la clé privée
    --http-cert-file=FILE
                        Fichier contenant le certificat SSL du serveur Apache et
                        la clé privée
    --pkinit-cert-file=FILE
                        Fichier contenant le certificat SSL KDC Kerberos et
                        la clé privée
    --dirsrv-pin=PIN    Le mot de passe pour déverrouiller la clé privée du serveur de répertoire
    --http-pin=PIN      Le mot de passe pour déverrouiller la clé privée du serveur Apache
    --pkinit-pin=PIN    Le mot de passe pour déverrouiller la clé privée KDC Kerberos
    --dirsrv-cert-name=NAME
                        Nom du certificat SSL du serveur de répertoire à installer
    --http-cert-name=NAME
                        Nom du certificat SSL du serveur Apache à installer
    --pkinit-cert-name=NAME
                        Nom du certificat SSL KDC Kerberos à installer

  Options client:
    --mkhomedir         créer des répertoires personnels pour les utilisateurs lors de leur première connexion
    -N, --no-ntp        ne pas configurer ntp
    --ssh-trust-dns     configure le client OpenSSH pour faire confiance aux enregistrements DNS SSHFP
    --no-ssh            ne pas configurer le client OpenSSH
    --no-sshd           ne pas configurer le serveur OpenSSH
    --no-dns-sshfp      ne pas créer automatiquement des enregistrements DNS SSHFP

  Options système de certificat:
    --external-ca       Générer une CSR pour le certificat CA IPA à faire signer
                        par un CA externe
    --external-ca-type={generic,ms-cs}
                        Type de CA externe
    --external-ca-profile=EXTERNAL_CA_PROFILE
                        Spécifiez le profil de certificat/modèle à utiliser au
                        CA externe
    --external-cert-file=FILE
                        Fichier contenant le certificat CA IPA et la chaîne de certificats
                        de la CA externe
    --subject-base=SUBJECT_BASE
                        La base de sujet du certificat (par défaut O=<nom-du-royaume>).
                        Les RDN sont dans l'ordre LDAP (le RDN le plus spécifique en premier).
    --ca-subject=CA_SUBJECT
                        Le DN du sujet de certificat CA (par défaut CN=Certificate
                        Authority,O=<nom-du-royaume>). Les RDN sont dans l'ordre LDAP
                        (le RDN le plus spécifique en premier).
    --ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
                        Algorithme de signature du certificat CA IPA

  Options DNS:
    --allow-zone-overlap
                        Crée une zone DNS même si elle existe déjà
    --reverse-zone=REVERSE_ZONE
                        La zone DNS inversée à utiliser. Cette option peut être utilisée
                        plusieurs fois
    --no-reverse        Ne pas créer de nouvelle zone DNS inversée
    --auto-reverse      Créez les zones inversées nécessaires
    --zonemgr=ZONEMGR   Adresse e-mail du gestionnaire de zone DNS. Par défaut
                        hostmaster@DOMAIN
    --forwarder=FORWARDERS
                        Ajoute un renvoyeur DNS. Cette option peut être utilisée plusieurs
                        fois
    --no-forwarders     Ne pas ajouter de renvoyeurs DNS, utilisez plutôt les serveurs root
    --auto-forwarders   Utilisez les renvoyeurs DNS configurés dans /etc/resolv.conf
    --forward-policy={first,only}
                        Politique de transfert DNS pour les renvoyeurs globaux
    --no-dnssec-validation
                        Désactiver la validation DNSSEC

  Options de confiance AD:
    --enable-compat     Activer le support des domaines de confiance pour les anciens clients
    --netbios-name=NETBIOS_NAME
                        Nom NetBIOS du domaine IPA
    --rid-base=RID_BASE
                        Valeur de départ pour le mappage des UID et GID vers les RID
    --secondary-rid-base=SECONDARY_RID_BASE
                        Valeur de départ de la plage secondaire pour le mappage des UID
                        et GID vers les RID

  Options de désinstallation:
    --ignore-topology-disconnect
                        ne pas vérifier si la désinstallation du serveur déconnecte la
                        topologie (niveau de domaine 1+)
    --ignore-last-of-role
                        ne pas vérifier si la désinstallation du serveur supprime le dernier
                        serveur CA/DNS ou le maître DNSSec (niveau de domaine 1+)

  Options de journalisation et de sortie:
    -v, --verbose       imprimer des informations de débogage
    -d, --debug         alias pour --verbose (obsolète)
    -q, --quiet         afficher uniquement les erreurs
    --log-file=FILE     journaliser dans le fichier donné

Tests

Build Status

Les tests sont réalisés avec Vagrant (installer Vagrant) qui met en place les machines virtuelles suivantes :

  • EL
    • 7
  • Fedora
    • 26
    • 27
  • Ubuntu
    • 16.04 LTS (Xenial Xerus)
    • 17.10 (Artful Aardvark)
    • 18.04 LTS (Bionic Beaver)

La dernière version stable d'Ansible est installée sur toutes les machines virtuelles et applique un test playbook en local.

Pour plus de détails et des vérifications supplémentaires, consultez l'entrée Vagrant.

# Tests dans toutes les machines vagrant disponibles :
# Cela peut prendre du temps. Prenez un café. Ou deux. Ou quarante deux.
cd tests
vagrant up --parallel && vagrant halt
for h in $(vagrant global-status --prune | grep freeipa_server | awk '{print $2}') ; do echo ${h} ; vagrant up --provision ${h} ; vagrant ssh ${h} -c "sudo /vagrant/vagrant-entrypoint.sh" && (echo "$(date): ${h}: pass" >> tests/results.log) || (echo "$(date): ${h}: fail" >> tests/results.log) ; vagrant halt ${h} ; done
vagrant destroy -f

Si Vagrant échoue à monter les répertoires, vous devez vous assurer que vous avez installé les Ajouts des Invités de VirtualBox.

Les tests Travis sont effectués avec Docker et docker_test_runner. Les tests sur Travis effectuent des vérifications de syntaxe et de linting.

Pour plus de détails et des vérifications supplémentaires, consultez la configuration docker_test_runner et l'entrée Docker.

# Tests en local :
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml

Sécurité

Ce playbook ne s'occupe pas de sécuriser le serveur FreeIPA, ce qui peut être fait par exemple avec firewalld ou iptables.

Selon votre configuration, vous devez ouvrir les ports suivants :

Ports TCP :

  • 80, 443 : HTTP/HTTPS
  • 389, 636 : LDAP/LDAPS
  • 88, 464 : kerberos
  • 53 : bind

Ports UDP :

  • 88, 464 : kerberos
  • 53 : bind

Sauvegarde

Assurez-vous de sauvegarder les certificats CA stockés dans /root/cacert.p12. Ces fichiers sont nécessaires pour créer des réplicas. Le mot de passe pour ces fichiers est le mot de passe du gestionnaire de répertoire (freeipa_server_ds_password).

Sur FreeIPA, vous pouvez également trouver une page générale sur la Sauvegarde et Restauration qui couvre les sujets les plus importants.

Il existe un rôle Ansible qui effectue quelques sauvegardes de base : Sauvegarde du serveur FreeIPA (Repo Github).

Dépendances

Aucune

Licence

Licence BSD 3-Clause "New" ou "Revised"

Informations sur l'auteur

  • Timo Runge
À propos du projet

FreeIPA Identity Management Server provisioning.

Installer
ansible-galaxy install timorunge.freeipa_server
Licence
bsd-3-clause
Téléchargements
12.5k
Propriétaire