timorunge.freeipa_server

freeipa_server

Este rol instala y configura el Servidor FreeIPA según tus necesidades.

Este playbook se encarga de la inicialización del usuario administrador de Kerberos (nombre de usuario: admin, la contraseña es la que estableces en freeipa_server_admin_password).

En combinación con freeipa (Github), es posible (y está probado) usar freeipa_server con la última versión de FreeIPA en Ubuntu >= 18.04 (echa un vistazo a la sección de ejemplos).

No es compatible con Ubuntu 20.04

Ubuntu 20.04 no tiene el paquete freeipa-server.

Requisitos

Este rol requiere Ansible 2.5.0 o superior.

Puedes usar pip para instalar (y definir) una versión estable:

pip install ansible==2.7.7

Todos los requisitos de la plataforma están listados en el archivo de metadatos.

Instalación

ansible-galaxy install timorunge.freeipa_server

Variables del rol

Es necesario establecer las siguientes variables para que este rol funcione (sin personalización). Estas variables no tienen ningún valor predeterminado:

# Contraseña del usuario administrador de kerberos - al menos 8 caracteres
# Tipo: Str
freeipa_server_admin_password: Passw0rd
# Dominio DNS principal de la implementación IPA
# Tipo: Str
freeipa_server_domain: example.com
# Contraseña del Directorio Manager - al menos 8 caracteres
# Tipo: Str
freeipa_server_ds_password: Passw0rd
# El nombre del host de esta máquina (FQDN)
# Tipo: Str
freeipa_server_fqdn: ipa.example.com
# Dirección IP del Servidor Maestro
# Tipo: Str
freeipa_server_ip: 172.20.0.2
# Nombre del reino kerberos de la implementación IPA
# Tipo: Str
freeipa_server_realm: EXAMPLE.COM

Las variables que se pueden pasar a este rol y una breve descripción sobre ellas son las siguientes. (Para todas las variables, consulta defaults/main.yml)

# Habilitar/Deshabilitar el manejo del repositorio epel de RedHat
# Tipo: Bool
freeipa_server_enable_epel_repo: true

# Establecer automáticamente una entrada en /etc/hosts
# Tipo: Bool
freeipa_server_manage_host: true

# Opción de tipo de instalación del servidor FreeIPA (maestro/replika)
# Tipo: Str
freeipa_server_type: master

# FQDN del servidor maestro FreeIPA
# Tipo: Str
freeipa_server_master_fqdn: ''

# Comando base para la instalación de FreeIPA
# Tipo: 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' }}

# Las opciones de instalación predeterminadas de FreeIPA
# Tipo: 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"

Ejemplos

Para mantener el documento claro, se han eliminado las opciones de instalación. Puedes encontrar las opciones de instalación en este documento o en las páginas man en línea para ipa-server-install.

1) Instalar el servidor FreeIPA como maestro con configuraciones predeterminadas

- 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) Instalar el servidor FreeIPA como réplica con configuraciones predeterminadas

- 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) Instalar el servidor FreeIPA y habilitarlo automáticamente en todas las interfaces de red (IPv4)

Aún deberías establecer freeipa_server_ip si deseas usar 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) Instalar el servidor FreeIPA con opciones de instalación personalizadas

- 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

Opciones de instalación del servidor FreeIPA

Una visión general de las opciones de instalación para ipa-server-install (4.6.4).

Uso: ipa-server-install [opciones]

Opciones:
  --version             muestra el número de versión del programa y sale
  -h, --help            muestra este mensaje de ayuda y sale
  -U, --unattended      la desinstalación desatendida nunca solicita al usuario
  --uninstall           desinstala una instalación existente. La desinstalación se puede
                        ejecutar con la opción --unattended

  Opciones básicas:
    -p DM_PASSWORD, --ds-password=DM_PASSWORD
                        Contraseña del Directorio Manager
    -a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
                        contraseña del usuario administrador de kerberos
    --ip-address=IP_ADDRESS
                        Dirección IP del Servidor Maestro. Esta opción se puede usar
                        varias veces
    -n DOMAIN_NAME, --domain=DOMAIN_NAME
                        dominio DNS principal de la implementación IPA (no
                        necesariamente relacionado con el nombre actual del host)
    -r REALM_NAME, --realm=REALM_NAME
                        nombre del reino kerberos de la implementación IPA (típicamente
                        un nombre en mayúsculas del dominio DNS principal)
    --hostname=HOST_NAME
                        nombre totalmente calificado de este host
    --ca-cert-file=FILE
                        Archivo que contiene certificados CA para los archivos
                        del certificado de servicio
    --no-host-dns       No usar DNS para la búsqueda de nombres de host durante la instalación

  Opciones del servidor:
    --setup-adtrust     configurar la capacidad de confianza AD
    --setup-kra         configurar un dogtag KRA
    --setup-dns         configurar bind con nuestra zona
    --idstart=IDSTART   El valor inicial para el rango de IDs (predeterminado aleatorio)
    --idmax=IDMAX       El valor máximo para el rango de IDs (predeterminado:
                        idstart+199999)
    --no-hbac-allow     No instalar la regla HBAC allow_all
    --no-pkinit         desactiva los pasos de configuración de pkinit
    --no-ui-redirect    No redirigir automáticamente a la interfaz web
    --dirsrv-config-file=FILE
                        La ruta al archivo LDIF que se utilizará para modificar
                        la configuración de dse.ldif durante la instalación de la
                        instancia del servidor de directorio

  Opciones de certificado SSL:
    --dirsrv-cert-file=FILE
                        Archivo que contiene el certificado SSL del Servidor de Directorio
                        y la clave privada
    --http-cert-file=FILE
                        Archivo que contiene el certificado SSL del Servidor Apache y
                        la clave privada
    --pkinit-cert-file=FILE
                        Archivo que contiene el certificado SSL del KDC Kerberos y
                        la clave privada
    --dirsrv-pin=PIN    La contraseña para desbloquear la clave privada del Servidor de Directorio
    --http-pin=PIN      La contraseña para desbloquear la clave privada del Servidor Apache
    --pkinit-pin=PIN    La contraseña para desbloquear la clave privada del KDC Kerberos
    --dirsrv-cert-name=NAME
                        Nombre del certificado SSL del Servidor de Directorio que
                        instalar
    --http-cert-name=NAME
                        Nombre del certificado SSL del Servidor Apache que instalar
    --pkinit-cert-name=NAME
                        Nombre del certificado SSL del KDC Kerberos que instalar

  Opciones del cliente:
    --mkhomedir         crear directorios de inicio para usuarios en su primer inicio de sesión
    -N, --no-ntp        no configurar ntp
    --ssh-trust-dns     configurar el cliente OpenSSH para confiar en los registros DNS SSHFP
    --no-ssh            no configurar el cliente OpenSSH
    --no-sshd           no configurar el servidor OpenSSH
    --no-dns-sshfp      no crear automáticamente registros DNS SSHFP

  Opciones del sistema de certificados:
    --external-ca       Generar un CSR para el certificado CA IPA que será firmado
                        por una CA externa
    --external-ca-type={generic,ms-cs}
                        Tipo de la CA externa
    --external-ca-profile=EXTERNAL_CA_PROFILE
                        Especificar el perfil/template del certificado que usar en la
                        CA externa
    --external-cert-file=FILE
                        Archivo que contiene el certificado CA IPA y la cadena de
                        certificados de la CA externa
    --subject-base=SUBJECT_BASE
                        La base de sujeto del certificado (predeterminado O=<realm-name>).
                        Los RDN son en orden LDAP (el RDN más específico primero).
    --ca-subject=CA_SUBJECT
                        El DN de sujeto del certificado CA (predeterminado CN=Autoridad
                        de Certificación, O=<realm-name>).  Los RDN son en orden LDAP
                        (el RDN más específico primero).
    --ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
                        Algoritmo de firma del certificado CA IPA

  Opciones DNS:
    --allow-zone-overlap
                        Crear zona DNS incluso si ya existe
    --reverse-zone=REVERSE_ZONE
                        La zona DNS inversa a usar. Esta opción se puede usar
                        varias veces
    --no-reverse        No crear nueva zona DNS inversa
    --auto-reverse      Crear las zonas inversas necesarias
    --zonemgr=ZONEMGR   Dirección de correo electrónico del administrador de zona DNS. 
                        Por defecto, es hostmaster@DOMINIO
    --forwarder=FORWARDERS
                        Agregar un reenvío DNS. Esta opción se puede usar varias veces
    --no-forwarders     No agregar ningún reenvío DNS, usar servidores raíz
                        en su lugar
    --auto-forwarders   Usar reenvíos DNS configurados en /etc/resolv.conf
    --forward-policy={first,only}
                        Política de reenvío DNS para reenvíos globales
    --no-dnssec-validation
                        Desactivar la validación DNSSEC

  Opciones de confianza AD:
    --enable-compat     Habilitar soporte para dominios de confianza para clientes antiguos
    --netbios-name=NETBIOS_NAME
                        Nombre NetBIOS del dominio IPA
    --rid-base=RID_BASE
                        Valor inicial para mapear UIDs y GIDs a RIDs
    --secondary-rid-base=SECONDARY_RID_BASE
                        Valor inicial del rango secundario para mapear UIDs
                        y GIDs a RIDs

  Opciones de desinstalación:
    --ignore-topology-disconnect
                        no comprobar si la desinstalación del servidor desconecta la
                        topología (nivel de dominio 1+)
    --ignore-last-of-role
                        no comprobar si la desinstalación del servidor elimina el último
                        servidor CA/DNS o maestro DNSSec (nivel de dominio 1+)

  Opciones de registro y salida:
    -v, --verbose       imprimir información de depuración
    -d, --debug         alias para --verbose (obsoleto)
    -q, --quiet         salida solo errores
    --log-file=FILE     registrar en el archivo dado

Pruebas

Estado de la Construcción

Las pruebas se realizan con Vagrant (instalando Vagrant) que levanta las siguientes máquinas virtuales:

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

La última versión estable de Ansible se instala en todas las máquinas virtuales y se aplica un playbook de prueba localmente.

Para más detalles y cheques adicionales, consulta el punto de entrada de Vagrant.

# Pruebas en todas las máquinas vagrant disponibles:
# Esto tomará un tiempo. Tómate un café. O dos. O cuarenta y dos.
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 no puede montar los directorios, debes asegurarte de que has instalado las Adiciones de Invitado de VirtualBox.

Las pruebas de Travis se realizan con Docker y docker_test_runner. Las pruebas en Travis realizan verificaciones de estilo y sintaxis.

Para más detalles y cheques adicionales, consulta la configuración de docker_test_runner y el punto de entrada de Docker.

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

Seguridad

Este playbook no se encarga de asegurar el Servidor FreeIPA, lo cual se puede hacer con por ejemplo firewalld o iptables.

Dependiendo de tu configuración, debes abrir los siguientes puertos:

Puertos TCP:

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

Puertos UDP:

  • 88, 464: kerberos
  • 53: bind

Respaldo

Asegúrate de respaldar los certificados CA almacenados en /root/cacert.p12. Estos archivos son necesarios para crear réplicas. La contraseña para estos archivos es la contraseña del Directorio Manager (freeipa_server_ds_password).

En FreeIPA también puedes encontrar una página general sobre Respaldo y Restauración que cubre los temas más importantes.

Hay un rol de Ansible que realiza copias de seguridad básicas: Copia de Seguridad del Servidor FreeIPA (Repositorio de Github).

Dependencias

Ninguna

Licencia

Licencia BSD de 3 cláusulas "Nueva" o "Revisada"

Información del Autor

  • Timo Runge
Acerca del proyecto

FreeIPA Identity Management Server provisioning.

Instalar
ansible-galaxy install timorunge.freeipa_server
Licencia
bsd-3-clause
Descargas
12.5k
Propietario